هوک نقطهای مشخص در جریان اجرای وردپرس است که به کد دیگر امکان واکنش یا تغییر داده میدهد. Action برای انجام کار در یک مرحله و Filter برای دریافت و برگرداندن مقدار به کار میرود. استفاده از hook مناسب، تغییر را از ویرایش مستقیم هسته جدا میکند؛ اما انتخاب hook اشتباه یا کد دارای اثر جانبی همچنان میتواند سایت را مختل کند.
اجزای یک اتصال
نام hook باید از مستندات همان محصول گرفته شود. callback تابعی است که اجرا میشود؛ priority ترتیب نسبی را تعیین میکند و accepted_args تعداد آرگومانهای تحویلی است. عدد priority پایینتر معمولاً زودتر اجرا میشود، اما زمان ثبت callback و فراخوانی hook نیز اهمیت دارد. نام تابع اختصاصی از برخورد با قالب یا افزونه دیگر جلوگیری میکند.
نمونه Filter: طول چکیده خودکار
این کد در افزونه اختصاصی آزمایشی یا محل مناسب سفارشیسازی قرار میگیرد. در فایل PHP باز، تگ آغاز را دوباره اضافه نکنید.
function hn_demo_excerpt_length( $length ) {
return 30;
}
add_filter( 'excerpt_length', 'hn_demo_excerpt_length', 20 );
این نمونه طول چکیده خودکار را تغییر میدهد، نه الزاماً چکیدهای که دستی نوشتهاید یا خروجی اختصاصی صفحهساز. Filter باید مقدار موردانتظار را return کند؛ echoکردن بهجای return میتواند خروجی و درخواست JSON را خراب کند.
نمونه Action بدون خروجی عمومی
function hn_demo_after_setup() {
// Theme-related initialization can be registered here.
}
add_action( 'after_setup_theme', 'hn_demo_after_setup' );
این نمونه فقط شکل ثبت callback را نشان میدهد و عمداً تغییری در سایت ایجاد نمیکند. کار واقعی باید با زمان اجرای hook هماهنگ باشد؛ مثلاً بارگذاری فایل JavaScript از مسیر enqueue مناسب انجام میشود، نه چاپ تصادفی تگ در هر مرحله.
آرگومانها و حذف callback
پیش از افزایش accepted_args، امضای hook را بخوانید؛ همه hookها تعداد آرگومان یکسان ندارند. برای remove_action یا remove_filter باید callback و priority متناظر را بشناسید و حذف پس از ثبت انجام شود. تابع ناشناس بدون مرجع نگهداریشده، حذف و آزمون بعدی را دشوارتر میکند.
آزمون رفتار و امنیت
- اثر را روی کپی آزمایشی و فقط با یک تغییر بررسی کنید.
- ورودی را اعتبارسنجی و خروجی را متناسب با محل escape کنید.
- برای عمل مدیریتی، capability و محافظت CSRF جدا لازم است؛ hook جای آنها را نمیگیرد.
- از echo، var_dump و ساخت حساب موقت در hookهای عمومی اجتناب کنید.
- اگر رفتار دیده نشد، فعالبودن محل کد، نام hook، زمان اجرا و وابستگی را بررسی کنید.
مطالعه مرتبط
- آموزش قرار دادن کد در فایل function.php وردپرس
- آموزش رفع خطای Defer parsing of JavaScript در GTmetrix
منابع و مستندات
بازبینی محتوا و منابع: ۲۶ مهر ۱۴۰۵. دستورهای نمونه برای محیط مشخصشدهاند؛ پیش از استفاده روی سرویس عملیاتی، سازگاری محیط و نسخه پشتیبان را بررسی کنید.