تعداد بازدید: 240

Hooks: Actions and Filters

هیچ وقت هسته وردپرس رو تغییر ندید (do’nt touch the core) . بدین معنی هست که برای هک وردپرس راه دیگری غیر از تغییر مستقیم در کدها باید طی کنید. هوک یا قلاب (به انگلیسی: Hooks) همون راهی هست که برای پیاده سازی ساختار های شخصی خودتون روی وردپرس تعبیه شده. دو مورد از مهم ترین موارد اون Actions و Filters هستند. بدین ترتیب پس از بروزرسانی هسته یا پلاگین تغییرات شما حفظ میشه.

Actions Hook

Action ها یه سری وقایع مشخص هستند که در وردپرس تعبیه شدند ، مثل انتشار یک پست ، تغییر یک تم .

Action های زیادی در وردپرس داریم که شما می تونید تابع خودتون رو به اون Action خاص قلاب کنید. بدین ترتیب در زمان اجرا وقتی وردپرس به Action شما میرسه اون تابعی که براش تعریف کردید رو اجرا می کنه.(در زمان اون واقعه-action- تابع شما -custom php function- اجرا میشه)

لیست تمامی action های تعریف شده پیش فرض وردپرس رو می تونید در اینجا ببینید.

همچنین شما می تونید یه action خودتون تعریف کنید تا بشه در اون زمان یه تابع خاص بهش تزریق بشه. میتونید همراه action که ساختید یه سری پارامتر هم بفرستید یعنی در واقع به تابعی که قراره در زمان اون action اجرا بشه یه سری آرگومان دادید.

برای ساخت action از تابع do_action استفاده می کنیم.

برای قلاب تابع به action از تابع add_action استفاده می کنیم.

تابع do_action

برای ساخت action . ساختار این تابع به شکل زیر است:

پارامتر های این تابع:

  • tag : این نام action هست که قراره ایجاد بشه.
  • arg : این پارامتر هست که برای تابع قلاب شونده تعبیه شده . اگر هر تعداد پارامتر لازم داشتید کافیه به ترتیب پشت سر هم بیاریدشون توی تابع do_action تا کاربری تابع قلاب می کنه پارامتر های شما رو با همون ترتیب ازشون استفاده کنه.

تابع add_action

برای قلاب کردن یک تابع به یک action خاص . ساختار تابع به شکل زیر است.

پارامتر های تابع :

  • tag : نام action که قراره تابع از اونجا قلاب بشه.
  • function_to_add : تابعی که قراره قلاب بشه.
  • priority : ترتیب اجرای توابع قلاب شده به action . اعداد کوچکتر با اولویت بیشتر (یعنی زودتر). و اعداد بزرگتر با اولویت کمتر (یعنی دیرتر) در صف توابع اجرا می شوند. مثلا تابعی با priority برابر با 10 زودتر از تابع با priority برابر با 20 اجرا میشه.
    مقدار پیش فرض برای این پارامتر عدد 10 است.
    دقت داشته باشید که تابعی که دیر تر اجرا می شود در بعضی موارد بر موارد بالا تر override می شود. به طور مثال در تابعی با اولویت 10 مقدار متغیر $column برابر با ’12’ هست و در تابعی با اولویت 20 مقدار متغیر $column برابر  ’18’ است. در نهایت مقدار متغیر ’18’ می شود. اول اولویت 10 بعد اولویت 20 اجرا می شود.
  • accepted_args : تعداد پارامتر هایی که این تابع قراره بگیره . هر تعداد پارامتر در زمان ساخت action داشته باشید می تونید استفاده کنید.

در مثال زیر یک action با نام before_any_thing ایجاد کردیم و دو پارامتر $param1 و $param2 رو براش تعبیه کردیم.

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

Filters Hook

فیلتر همون طور که از نامش مشخصه یعنی یه سری خروجی رو فیلتر می کنه. پس وقتی سخن از خروجی میاد یعنی return . پس در فیلتر ها همیشه یه چیزی گرفته میشه و بعد از تغییر مجددن برگشت داده میشه.

مثلا نام slug یه پست تایپ که تعریف شده داخل یه فیلتر خاص قرار بگیره و این اجازه به کاربر داده بشه که slug رو تغییر بده.

لیست فیلتر های تعریف شده پیش فرض وردپرس رو می تونید در اینجا ببینید.

شما میتونید خودتون هم روی خروجی هاتون فیلتر بزارید .

برای ساخت فیلتر از تابع apply_filters استفاده می کنیم.

برای اعمال فیلتر از تابع add_filters استفاده می کنیم.

تابع apply_filters

این تابع برای ساخت فیلتر استفاده میشه. ساختار تابع به شکل زیر است:

پارامتر های تابع:

  • tag : نام فیلتری که قراره تعبیه بشه.
  • value : اون مقداری که قراره روش فیلتر با نام (tag) اعمال بشه. در نهایت خروجی این تابع همین مقدار value هست که میتونه برگرده یا چاپ بشه . فکر کنید یه متغیر با مقدار value برای فیلتر شدن.
  • arg : پارامترهایی که قراره فرستاده بشه. ممکنه لازم باشه تابع فیلتر کننده از یه سری پارامترها استفاده کنه ولی در نهایت مقدار value هست که فیلتر میشه.

تابع add_filter

این تابع برای اعمال فیلتر استفاده میشه. ساختار تابع به شکل زیر است:

پارامترهای تابع:

  • tag : نام فیلتر
  • function_to_add : تابعی که قراره عملیات فیلتر رو انجام بده.
  • periority : اولویت توابع در صف . کمترین مقدار برابر با بیشترین اولویت.
  • accepted_args :‌ تعداد پارامتر هایی که قراره این تابع بگیره. پارامتر ها رو در تابع function_to_add به همون ترتیبی که در apply_filters تعبیه شده استفاده می کنیم.

نکته مهم : ترتیب فراخوانی action ها و filter ها از پیش تعیین شده و ربطی به ترتیب قلاب کردن توابع شما به آن ندارد.

مطالب مشابه

Settings API در ووکامرس

ما برای ساخت پنل تنظیمات برای افزونه ها از api خود وردپرس استفاده می کردیم. حال این که افزونه مکمل برای ووکامرس می...

آموزش نکات و تکنیک های برنامه نویسی وردپرس

Settings API در وردپرس

وردپرس برای ساخت پنل تنظیمات شبیه به پنل تنظیمات پیش فرض خودش API هایی رو قرار داده . Settings API , Options API دو...

اشتراک گذاری :

ابوالفضل صباغ

برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای Hooks: Actions and Filters

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

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