آموزش هک + ۱۰ هک کاربردی

دسته بندی ها : آموزشگاه 31 آگوست 2013 خانه وردپرس 1293 بازدید

۱۰ قلاب هک کاربردی در وردپرس

قلاب ها در وردپرس بسیار مفید می باشند. آنها به شما اجازه می دهند

که یک تابع سفارشی را به یک تابع موجود “قلاب” کنید، این امر به شما اجازه می دهد که عملکرد وردپرس را بدون ویرایش فایل های اصلی تغییر دهید. در این مقاله، ما ۱۰ قلاب بسیار مفید و آماده به استفاده از وردپرس را همراه با نمونه ها و توضیحات برنامه نویسی گردآوری کرده ایم.

هک چیست؟

برای دستیابی به یک اثر خاص در یک وبلاگ وردپرس، شما باید بدانید که اصلاحات در وردپرس چگونه انجام می شوند؟ برخی از این اصلاحات برای چیزهایی که توسعه دهندگان وردپرس آنها را “فایل های هسته ای” می نامند ساخته شده اند، این ها همان فایل هایی هستند که وردپرس برای درست کار کردن به آنها احتیاج دارد.
اما اصلاح فایل های اصلی همیشه ایده بدی است. این امر ممکن است یک راه گریز امنیتی ایجاد کند. همچنین، شما این اصلاحات را هر زمان که وردپرس خود را آپگرید کنید، از دست خواهید داد.
توسعه دهندگان همچنان نیاز به بازنویسی برخی از قابلیت های وردپرس دارند، به همین دلیل است که وردپرس Plugin API فراهم می کند.
قلاب ها یکی از بلوک های اصلی ساختمان پلاگین های وردپرس هستند. تقریبا همه ی پلاگین ها از یک قلاب برای بازنویسی قابلیت های هسته وردپرس استفاده میکنند.

چگونه از قلاب ها در وبلاگ وردپرس تان استفاده کنید

شما می توانید قلاب ها را در فایل functions.php بنویسید، مگر در مواردی که شما در حال نوشتن یک پلاگین می باشید. این فایل در فهرست راهنمای wp-content/themes/yourtheme واقع شده است.
همانطور که شما انتظار دارید، یک قلاب، یک تابع به دیگری قلاب میکند. برای مثال، شما می توانید یک تابع سفارشی نوشته و آن را به یکی ازعملکردهای هسته ی وردپرس ضمیمه کنید:

1
add_action ( 'publish_post', 'myCustomFunction' );

در این مثال، ما تابع سفارشی خودمان را به تابع عملکرد پست های منتشر شده ی وردپرس قلاب میکنیم، این بدان معنی است که هر زمان که وردپرس تابع عملکرد پست های منتشر شده را اجرا کند، این تابع نیز اجرا خواهد شد. البته، ما می توانیم قلاب را با استفاده از تابع remove_action() حذف کنیم:

1
remove_action ( 'publish_post', 'myCustomFunction' );

منابع قلاب ها:

1. غیر فعال کردن Automatic Formatting وردپرس

sm11 آموزش هک های وردپرس + 10 هک کاربردی

مشکل: شما احتمالا متوجه شده اید که به طور پیش فرض، وردپرس نقل های عادی را به “curly” تبدیل می کند، و دیگر تغییرات قالب بندی(formatting) کوچک را هنگامی که یک پست نمایش داده می شود، ایجاد می کند. این امر برای کسانی که محتوای عادی منتشر می کنند، خوشایند است، اما هر کسی که از وبلاگ خود برای بحث در مورد کد استفاده میکند اذیت خواهد شد زیرا زمانی که از یک ویرایشگر متن استفاده میکند، کدهایی با curly quotes خطاهای syntax میدهد.
راه حل: به سادگی کد زیر را در فایل functions.php خود پیست کنید:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function my_formatter($content) {<br />
    $new_content = '';<br />
    $pattern_full = '{(\[raw\].*?\[/raw\])}is';<br />
    $pattern_contents = '{\[raw\](.*?)\[/raw\]}is';<br />
    $pieces = preg_split($pattern_full, $content, -1, PREG_SPLIT_DELIM_CAPTURE);</p>
<p>   foreach ($pieces as $piece) {<br />
        if (preg_match($pattern_contents, $piece, $matches)) {<br />
            $new_content .= $matches[1];<br />
        } else {<br />
            $new_content .= wptexturize(wpautop($piece));<br />
        }<br />
    }</p>
<p>   return $new_content;<br />
}</p>
<p>remove_filter('the_content', 'wpautop');<br />
remove_filter('the_content', 'wptexturize');</p>
<p>add_filter('the_content', 'my_formatter', 99);

به محض این که این کار انجام شود، شما می توانید از کد کوتاه[RAW] در پست های خود استفاده کنید:

1
[raw]This text will not be automatically formatted.[/raw]

توضیح کد: اولین قدم ما در اینجا این بود که تابعی ایجاد کنیم که از یک بیان منظم برای پیدا کردن کد کوتاه [raw] در محتوای پستهایتانف استفاده میکند.
سپس ما تابع my_formatter() را به تابع the_content() وردپرس قلاب میکنیم که به این معنی است که هرگاه تابع the_content() را فرا میخوانیم تابع my_formatter() نیز به طور خود به خود فرا خوانده میشود.
برای حذف کردن فرمت کردن خود به خودی از تابع remove_filter() استفاده میکنیم، که به شما اجازه ی حذف کردن یک قلاب را روی یک تابع خاص میدهد.
منبع:

2. تشخیص مرورگر بازدید کنندگان با استفاده از یک قلاب

sm2 آموزش هک های وردپرس + 10 هک کاربردی

مشکل: سازگاری متقابل مرورگرها احتمالا شایع ترین مشکل در توسعه وبلاگ ها است. اگر شما قادر به تشخیص مرورگرهایی باشید که مردم برای ویزیت از وب سایت شما استفاده میکند، می توانید خود را از بسیاری از دردسرها نجات دهید و پس یک کلاس سفارشی پیچیده شده در body tag ایجاد کنید.
در حال حاضر مرورگرهای شناسایی و چند متغیر جهانی برای استفاده ی ما در دسترس هستند.
راه حل: هیچ چیز سختی در اینجا وجود ندارد: فقط کد زیر را در فایل functions.php خود پیست کنید، سپس فایل را ذخیره کرده و کار تمام است!

1
<?php add_filter('body_class','browser_body_class'); function browser_body_class($classes) {     global $is_lynx, $is_gecko, $is_IE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone;     if($is_lynx) $classes[] = 'lynx';   elseif($is_gecko) $classes[] = 'gecko';     elseif($is_opera) $classes[] = 'opera';     elseif($is_NS4) $classes[] = 'ns4';     elseif($is_safari) $classes[] = 'safari';   elseif($is_chrome) $classes[] = 'chrome';   elseif($is_IE) $classes[] = 'ie';   else $classes[] = 'unknown';    if($is_iphone) $classes[] = 'iphone';   return $classes; } ?>

همانطور که در مثال زیر نشان داده شده است، هنگامی که شما فایل را ذخیره میکنید، تابع به صورت خودکار یک کلاسCSS بهbody tag اضافه میکند:

1
<body class="home blog logged-in safari">

توضیح کد: وردپرس دارای متغیر های جهانی است که اگر ویزیت کننده از جستجوگر خاصی استفاده میکند true را نشان میدهد، اگر مرورگر بازدید کننده گوگل کروم است، متغییر $is_chrome ، true را نشان خواهد داد. به همین دلیل است که ما تابع browser_body_class() را ایجاد می کنیم، که نام مرورگر بازدید کننده را نشان میدهد. به محض این که این کار انجام شد، ما فقط تابع را به تابع body_class() وردپرس قلاب میکنیم.
منابع:

3. تعریف متن پیش فرض در ویرایشگر TinyMCE

sm31 آموزش هک های وردپرس + 10 هک کاربردی

مشکل: بسیاری از وبلاگ نویسان تقریبا همیشه صفحه بندی مشابهی را برای پست های وبلاگ خود استفاده کنید. پست ها در وبلاگ خود منWpRecipes.com همیشه به همان شیوه نمایش داده می شود، کمی متن، کمی کد و سپس دوباره کمی متن بیشتر. چطور است با مجبور کردنTinyMCE (ویرایشگر دیداری وردپرس) به نمایش متون پیش فرض در وقت صرفه جویی کنیم؟
راه حل: یک بار دیگر، قلاب ها راه حل هستند. فقط فایل functions.php را باز کنید، کدها را پیست کنید و اجازه دهید که قلاب کار سحرآمیز خود را انجام دهد!

1
<?php add_filter('default_content', 'my_editor_content'); function my_editor_content( $content ) {   $content = "If you enjoyed this post, make sure to subscribe to my rss feed."return $content; } ?>

توضیح کد: این کد قدرتمند اما در عین حال روش بسیار ساده ایی است. فقط تابعی ایجاد کنید که متون مورد نظرتان را تشات میدهد (در این مثال، ما برخی متون ساده را تعریف کرده ایم که از reader ها می خواهد که در feed وبلاگ RSS مشارکت کنند) و تابع را به تابعdefault_content() وردپرس قلاب کنند. همین.
منابع:

4. قرار دادن محتوا به صورت خودکار بعد از هر پست

sm4 آموزش هک های وردپرس + 10 هک کاربردی

مشکل: اکثر وبلاگ ها با استفاده از قالب فایل single.php برای وارد کردن برخی متون، عکس ها و یا تبلیغات بعد از پست هایشان، استفاده می کنند. مطمئنا، این امر می تواند با باز کردن single.php و پیست کردن متن مورد نظر بعد از تابع the_content() انجام شود. اما چرا متن در فید RSS ظاهر نخواهد شد؟ قلاب ها و روش شرح داده شده در زیر راه حل این مشکل است.
راه حل: یکبار دیگر، به سادگی کد زیر را در فایل functions.php تم خود را وارد کنید . همین.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function insertFootNote($content) {<br />
        if(!is_feed() && !is_home()) {<br />
                $content.= "<br />
<div class='subscribe'>";<br />
                $content.= "<br />
<h4>Enjoyed this article?</h4>
<p>";<br />
                $content.= "
<p>Subscribe to our  <a href='http://feeds2.feedburner.com/WpRecipes'>RSS feed</a> and never miss a recipe!</p>
<p>";<br />
                $content.= "</div>
<p>";<br />
        }<br />
        return $content;<br />
}<br />
add_filter ('the_content', 'insertFootNote');

توضیح کد: هدف از تابع insertFootNote() بسیار ساده است: این به سادگی متن انتخابی شما را به متغییر $content الحاق می کند که حاوی محتوای پست شما است. سپس، تابع insertFootNote() به تابع the_content() قلاب می شود و به طور خودکار هر زمان که the_content فراخوانده شود، فراخوانده می شود. استفاده از این تابع اساسا شبیه تایپ کردن در متن در پایان هر پست است.
به شرط (!is_feed) در خط ۲ که از وارد شدن متن در RSSجلوگیری می کند، توجه داشته باشید. اگر شما می خواهید متن فید RSS تان ظاهر شود، خط ۲ با کد زیر جایگزین کنید:

1
if (!is_home()) {

منابع:

5. غیر فعال کردن پیام “Please Update Now” در داشبورد وردپرس

sm51 آموزش هک های وردپرس + 10 هک کاربردی

مشکل: داشبورد شما با قرار دادن یک پیام در بالای صفحه ادمین به طور خودکار اجازه می دهد که بدانید چه زمانی نسخه ی جدید وردپرس منتشر شده می شود. این امر قطعا خوب است، به دلیل اینکه به روز رسانی به وبلاگ شما آخرین توابع و رفع مشکلات امنیتی را ارائه می دهد. اما اگر این وبلاگ یک پروژه برای یک مشتری است، اجازه دادن کنترل به روز رسانی به مشتری ممکن است ایده ی خوبی نباشد.
راه حل: فقط این چهار خط کد را در فایل functions.php خود پیست کنید.

1
2
3
4
if (!current_user_can('edit_users')) {<br />
  add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );<br />
  add_filter( 'pre_option_update_core', create_function( '$a', "return null;" ) );<br />
}

هنگامی که فایل functions.php را ذخیره کردید، دیگر این پیام بر روی داشبورد نخواهید دید.
توضیح کد: اولین کاری که ما در اینجا انجام می دهیم این است که مطمئن شویم کاربر کنونی دارای حق کافی برای به روز رسانی وردپرس است. هنگامی که ما این کار را انجام دهیم، فقط دو قلاب برای بازنویسی چک کردن خودکار برای به روز رسانی و نمایش پیام آن ایجاد کرده ایم.
منابع:

6. غیر فعال کردن وردپرس از ذخیره ی خودکار پست ها

sm6 آموزش هک های وردپرس + 10 هک کاربردی

مشکل: همینطور که شما پستتان را در داشبورد تایپ می کنید، وردپرس به شکل دوره ای محتوا را ذخیره می کند. این یک ویژگی های بسیار مفید است، اما گاهی اوقات ممکن است بخواهید آن را غیر فعال کنید.
راه حل: برای غیر فعال کردن قابلیت های خودکار ذخیره سازی در وردپرس،به سادگی فایل functions.php باز کنید و تابع زیر را در آن پیست کنید:

1
2
3
4
function disableAutoSave(){<br />
    wp_deregister_script('autosave');<br />
}<br />
add_action( 'wp_print_scripts', 'disableAutoSave' );

توضیح کد: باز هم، هیچ چیز سختی در مورد این کد وجود ندارد، ما به سادگی یک حرکت (در خط ۴) ایجاد می کنیم و تابع disableAutoSave() را که در خط ۱ ایجاد کردیم به wp_print_scripts() وردپرس قلاب می کنیم.
نتیجه این است که تابع disableAutoSave() ما، هر زمان که وردپرس wp_print_scripts() را اجرا کند، اجرا می شود.
منبع:

sm7 آموزش هک های وردپرس + 10 هک کاربردی

مشکل: مطالب تکراری یک مشکل SEO برای بسیاری از وب سایت ها است. این امر می توانر می تواند برای وبلاگ وردپرس شما هم مشکل ساز باشد اگر از چند ترفند استفاده نکنید.
صفحه ی نظرات معرفی شده در نسخه ۲٫۷ عالی ترین ضمیمه به وردپرس است. به این دلیل که اجازه می دهد تا وبلاگ نویسان نظرات را در صفحات متعدد تقسیم کنند. تنها مشکل، دوباره، خطر محتوای تکراری است.
بیایید از ویژگی جدید rel=”canonical” برای جلوگیری از تکرار مطالب در صفحه ی نظرات استفاده کنیم.
راه حل: به سادگی کد زیر را در فایل function.php خود پیست کنید:

1
2
3
4
5
6
7
8
9
function canonical_for_comments() {<br />
    global $cpage, $post;<br />
    if ( $cpage > 1 ) :<br />
        echo "\n";<br />
        echo "<link rel='canonical' href='";         echo get_permalink( $post->ID );<br />
        echo "' />\n";<br />
     endif;<br />
}</p>
<p>add_action( 'wp_head', 'canonical_for_comments' );

توضیح کد: ابتدا، یک تابع برای اضافه کردن ویژگی rel=”canonical” به صفحه نظرات به جز صفحه ۱، ایجاد می کنیم. سپس با این تابع را به تابع wp_head() وردپرس قلاب میکنیم. به همین سادگی است!

منبع:

8. دریافت کل پست یا صفحه در یک متغیر PHP

sm8 آموزش هک های وردپرس + 10 هک کاربردی

مشکل: قادر بودن به دریافت کل پست و یا صفحه فعلی به عنوان یک متغیر PHP قطعا خوب است. برای مثال، شما می توانید بخش هایی از محتوا و یا حتی خیلی بیشتر از آن را با استفاده از تابع PHP str_replace() جایگزین کنید.
راه حل: یک بار دیگر، هیچ چیز سختی وجود ندارد. فقط کد زیر را درفایل function.php خود پیست کنید:

1
2
3
4
5
6
7
8
9
10
11
12
function callback($buffer) {<br />
    // modify buffer here, and then return the updated code<br />
    return $buffer;<br />
}</p>
<p>function buffer_start() {<br />
    ob_start("callback");<br />
}</p>
<p>function buffer_end() {<br />
    ob_end_flush();<br />
}</p>
<p>add_action('wp_head', 'buffer_start');<br />
add_action('wp_footer', 'buffer_end');<br />

توضیح کد: برای دستیابی به این هک، به سه تابع نیازداریم:
• callback(): این تابع تمام صفحه را به یک متغیر به نام $buffer تبدیل می کند. به عنوان مثال، شما می توانید با استفاده از عبارات منظم آن را قبل از تغییر اصلاح کنید.
• buffer_start():این تابع به سادگی بافر را شروع می کند. این تابع به تابع wp_head() وردپرس قلاب شده است.
• buffer_end():ین تابع بافر پاک می کند. . این تابع به تابع wp_footer() وردپرس قلاب شده است.
هنگامی که ما تابع خود را داشته باشیم، فقط آن را به توابع موجود در وردپرس قلاب می کنیم.
منابع:

9. استفاده از قلاب وcron برای زمانبندی رویدادها

sm9 آموزش هک های وردپرس + 10 هک کاربردی

مشکل: شما احتمالا می دانید که وردپرس می توانید رویدادها را برنامه ریزی کند. برای مثال، می تواند پست ها را در تاریخ و زمان از پیش تعیین شده منتشر کند. ما به راحتی می توانیم با استفاده از قلاب ها و wp-cron رویدادهای خود را زمانبندی کنیم. در این مثال، ما وبلاگ وردپرس خود را تنظیم خواهیم کرد که هر یک ساعت یک بار یک ایمیل به ما ارسال کند.
راه حل: بلوک کد زیر را در فایل functions.php تم خود پیست کنید

1
2
3
4
5
6
7
if (!wp_next_scheduled('my_task_hook')) {<br />
    wp_schedule_event( time(), 'hourly', 'my_task_hook' );<br />
}</p>
<p>add_action( 'my_task_hook', 'my_task_function' );</p>
<p>function my_task_function() {<br />
    wp_mail('you@yoursite.com', 'Automatic email', 'Hello, this is an automatically scheduled email from WordPress.');<br />
}

توضیح کد: البته، اولین چیزی که ما انجام دادیم، ایجاد یک تابع بود که انجام عمل مورد نظر را انجام داد. در این مثال، تابع my_task_function() نامیده می شود و فقط یک ایمیل به آدرس ایمیل مشخص شده می فرستد.
برای زمانبندی یک رویداد، ما مجبور به استفاده از تابع wp_schedule_event() هستیم. آخرین استدلال باید قلاب شود، به همین دلیل است که ما تابع my_task_function() را به my_task_hook قلاب می کنیم.
منبع:

10. فهرست کردن تمام توابع قلاب شده

sm10 آموزش هک های وردپرس + 10 هک کاربردی

مشکل: وقتی که اشتباهی پیش می آید، فهرست کردن تمام توابع رو می تواند برای اشکال زدایی بسیار مفید باشد.
راه حل: مثل دیگر کد ها این کد هم باید در فایل functions.php شما پیست شود. هنگامی که اشکال زدایی شما به پایان رسید، فراموش نکنید که کد را از فایل functions.php و یا هر پیز دیگری حذف کنید، وگرنه پیام اشکال زدایی همینطور ظاهر خواهد شد.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function list_hooked_functions($tag=false){<br />
 global $wp_filter;<br />
 if ($tag) {<br />
  $hook[$tag]=$wp_filter[$tag];<br />
  if (!is_array($hook[$tag])) {<br />
  trigger_error("Nothing found for '$tag' hook", E_USER_WARNING);<br />
  return;<br />
  }<br />
 }<br />
 else {<br />
  $hook=$wp_filter;<br />
  ksort($hook);<br />
 }<br />
 echo '
<pre>';
 foreach($hook as $tag => $priority){
  echo "<br />&gt;&gt;&gt;&gt;&gt;\t<strong>$tag</strong><br />";
  ksort($priority);
  foreach($priority as $priority => $function){
  echo $priority;
  foreach($function as $name => $properties) echo "\t$name<br />";
  }
 }
 echo '</pre>
<p>';<br />
 return;<br />
}

همانطور که در زیر نشان داده شده است، به محض این که این کار انجام شود، برای نمایش تمام توابع قلاب شده ی وردپرس بر روی صفحه نمایش شما، به سادگی تابع list_hooked_functions()را فرا بخوانید.

1
list_hooked_functions();

توضیح کد: اگر نام هیچ قلابی به عنوان یک استدلال به تابع ارائه نشود، بنابراین قلاب ها با استفاده از متغییر جهانی $wp_filter نمایش داده میشوند. متناوبا، شما می توانید یک قلاب خاص را با استفاده از تغییر نام آن به عنوان یک ویژگی فهرست کنید.

1
list_hooked_functions('wp_head');

منبع:همیار وردپرس

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

  • چنانچه دیدگاهی توهین آمیز باشد و متوجه اشخاص مدیر، نویسندگان و سایر کاربران باشد تایید نخواهد شد.
  • چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
  • چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
  • چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
  • چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

نظرات کاربران

    دیدگاهتان را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    Time limit is exhausted. Please reload CAPTCHA.

    این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

    لینک کوتاه :
    0