اگر تا اینجا یاد گرفتهاید وردپرس کار میکند، حالا وقت آن است که یاد بگیرید چطور آن را تغییر دهید. قلب تمام این تغییرات، هوکها هستند.
اکشن چیست؟
اکشنها نقاطی هستند که وردپرس در آنها به شما اجازه میدهد کدی را اجرا کنید، بدون اینکه خروجی را تغییر دهید. مثلاً وقتی یک نوشته منتشر میشود، میتوانید ایمیل اطلاعرسانی بفرستید.
<?php
function academy_notify_publish( $post_id ) {
$title = get_the_title( $post_id );
wp_mail( 'admin@example.com', 'نوشته جدید', $title );
}
add_action( 'publish_post', 'academy_notify_publish' );
فیلتر چیست؟
فیلترها داده را میگیرند، تغییر میدهند و برمیگردانند. تفاوت کلیدی این است که فیلتر مقدار برمیگرداند و اکشن این کار را نمیکند.
<?php
function academy_shorten_excerpt( $excerpt ) {
return wp_trim_words( $excerpt, ۲۵, '...' );
}
add_filter( 'get_the_excerpt', 'academy_shorten_excerpt' );
اولویت و تعداد اجرا
گاهی لازم است کد شما زودتر یا دیرتر از کدهای دیگر اجرا شود. برای همین میتوانید اولویت و تعداد اجرا را مشخص کنید:
add_action( 'init', 'my_setup', ۵ );
add_filter( 'the_content', 'my_formatter', ۲۰ );
add_filter( 'the_content', 'my_formatter', ۱۰, ۲ );
عدد اول اولویت است (پیشفرض ۱۰) و عدد دوم تعداد آرگومانهایی که به تابع پاس داده میشود.
حذف اکشن و فیلتر
remove_action( 'admin_notices', 'my_notice' );
remove_filter( 'the_content', 'my_formatter' );
اگر میخواهید کدی که قبلاً ثبت شده را غیرفعال کنید، از این توابع استفاده کنید. همچنین میتوانید تابعی را کاملاً جایگزین کنید:
remove_action( 'the_content', 'wpautop' );
چطور هوکها را پیدا کنیم؟
- مستندات رسمی وردپرس، فهرست کاملی از هوکها دارد
- در فایل
wp-includes/default-filters.phpهوکهای پیشفرض را ببینید - از افزونههایی مثل Query Monitor برای دیدن هوکهای اجراشده استفاده کنید
توانایی کار با هوکها، تفاوت بین کسی که وردپرس را «استفاده» میکند و کسی که آن را «توسعه» میدهد.
