هوک اکشن » هوک اکشن (Action Hook) در وردپرس

هوک اکشن (Action Hook) در وردپرس

thumb-52-hook-action

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

در واقع هوک است که امکان ساخت پلاگین را به وجود می‌آورد. اگر هوک در وردپرس وجود نداشت، پس از هر بار به روزرسانی، کلیه پلاگین‌ها از کار می‌افتادند. پس از آشنایی با مفهوم هوک، تازه علت محبوبیت وردپرس و ساخته شدن هزاران پلاگین برای آن را می‌فهمید.

وردپرس دو نوع هوک اصلی دارد: هوک اکشن (Action hook) و هوک فیلتر (Filter hook)

در این مقاله به معرفی هوک اکشن می‌پردازیم.

هوک اکشن یا Action hook در وردپرس چیست؟

هوک در زبان انگلیسی به معنی قلاب است. هوک اکشن هم دقیقاً همانند یک قلاب عمل می‌کند. شما توابع را به این قلاب آویزان می‌کنید. هر وقت که آن قلاب برداشته شد، توابع شما هم اجرا می‌شوند.

هوک‌های اکشن این امکان را به شما می‌دهند که تابعی را در زمان مشخصی صدا بزنید. مثلاً تابعی نوشتید که می‌خواهید در هنگام لود شدن هر صفحه صدا زده شود. با استفاده از هوک مخصوص لود شدن صفحات می‌تونید این کار را انجام دهید.

چگونه توابع متصل به یک هوک صدا زده می‌شوند؟

برای اجرای توابع متصل به یک هوک باید از تابع do_action() استفاده کنید. این تابع به شکل زیر است:

<?php

            do_action($tag, $arg = ‘’);
?>

$tage: نام هوک اکشن

$arg: مقادیری که به اکشن داده می‌شوند. تعداد مقادیر از صفر با بالا می‌تواند باشد.

یک هوک اکشن با چندین پارامتر به صورت زیر نوشته می‌شود:

<?php

            do_action($tag, $arg_1, $arg_2, $arg_3);
?>

شاید تا الان کاملاً گیج شده باشید. بهتر است یک مثال را بررسی کنیم:

در وردپرس هوک اکشنی به نام wp_head وجود دارد. این هوک زمان اضافه کردن تگ <head> به هر صفحه سایت اضافه می‌شود. پس اگر تابعی به این هوک متصل کنید، در زمان اضافه شدن تگ <head> اجرا می‌شود.

بنابراین این هوک برای اضافه کردن فایل‌های جاوا اسکریپت یا CSS بسیار مناسب است.

<?php
            do_action(‘wp_head’);
?>

وقتی کد بالا اجرا می‌شود، وردپرس تمام توابعی که به هوک wp_head متصل هستند را می‌یابد و به نوبت اجرا می‌کند. در این مثال do_action هیچ پارامتری نگرفت. ولی در مثال زیر این تابع چند پارامتر می‌پذیرد:

<?php

            do_action(‘save_post’, $post_ID, $post);
?>

چگونه به یک هوک، تابع وصل کنیم؟

پس تا بدینجا متوجه شدید که هوک اکشن در واقع یک قلاب و اکشن یک تابع می باشد. توابع به این هوک وصل می‌شوند. هر موقع که تابع do_action برای یک هوک صدا زده شود، تمامی توابع متصل به آن اجرا می‌شوند.

حال سؤال اینجاست که چگونه یک تابع را به یک هوک متصل کنیم؟ برای اینکار تابعی با نام add_action در وردپرس وجود دارد؛ این تابع به فرم زیر می باشد:

<?php

            Add_action( $tag, $function, #priority, $accepted_args);
?>

$tag: اسم هوک اکشنی که می‌خواهید تابع به آن متصل شود.

$function: نام تابعی که می‌خواهید به هوک متصل کنید.

$priority: یک عدد است که بیانگر اولویت اجرای تابع می‌باشد. هر چه عدد کمتر باشد، در هنگام اجرای هوک، تابع زودتر صدا زده می‌شود. مقدار پیش فرض آن 10 می‌باشد.

$accepted_args: تعداد پارامترهایی که به تابع داده می‌شود. به صورت پیش فرض این تعداد برابر با یک است.

یکی از هوک‌های پرکاربرد، wp_footer است. این هوک پیش از تگ </body> صدا زده می‌شود. در مثال زیر یک اکشن به این هوک متصل می‌شود.

<?php

            Add_action(‘wp_footer’, ‘my_footer’,100);

            Function my_footer() {

                        echo ‘this is my footer’;
            }
?>

تابع myfooter با اولویت خیلی پایین به هوک wp_footer متصل شده است. هر بار که do_action برای این هوک صدا زده شود، تابع my_footer در آخر اجرا می‌شود.

چگونه یک تابع را از یک هوک حذف کنیم

برای حذف یک هوک باید از تابع remove_action() استفاده کنید. معمولاً نیاز است که اکشن‌های پیش‌فرض وردپرس را حذف و اکشن‌های خاص خودتان را اضافه کنید. این تابع در صورت موفقیت مقدار true ودر غیر اینصورت مقدار False را برمی‌گرداند.

<?php
            remove_action($tag, $function_to_remove, $priority, $accepted_args);
?>

$tag: نام هوکی که قرار است تابعی از آن حذف شود.

$function_to_remove: تابعی که می‌خواهید از هوک حذف کنید.

$priority: اولویتی که در تابع add_action() به اکشن داده شده است. مقدار پیش‌فرض 10 است.

$accepted_args: تعداد آگومان‌هایی که اکشن می‌پذیرد. مقدار پیش‌فرض یک است.

پارامتر $priority دقیقاً باید آنچه در do_action() ذکر شده است، برابر باشد. در غیر اینصورت اکشن حذف نخواهد شد و remove_action() مقدار fasle برمی‌گرداند.

سایر توابع مرتبط با هوک اکشن

تابع do_action_ref_array

این تابع همان کار do_action را می‌کند. تفاوت در نحوه ارسال آرگومان‌هاست. این تابع آرگومان‌ها را به صورت یک آرایه ارسال می‌کند. آرایه‌ی آرگومان‌ها یک پارامتر اجباری در این تابع است.

<?php

            add_action (‘preg_get_posts’ , ‘random_post_order’);

            function random_post_order ($query){

                        if ($query -> is_home && empty ($query -> query_vars[‘suppress_filters’] ) )

                                   $query -> set ( ‘orderby’ , ‘rand’ );
            }
?>

در تکه کد بالا، تابع random_post_order به هوک preg_get_posts متصل شده است. این هوک در زمان گرفتن لیستی از پست‌ها اجرا می‌شود. بنابراین با اضافه کردن کد بالا، لیست‌ پست‌ها به صورت تصادفی مرتب می‌شود.

تابع remove_all_actions

این تابع تمامی توابع متصل به یک هوک را از آن جدا می‌کند. فرم این تابع به صورت زیر است:

<?
php
            remove_all_actions($tag, $priority);
?>

 

$tag نام هوک می باشد، $priority هم اولویت توابعی است که باید حذف شوند. اولویت اختیاری است و مقدار پیش‌فرض آن False است.

تابع has_action

این تابع برای چک کردن متصل بودن یا نبودن یک تابع خاص به یک هوک است.

<?php
            has_action($tag, $function_to_check);
?>

اگر پارامتر $function_to_check را خالی بگذارید، دو حالت پیش می‌آید. اگر تابعی به هوک متصل باشد مقدار True و در غیر اینصورت مقدار Fasle برمی‌گرداند. اگر این پارامتر را قید کنید و تابع هم به هوک متصل باشد، priority یا اولویت تابع بازگردانده می‌شود. در غیر اینصورت مقدار false برگردانده می‌شود.

تابع did_action

با استفاده از این تابع می‌توانید تعداد دفعات اجرای یک تابع متصل به یک هوک را به دست آورید.

هوک‌های رایج در وردپرس

آشنایی با هوک‌های رایج و پراستفاده از وردپرس اهمیت زیادی دارد. در صورتی که با هوکی ناآشنا برخورد کردید، با استفاده از گوگل و سایت وردپرس می‌توانید توضیح آن را بیابید.

Plugins_loaded

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

Init

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

Admin_menu

این هوک در زمان لود شدن صفحه ادمین اجرا می‌شود اگر پلاگین شما از صفحه ادمین استفاده می‌کند، باید از این هوک استفاده کنید.

Template_redirect

این هوک در زمان انتخاب قالب صفحه‌ای که کاربر سفارش داده، اجرا می‌شود. مثلاً با این هوک می‌توانید چک کنید که اگر صفحه دیده شده یک پست باشد، CSS دلخواه شما لود شود.

Wp_head

این هوک در زمان اضافه شدن تگ <head> اجرا می‌شود.

 



Add Comment Register



پاسخ دهید

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

ورود اعضای سایت

ماهنامه باشگاه وردپرس

دانلود رایگان

ما را دنبال کنید

نمادها

اینستاگرام



لطفا نام و ایمیل خود را وارد کنید
تا این آموزش ارزشمند همین الان برایتان ایمیل شود

فیلم آموزشی را همین الان برایم ایمیل کن
چند ثانیه تا دانلود فاصله دارید!
کافی است آدرس ایمیلتان را وارد کنید
ما هم مثل شما از ایمیل های مزاحم متنفریم
چند ثانیه تا دانلود فاصله دارید!
کافی است آدرس ایمیلتان را وارد کنید
ما هم مثل شما از ایمیل های مزاحم متنفریم
چند ثانیه تا دانلود فاصله دارید!
کافی است آدرس ایمیلتان را وارد کنید
ما هم مثل شما از ایمیل های مزاحم متنفریم
دانلود این فیلم آموزشی با کیفیت اصلی
کافی است آدرس ایمیلتان را وارد کنید
ما هم مثل شما از ایمیل های مزاحم متنفریم
دانلود اولین ماهنامه تخصصی وردپرس
کافی است آدرس ایمیلتان را وارد کنید
ما هم مثل شما از ایمیل های مزاحم متنفریم