با عرض سلام و وقت به خیر خدمت کاربران سایت پی وی لرن به ویژه کاربرانی که به سیستم مدیریت محتوای قدرتمند وردپرس علاقمند هستند.
به ” دوره متخصص وردپرس ” خوش آمدید!
در این دوره قرار است توسعه و ارتقاء پلاگین های وردپرس را به صورت جامع و کامل بیاموزیم.
فرقی نمی کند که در شرف نوشتن اولین پلاگین خود هستید و یا این که پنجاهمین پلاگین خود را می نویسید! امیدوارم این دوره برایتان مفید باشد.
در جلسه پیش کلیاتی به کلیاتی راجع به هوک ها اشاره شد و این جلسه رسماً مبحث هوک ها را با ” استفاده از هوک اکشن در ساخت پلاگین ” آغاز می کنیم.
همان طور که می دانید هوک اکشن یکی از دو نوع هوک اصلی است.
هوک های اکشن راهی برای اجرای یک تابع، در یک نقطه خاص، مثل هسته وردپرس، پلاگین ها و تم ها فراهم می کنند.
عمل هوک های اکشن نوعی هم پوشانی با هوک فیلتر است.
فرایند اضافه کردن یک هوک اکشن شامل دو مرحله است.
باید یک تابع فراخوانی ایجاد کنید که هنگام اکشن اجرا می شود.
حالا باید تابع فراخوانی خود را با هوک خود که فراخوانی تابع را انجام دهد اضافه نمایید.
شما از تابع ()add_action ، با عبور حداقل دو پارامتر، string $ tag، callable $ function_to_add استفاده می کنید.
وقتی که هوک init شروع به کار می کند مثال زیر اجرا می شود :
1 2 3 4 5 6 | <?php function wporg_custom() { // do something } add_action('init', 'wporg_custom'); |
همانطور که تجربه بیشتری به دست آورید، جستجوی کد منبع وردپرس Core به شما امکان می دهد که مناسب ترین هوک را پیدا کنید.
()add_action می تواند دو پارامتر اضافی بپذیرد این دو عبارتند از :
int $accepted_args
برای تعدادی از آرگومان های که تابع فراخوانی را عبور می دهند.اولویت تعیین زمانی که تابع فراخوانی در رابطه با سایر توابع پاسخگویی مرتبط با یک هوک داده شده، اجرا میشود.
یک تابع با یک اولویت ۱۱ بعد از یک تابع با یک اولویت ۱۰ اجرا می شود.
یک تابع با یک اولویت ۹ قبل از یک تابع با اولویت ۱۰ اجرا می شود.
هر عدد صحیح مثبت یک مقدار قابل قبول است و مقدار پیش فرض آن ۱۰ است.
اگر دو توابع فراخوانی برای همان هوک با همان اولویت ثبت شده باشد، پس از اجرا به ترتیب آنها در هوک init
ثبت می شود.
1 2 3 4 | <?php add_action('init', 'run_me_early', 9); add_action('init', 'run_me_normal'); // default value of 10 is used since a priority wasn't specified add_action('init', 'run_me_late', 11); |
به عنوان مثال، توابع فراخوانی زیر به ثبت رسیده است اما اولویت آن ها متفاوت است.
اولین تابع ()run_me_early و دومین تابع ()followed by run_me_normal ()، و در نهایت آخرین تابع برای اجرا نیز تابع ()run_me_late است.
گاهی حالت صحیح برای یک تابع فراخوانی آن است که مقداری داده اضافه از تابعی که به آن هوک است؛ دریافت کند.
به عنوان مثال، هنگامی که وردپرس یک پست را ذخیره می کند و hook save_post را اجرا می کند، دو پارامتر به تابع فراخوانی منتقل می شود:
1 | do_action('save_post', $post->ID, $post); |
بنابراین، هنگامی که یک تابع فراخوانی برای هوک save_post ثبت می شود، می تواند مشخص کند که می خواهد این دو آرگومان را دریافت کند یا خیر:
1 | add_action('save_post', 'wporg_custom', 10, 2); |
سپس آرگومان در تعریف تابع ثبت می شود :
1 2 3 4 5 6 7 8 | <?php function wporg_search($query) { if (!is_admin() && $query->is_main_query() && $query->is_search) { $query->set('post_type', ['post', 'movie']); } } add_action('pre_get_posts', 'wporg_search'); |
در این جلسه به استفاده از هوک اکشن در ساخت پلاگین پرداختیم.
جلسه بعدی را به هوک فیلتر اختصاص می دهیم.
با پی وی لرن همراه باشید.