هوک وردپرس – WordPress Hooks
مهندس محسن حسن پور
این پست با مسیر متخصص وردپرس مرتبط است. مشاهده مسیر (Roadmap)
شاید تاکنون در فایل functions.php سایت وردپرسی خود و یا فایل های پلاگین با کد هایی که با add_action و add_filter آغاز می شدند مواجه شده باشید و برایتان سوال باشد که آن ها چی هستند؟ امروز قصد داریم با یک موضوع مهم به نام هوک در وردپرس خدمتتان باشیم. همچنین در ادامه نیز بصورت مفصل در مورد انواع هوک، یعنی اکشن ها و فیلتر ها در وردپرس صحبت خواهیم کرد.
هوک چیست؟
احتمالا در سری کارتون های پیترپن کاپیتان هوک را به خاطر دارید! اگر یادتان باشد او یک دست نداشت و یک قلاب بجای دستش قرار داشت. پس همانطور که احتمالا حدس زدید هوک به معنای قلاب است. اما کاربرد hook در وردپرس با کاپیتان هوک قصه ی پیترپن متفاوت است. در این آموزش یاد می گیریم که هوک چیست و چه کاربردی در وردپرس دارد.
هوک وردپرس – WordPress Hook
به زبان ساده هوک ها در وردپرس امکانی به ما می دهند که کد های ما در زمانی که ما می خواهیم اجرا شود. یادتان است که گفتیم هوک به معنای قلاب است؟ در وردپرس نیز همین مفهوم کاربرد دارد. یعنی با هوک زدن (یا انداختن) به یک رویدادی در وردپرس قلاب می اندازیم. برای مثال می خواهیم وقتی کاربری در سایت لاگین می کند تابعی اجرا شود آنگاه باید به Login هوک بیندازیم.
به مثال زیر دقت کنید:
<?php add_action( 'save_post', 'tutsxen_my_save_post_function', 10, 3 ); ?>
در کد فوق ما به وردپرس دستور می دهیم هنگام سیو شدن پست ها تابع tutsxen_my_save_post_function را اجرا کند.
انواع هوک در وردپرس
همانطور که در مثال بالا هم دیدید برای هوک انداختن در وردپرس از تابع add_action()
در وردپرس استفاده می شود اما هوک ها محدود به اکشن ها نیستند و نوع دیگری نیز با نام فیلتر وجود دارد (تابع add_filter()
در وردپرس) که می خواهیم هر دو را با هم بررسی کنیم.
اکشن ها در وردپرس – WordPress Actions
اکشن ها دسته ای از هوک های وردپرس هستند که با تابع
add_action( $hook, $function_to_add, $priority, $accepted_args );
در فایل Functions.php قالب وردپرس یا فایل افزونه ایجاد می شوند.
اکشن ها زمانی کاربرد دارند که ما می خواهیم به هنگام وقوع یک رویدادی تابعی ایجاد شود.
ورودی های تابع add_action وردپرس
ورودی هایی که تابع add_action برای هوک انداختن استفاده می کند بصورت زیر است :
- $hook : نقطه ای که می خواهیم به آن قلاب بیندازیم (همان لحظه ای که می خواهیم تابع دلخواه ما آن موقع اجرا شود)
- $function_to_add : تابع دلخواه ما
- $periority : اولویت اجرا
- $accepted_args : تعداد آرگومان هایی که تابع می پذیرد
توجه کنید که از بین موارد بالا دو پارامتر اول اجباری و دو پارامتر آخر اختیاری می باشند. البته اگر قصد دارید بیش از 1 آرگومان را به تابع خود پاس دهید، نیاز است آرگومان چهارم را نیز وارد کنید. از آنجایی که وارد کردن آرگومان چهارم نیازمند وارد کردن آرگومان سوم است باید آرگومان سوم را نیز وارد کنید. مقدار دیفالت آرگومان سوم ( یعنی periority ) برابر 10 است.
فیلتر ها در وردپرس – WordPress Actions
فیلتر ها نیز دسته ای از هوک های وردپرس هستند که با تابع
add_filter( $hook, $function_to_add, $priority );
در فایل Functions.php قالب وردپرس یا فایل افزونه ایجاد می شوند.
فیلتر ها زمانی استفاده می شوند که می خواهیم تغییری در اطلاعات و data ایجاد کنیم. مثلا فرض کنید می خواهیم یه بلایی سر عنوان پست ها بیاوریم! یا در متن تمام ویدئو ها تغییری اعمال کنیم یا چیزی اضافه کنیم.
ورودی های تابع add_filter وردپرس
پارامتر هایی که تابع add_filter برای هوک انداختن استفاده می کند بصورت زیر است :
- $hook : نقطه ای که می خواهیم به آن قلاب بیندازیم
- $function_to_add : تابع دلخواه ما
- $periority : اولویت اجرا
توجه کنید که از بین موارد بالا دو پارامتر اول اجباری و دو پارامتر آخر اختیاری می باشند. البته اگر قصد دارید بیش از 1 آرگومان را به تابع خود پاس دهید، نیاز است آرگومان چهارم را نیز وارد کنید. از آنجایی که وارد کردن آرگومان چهارم نیازمند وارد کردن آرگومان سوم است باید آرگومان سوم را نیز وارد کنید. مقدار دیفالت آرگومان سوم ( یعنی periority ) برابر 10 است.
فراموش نکنید که بعد از هوک انداختن از نوع فیلتر، حتما میبایست می بایست داده ای که دستخوش تغییر می شود return شود.
تفاوت بین فیلتر ها و اکشن های وردپرس
شاید متوجه شده باشید اکشن ها برای تغییر دیتا ها و اطلاعات بکار می روند. دقت کنید که حتما در تابعی که می خواهیم به وسیله فیلتر با آن هوک بیندازیم return باید وجود داشته باشد. (یعنی اصطلاحا اطلاعات را برگرداند.) درصورتی که اکشن ها برای ایجاد یک امکان جدید هنگام رویداد های مختلف به کار می روند.
همچنین فراموش نکنید که بعد از هوک انداختن از نوع فیلتر، حتما میبایست می بایست داده ای که دستخوش تغییر می شود return شود اما در صورت هوک از نوع اکشن لزومی به اینکار وجود ندارد.
خب به انتهای آموزش هوک در وردپرس رسیدیم. امیدواریم این آموزش که از سری آموزش های وردپرس تاتژن است، مورد توجه شما واقع شده باشد. شما می توانید از طریق کامنت های زیر این پست سوالات و ابهامات خود را مطرح نمایید. همچنین پیشنهاد می گردد کانال یوتیوب تاتژن را دنبال کنید تا از جدید ترین آموزش های وردپرس بهره مند شوید.