تاپیک های پیشرفته

تاپیک های پیشرفته

سایر بخش های سری آموزشی " ایجاد افزونه وردپرس "

حذف اکشن ها (Actions) و فیلترها (Filters)

بعضی اوقات نیاز دارید که یک تابع فراخوان را که یک افزونه یا پوسته یا خود هسته وردپرس ایجاد کرده اند را حذف کنید .
به عنوان مثال شما می توانید قابلیت های اضافی پوسته های بسیار بزرگ را غیرفعال کنید .
برای حذف یک فراخوان قلاب ، تنها به یکی از توابع remover_action() یا remove_filter() نیاز دارید .

نکته ۱ :
آرگومان های استفاده شده در این توابع باید با آرگومان های تابع فراخوانی که در add_action() و add_filter() استفاده شده اند ، باید یکسان باشد .
نکته ۲ :
شما باید صبر کنید تا ابتدا قلاب های add_action() و add_filter() مربوط به پوسته ، افزونه یا هسته وردپرس توابع فراخوانی را که می خواهید حذف کنید را ابتدا ثبت کنند .

پوسته ها یک قلاب را در فایل functions.php اضافه می کنند

function setup_slider() {
    // ...
}
add_action( 'template_redirect', 'setup_slider', 9 );

 

حذف قلاب

از آنجا که توابع فراخوان پوسته در فایل functions.php اضافه می شوند ، قلاب های شما بعد از بارگذاری این فایل اعمال خواهند شد .
اولین قلاب بعد از اجرای فایل functions.php قلابی به نام after_setup_theme می باشد .

function remove_theme_hooks() {
   remove_action( 'template_redirect', 'setup_slider', 9 );    // make sure all of the parameters match the add_action() call exactly
}
add_action( 'after_setup_theme', 'remove_theme_hooks' );  // make sure we run call remove_action() after add_action() has been called

 

حذف همه توابع فراخوان

شما می توانید همه توابع فراخوان مرتبط با یک قلاب را توسط توابع remove_all_actions() و remove_all_filters() را حذف کنید .

remove_all_filters( 'wp_mail', 9 );

 

تشخیص فیلتر جاری

بعضی اوقات شما نیاز دارید که یک تابع را روی چند قلاب اعمال کنید ، اما می خواهید این تابع رفتار متفاوتی را بر اساس قلاب جاری داشته باشد .
برای اینکار می توانید از تابع current_filter() استفاده کنید .

همانطور که از نام این تابع مشخص است ، اکشن جاری را برمی گرداند .

function abc_modify_content() {
    if ( 'the_content' == current_filter() ) {
        // do something
    } else {
        // do something else
    }
}
add_filter( 'the_content', 'abc_modify_content' );
add_filter( 'the_excerpt', 'abc_modify_content' );

 

بررسی تعداد دفعات اجرای یک قلاب

بعضی قلاب ها در زمان اجرای وردپرس چندین بار اجرا می شوند ، این در حالی است که شما می خواهید تابع فراخوان شما تنها یکبار توسط این قلاب اجرا شود .
در اینجا ، شما می توانید توسط تابع did_action() تعداد دفعات اجرای قلاب را بدست آورید .

function foo() {
    if ( 1 !== did_action( 'save_post' ) {
        return;
    }
 
    // ...
}
add_action( 'save_post', 'foo' );

 

اشکال زدایی با قلاب all

اگر شما می خواهید تابع فراخوان شما در هر قلاب اکشن یا فیلتری اجرا شود ، می توانید آن را به اکشن all متصل کنید .
این مورد بیشتر در مواقع اشکال زدایی کاربرد دارد ، مثلاً برای تشخیص زمان رخ دادن یک رویداد خاص یا زمانی که یک صفحه دارای مشکل است .

function print_current_hook() {
    echo '<p>' . current_filter() . '</p>';
}
add_action( 'all', 'print_current_hook' );
۱۳۹۴/۶/۱۷ ۱۳:۵۸:۲۶

درباره نویسنده:

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

نظر شما چیست