قلاب یا هوک وردپرس به ما اجازه میدهد بدون تغییر کدهای وردپرس یا افزونهها، رویهها یا مقادیر را دستکاری کنیم. ۲ نوع قلاب داریم که یکی برای اجرای یک تابع پس از رخدادن وضعیتی خاص و دیگری برای تغییر متغیرها و پارامترها استفاده میشود. در این آموزش با تعریف hook در وردپرس و انواع آن آشنا میشویم.
همانطور که میدانید، وردپرس یک سیستم مدیریت محتوای انعطافپذیر است. مثلاً ما میتوانیم با یک افزونه یا پوسته، امکانات جدیدی در سایت ایجاد کنیم. همچنین برخی از این افزونهها، تغییراتی در فرآیندهای اصلی ایجاد میکنند.
برای مثال، فرض کنید میخواهیم فیلدهای فرم ثبتنام یا ورود به سایت را افزایش یا کاهش دهیم. برای این کار از هوکها یا hook در وردپرس استفاده میکنیم.
ابتدا توضیحی درمورد مفهوم هوک میدهم و سپس انواع آن را با مثال بررسی میکنیم.
فهرست محتوای آموزش
hook به معنی «قلاب» یا «چنگک» است. کدِ پردازشهایی که در وردپرس انجام میشود در سه بخش اصلی قرار دارند:
میدانیم که در هنگام بهروزرسانیِ هر کدام از اینها، فایلهایشان بازنویسی میشوند. در نتیجه اگر تغییراتی را مستقیماً در کدهای این بخشها ایجاد کرده باشیم، از بین میروند!
برای دستکاری بخشهای مختلف سایت، یکسری قلاب در موقعیتهای مختلف وجود دارد. ما میتوانیم یک تابع PHP بنویسیم و آن را به قلابِ مورد نظر وصل کنیم. در این صورت زمانی که آن اتفاق رخ دهد، تابع ما نیز اجرا میشود.
در هر کدام از این سه بخش، قلابهایی وجود دارد که میتوانیم با وصل شدن به آنها کارهای خاصی انجام دهیم. «فرم ورود به سایت» را در نظر بگیرید.
چندین هوک یا قلاب در وردپرس برای این فرم وجود دارد. چند مورد برای نمایش فرم و چند مورد برای موقعیتهای پس از ارسال فرم؛ مثلاً:
$_POST
دو نوع هوک در وردپرس وجود دارد که توضیح مختصری در مورد آنها میدهم و در بخش بعدی مثال میزنم:
هر کدام از سه هوکی که بالاتر مثال زدم یکی از این دو نوع است. مثلاً هوک اول از نوع فیلتر است (چون باید بتوانید مقادیر را تغییر دهیم) و دو مورد بعدی از نوع اکشن است (چون میخواهیم پس از اتفاق افتادن چیزی، کاری انجام دهیم).
در این آموزش صرفاً انواع هوک را معرفی و مثالهایی برای درک بهتر آنها میزنم. برای نحوه استفاده شما را به آموزشی کاملتر ارجاع دادهام. اگر بخواهید کدهایی به سایتتان اضافه کنید، آموزش روشهای افزودن کد به وردپرس و روش ایجاد پوسته فرزند بهترین گزینهها برای شماست.
با قلاب اکشن میتوانیم عملیاتی را پس از رخ دادن یک اتفاق انجام دهیم؛ موقعیتهای زیر را تصور کنید:
هر کدام از این موقعیتها یک نام (نامِ هوک) در وردپرس دارند. مثلاً اکشن هوک موقعیت اول (پس از ورود موفقیتآمیز) wp_login
نام دارد.
تنها کاری که باید انجام دهیم، این است که یک تابع برای ارسال ایمیل اطلاعرسانی پس از ورود بنویسیم. فرض کنید این کار را انجام داده و نام تابع را sbzd_send_loggedin_notif()
گذاشتهام.
حالا با تابع add_action()
این تابع را به موقعیت وصل میکنیم: (اصطلاحاً تابع را به موقیت قلاب میکنیم)
add_action( 'wp_login', 'sbzd_send_loggedin_notif');
چند صد اکشن هوک در هستهٔ وردپرس وجود دارد و با نصب هر افزونه ممکن است تعدادی به این مقدار اضافه شود. میتوانید لیست هوکهای action پیشفرض وردپرس را در این صفحه ببینید.
اگر مایلید با ساختار اکشنها آشنا شوید، یک اکشن تعریف کرده و از آنها در پروژههای خود استفاده کنید، آموزش زیر را حتماً ببینید:
با قلاب فیلتر میتوانیم متغیرها و پارامترها را دستکاری کنیم؛ حالتهای زیر را در نظر بگیرید:
wp-login.php
) تغییر دهیم.مشابه اکشنها، هر کدام از این مقادیر نامهایی دارند که ما میتوانیم برایشان فیلتر بنویسیم. فیلتر را مشابه یک صافی در نظر بگیرید؛ یعنی مقداری را دریافت کرده و مقداری را به عنوان خروجی میدهد. البته ممکن است این دو مقدار هیچ ارتباطی بهم نداشته باشند!
مثلاً برای حالت اول (تعداد کلمات خلاصه نوشته)، میتوانیم اندازهٔ پیشفرض را ۲ برابر کنیم یا مقدار آن را اجباراً 50 بگذاریم! برای درک بهتر به تابعی که برای این کار نوشتم توجه کنید:
function sbzd_excerpt_length($length) { // return $length * 2; return 50; }
آرگومان ورودی در توابعی که برای هوک فیلتر وردپرس استفاده میکنیم، همان مقادیری هستند که میخواهیم آنها را دستکاری کنیم.
در خط اولِ بدنه که کامنت شده، از آرگومان ورودی (اندازهٔ پیشفرض طول excerpt) استفاده کردهام؛ اما در خط دوم صرفاً یک عدد ثابت را برگرداندهام.
حال برای اینکه تابع را قلاب کنم، از add_filter()
کمک میگیرم:
add_filter( 'excerpt_length', 'sbzd_excerpt_length' );
چند صد مقدار دیگر در وردپرس وجود دارد که با کمک فیلتر هوک وردپرس میتوانیم آنها را تغییر دهیم. همچنین با نصب افزونههای مختلف این تعداد افزایش پیدا میکند. مثلاً woocommerce تعداد زیادی قلاب برای فیلتر کردن در اختیار ما میگذارد. لیستی از هوکهای فیلتر پیشفرض وردپرس را میتوانید در مستنداتش ببینید.
بهعنوان مثال دیگر، در کد تغییر ایمیل وردپرس، دو فیلتر برای تغییر مقادیر آدرس ایمیل و نام ایمیل فرستنده در وردپرس استفاده کردهایم.
تابع add_filter()
مشابه add_action()
پارامترهای دیگری نیز دارد که میتوانیم از آنها استفاده کنیم. سعی میکنم به زودی آموزشی برای آن در سبز دانش منتشر کنم.
در آموزش تعریف hook وردپرس با ۲ نوع اصلی قلاب یا چنگک آشنا شدیم. هوکها به برنامهنویسان وردپرس این امکان را میدهند تا تغییراتی در روندهای پیشفرض وردپرس یا افزونههای آن ایجاد کنند. با این روش ما میتوانیم بدون تغییر کدهای اصلی، عملیاتهای دلخواهمان را اجرایی کنیم.
بهعنوان جمعبندی میتوانیم تفاوت هوک اکشن و فیلتر در وردپرس را به شکل زیر خلاصه کنیم:
علاوه بر هزاران هوک پیشفرضی که در هستهٔ وردپرس وجود دارد، هر افزونه و حتی پوستههای تجاری و بزرگ، یکسری هوکهای اختصاصی در اختیار ما میگذارند تا بتوانیم تغییرات موردنظرمان را در کدهای آنها اعمال کنیم.
اگر با افزونه فروشگاهساز ووکامرس کار کنید، ممکن است بخواهید فیلدهای اضافی در صفحه تسویه حساب را حذف کنید. در این حالت میخواهیم یکسری داده (فیلدهای فرم تسویه حساب) را «اصلاح» کنیم، بنابراین آیتمها را با یک فیلتر هوک حذف میکنیم.
در دوره توسعه وردپرسی که تا حدود دو ماه دیگر در سبز دانش منتشر میشود تمام این کارها را روی یک پروژه واقعی انجام میدهیم.
امیدوارم با این آموزش مفهوم هوک در وردپرس را درک کرده باشید. اگر در حال یادگیری توسعه وردپرس هستید، پیشنهاد میکنم نحوه استفاده از اکشن و فیلتر را بهطور جداگانه آموزش ببینید تا بتوانید در جای مناسب از آنها استفاده کنید.
اگر سؤال یا تجربهای در مورد hookها دارید، بخش دیدگاهها برای شماست. سون لرن • آموزش...
برچسب : نویسنده : استخدام کار 7learn بازدید : 188