با عرض سلام و وقت به خیر خدمت کاربران سایت پی وی لرن به ویژه کاربرانی که به سیستم مدیریت محتوای قدرتمند وردپرس علاقمند هستند.
به ” دوره متخصص وردپرس ” خوش آمدید!
در این دوره قرار است توسعه و ارتقاء پلاگین های وردپرس را به صورت جامع و کامل بیاموزیم.
فرقی نمی کند که در شرف نوشتن اولین پلاگین خود هستید و یا این که پنجاهمین پلاگین خود را می نویسید! امیدوارم این دوره برایتان مفید باشد.
در جلسه گذشته با نحوه استفاده از هوک های سفارشی را فراگرفتیم.
در این جلسه ر فصل هوک ها را با آشنایی با مباحث پیشرفته هوک های پلاگین به پایان می بریم.
گاهی اوقات لازم است یک تابع فراخوانی را از هوک حذف کنید که افزونه، تم یا حتی وردپرس هسته در آن ثبت شده است.
برای حذف یک تابع فراخوانی از هوک، باید از تابع ()call remove_action یا ()remove_filter بسته به اینکه آیا تابع فراخوانی به عنوان یک اکشن یا یک فیلتر اضافه شده است؛ استفاده نمایید.
پارامترهای منتقل شده به ()remove_action / ()remove_filter باید با پارامترهای ارسال شده به add_action () / ()add_filter که آن را ثبت کرده اند، یکسان باشند.
برای حذف موفق یک تابع فراخوانی، بعد از اینکه تابع فراخوانی ثبت شد، باید حذف را انجام دهید.
در این مثال می خواهیم با حذف قابلیت های غیر ضروری، عملکرد یک پوسته نسبتاً بزرگ را بهبود بخشیم.
بیایید کد تم را با نگاه به functions.php تجزیه و تحلیل کنیم.
1 2 3 4 5 6 | <?php function my_theme_setup_slider() { // ... } add_action('template_redirect', 'my_theme_setup_slider', 9); |
کار تابع my_theme_setup_slider اضافه کردن یک نوار لغزنده است که فغلاً به آن نیازی نداریم.
این تابع احتمالا یک فایل CSS بزرگ را دنبال می کند که به دنباله آن یک فایل ابتدایی جاوا اسکریپت است که از یک کتابخانه سفارشی نوشته شده با اندازه ۱MB استفاده می کند. می توانیم از شر آن خلاص شویم.
از آن جا که می خواهیم وردپرس را بعد از ثبت تابع فراخوانی هوک نماییم، اجرای functions.php بهترین شانس ما بعد از هوک after_setup_theme است.
1 2 3 4 5 6 7 8 | <?php function wporg_disable_slider() { // make sure all parameters match the add_action() call exactly remove_action('template_redirect', 'my_theme_setup_slider', 9); } // make sure we call remove_action() after add_action() has been called add_action('after_setup_theme', 'wporg_disable_slider'); |
می توانید با استفاده از ()remove_all_actions() / remove_all_filters ، تمام توابع فراخوانی مرتبط با هوک را حذف کنید.
برای تعیین هوک فعلی می توانید از ()current_action() / current_filter استفاده نمایید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?php function wporg_modify_content($content) { switch (current_filter()) { case 'the_content': // do something break; case 'the_excerpt': // do something break; } return $content; } add_filter('the_content', 'wporg_modify_content'); add_filter('the_excerpt', 'wporg_modify_content'); |
بعضی از هوک ها در طی اجرا چندین بار فراخوانی می شوند.
در حالی که ممکن است شما بخواهید فقط تابع فراخوانی را یک بار اجرا نمایید.
در چنین شرایطی می توانید از تابع ()did_action برای تعیین تعداد دفعاتی که هوک مورد نظرتان اجرا شده است؛ استفاده نمایید.
گاهی می توان از یک تابع فراخوانی برای تک تک هوک های خود استفاده نمایید.
این ویژگی می یتواند برای یافتن خرابی ها و مشکلات هوک ها و یا زمان ذخیره سازی صفحه، مفید باشد.
1 2 3 4 5 6 | <?php function wporg_debug() { echo '<p>' . current_action() . '</p>'; } add_action('all', 'wporg_debug'); |
سر فصل هوک ها را با مبحث آشنایی با مباحث پیشرفته هوک های پلاگین به پایان رساندیم.
در جلسه بعد به رعایت حریم خصوصی privacy در ساخت پلاگین می پردازیم.
با پی وی لرن همراه باشید.