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

بررسی اجمالی

یک بخش مهم از ایجاد افزونه که معمولاً نادیده گرفته می شود ، اضافه کردن قلاب های سفارشی به افزونه است .
شما توسط قلاب های سفارشی ، می توانید به سایر توسعه دهندگان اجازه دهید تا بدون تغییر و دستکاری کدهای شما ، افزونه شما را توسعه دهند .
قلاب های سفارشی همانند قلاب های هسته وردپرس توسط توابع add_action() / do_action() و add_filter() / apply_filters() ایجاد می شوند .

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

به خاطر داشته باشید که حتماً قلاب های ایجاد شده توسط شما باید دارای یک پیشوند یکتا باشند تا با سایر افزونه ها تداخلی ایجاد نشود .
به عنوان مثال اختصاص نام email_body به یک فیلتر بسیار ناکارآمد است ، زیرا این نام بسیار رایج است و احتمال اینکه در سایر افزونه ها مورد استفاده قرار گرفته باشد بسیار بالاست ، که باعث تداخل افزونه ها و بروز خطا در وردپرس می شود .
اختصاص یک نام مانند abcd_email_body که بخش abcd_ به عنوان پیشوند یکتا است ، می تواند تا حدود زیادی از تداخل افزونه ها جلوگیری کند .
یکی از کارهای مطلوب در ایجاد افزونه استفاده از تابع apply_filter() در زمان هایی است که هر نوع متنی قرار است نمایش داده شود ، بخصوص اگر نوشته در نمای کاربری یا front End باشد .
اینکار به کاربران افزونه شما اجازه می دهد تا راحتتر بتوانند تغییرات مورد نیاز خود را روی افزونه شما اعمال کنند .

مثال ها

ایجاد یک فرم تنظیمات توسعه پذیر

اگر افزونه شما یک فرم تنظیمات به قسمت مدیریت وردپرس اضافه می کند ، می توانید با اکشن ها کاری کنید که سایر افزونه ها بتوانند تنظیمات خود را به آن اضافه کنند .
در مثال زیر یک اکشن سفارشی را مشاهده می کنید که در پایان فرم فراخوانی می شود :

function markup_settings_menu() {
    ?>
 
    Foo: <input id="foo" name="foo1" type="text" />
    Bar: <input id="bar" name="bar1" type="text" />
 
    <?php
 
    do_action( 'myplugin_after_form_settings' );
}

بنابراین سایر افزونه ها می توانند یک تابع فراخوانی برای اکشن myplugin_after_form_settings بنویسند و تنظیمات خود را اضافه کنند :

function add_form_settings() {
    ?>
 
    New 1: <input id="new_setting" name="new_settings" type="text" />
    New 2: <input id="new_setting2" name="new_setting2" type="text" />
 
    <?php
}
add_action( 'myplugin_after_form_settings', 'add_form_settings' );

ایجاد یک نوشته سفارشی (Custom Post) توسعه پذیر

در این مثال ، زمانی که نوع پست جدید در حال ثبت شدن است ، پارامترهایی که آن را تعریف می کنند ، از طریق یک فیلتر ارسال می شوند ، پس یک افزونه دیگر می تواند آنها را قبل از ایجاد پست سفارشی جدید ، تغییر دهد .

function myplugin_create_post_type() {
    $post_type_params = array( /* ... */ );
 
    register_post_type(
        'post_type_slug',
        apply_filters( 'myplugin_post_type_params', $post_type_params ),
    );
}

 

افزونه ای که بخواهد روی پست سفارشی تغییراتی اعمال کند ، می تواند از طریق یک تابع فراخوان که به فیلتر myplugin_post_type_params در مثال بالا ، متصل شده است ، تغییرات خود را اعمال کند .
در این مورد تابع فراخوان نوع پست را از flat به hierarchical تبدیل کرده است .

function change_post_type_params( $post_type_params ) {
    $post_type_params['hierarchical'] = true;
    return $post_type_params;
}
add_filter( 'myplugin_post_type_params', 'change_post_type_params' );

منابع خارجی