- آموزش زمان بندی رویدادها با WP Cron در وردپرس
- مقدمه ای بر توسعه افزونه
- افزونه چیست ؟
- مبانی افزونه
- نیازمندی های هدر
- درج یک مجوز نرم افزار در افزونه
- قلاب های فعال و غیر فعال سازی
- متدهای حذف در سایت های وردپرس
- امنیت افزونه
- بررسی قابلیت های کاربر
- اعتبار سنجی داده ها
- امنیت ورودی
- امنیت خروجی
- Nonce ها
- قلاب ها
- اکشن ها (Actions)
- فیلترها (Filters)
- ایجاد قلاب های سفارشی
- تاپیک های پیشرفته
- منوهای مدیریت
- منوهای سطح بالا
- زیر منوها
- کدهای کوتاه
- مبانی کدهای کوتاه
- کدهای کوتاه جفتی
- کدهای کوتاه پارامتردار
- تنظیمات
- API های تنظیمات
- ایجاد و استفاده از گزینه ها
- گزینه های تکی و آرایه ای
- صفحه تنظیمات سفارشی
- فراداده (Metadata)
- ایجاد و مدیریت فراداده نوشته
- ایجاد متاباکس های سفارشی
- دریافت فراداده
- انواع نوشته سفارشی
- ایجاد پست تایپ سفارشی
- کار با داده های پست تایپ ها
- طبقه بندی یا Taxonomy در وردپرس
- ایجاد و کار با طبقه بندی های سفارشی
- کار با متادیتا (Metadata) کاربران در وردپرس
- ایجاد و مدیریت کاربران در وردپرس
- نقش ها و قابلیت های کاربران در وردپرس
- آموزش استفاده از سرویس HTTP API در وردپرس
- آموزش استفاده از ایجکس (Ajax) در وردپرس
- آموزش استفاده از Transients برای کش کردن در وردپرس
- آموزش WP-Cron وردپرس
- آموزش استفاده از جیکوئری (jQuery) در وردپرس
- آموزش کار با PHP سمت سرور و Enqueue در وردپرس
- قلاب کردن WP-Cron وردپرس به سیستم زمان بندی سرور
بررسی اجمالی
یک بخش مهم از ایجاد افزونه که معمولاً نادیده گرفته می شود ، اضافه کردن قلاب های سفارشی به افزونه است .
شما توسط قلاب های سفارشی ، می توانید به سایر توسعه دهندگان اجازه دهید تا بدون تغییر و دستکاری کدهای شما ، افزونه شما را توسعه دهند .
قلاب های سفارشی همانند قلاب های هسته وردپرس توسط توابع 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' );
منابع خارجی
- Extendable Extensions توسط Michael Fields
- WordPress Plugins as Frameworks توسط Josh Harrison
- The Pluggable Plugin توسط Brandon Dove
- WordPress Plugin Pet Peeves #3: Not Being Extensible توسط Will Norris






