- آموزش زمان بندی رویدادها با WP Cron در وردپرس
- مقدمه ای بر توسعه افزونه
- افزونه چیست ؟
- مبانی افزونه
- نیازمندی های هدر
- درج یک مجوز نرم افزار در افزونه
- قلاب های فعال و غیر فعال سازی
- متدهای حذف در سایت های وردپرس
- امنیت افزونه
- بررسی قابلیت های کاربر
- اعتبار سنجی داده ها
- امنیت ورودی
- امنیت خروجی
- Nonce ها
- قلاب ها
- اکشن ها (Actions)
- فیلترها (Filters)
- ایجاد قلاب های سفارشی
- تاپیک های پیشرفته
- منوهای مدیریت
- منوهای سطح بالا
- زیر منوها
- کدهای کوتاه
- مبانی کدهای کوتاه
- کدهای کوتاه جفتی
- کدهای کوتاه پارامتردار
- تنظیمات
- API های تنظیمات
- ایجاد و استفاده از گزینه ها
- گزینه های تکی و آرایه ای
- صفحه تنظیمات سفارشی
- فراداده (Metadata)
- ایجاد و مدیریت فراداده نوشته
- ایجاد متاباکس های سفارشی
- دریافت فراداده
- انواع نوشته سفارشی
- ایجاد پست تایپ سفارشی
- کار با داده های پست تایپ ها
- طبقه بندی یا Taxonomy در وردپرس
- ایجاد و کار با طبقه بندی های سفارشی
- کار با متادیتا (Metadata) کاربران در وردپرس
- ایجاد و مدیریت کاربران در وردپرس
- نقش ها و قابلیت های کاربران در وردپرس
- آموزش استفاده از سرویس HTTP API در وردپرس
- آموزش استفاده از ایجکس (Ajax) در وردپرس
- آموزش استفاده از Transients برای کش کردن در وردپرس
- آموزش WP-Cron وردپرس
- آموزش استفاده از جیکوئری (jQuery) در وردپرس
- آموزش کار با PHP سمت سرور و Enqueue در وردپرس
- قلاب کردن WP-Cron وردپرس به سیستم زمان بندی سرور
بررسی اجمالی
اکشن ها یک نوع از قلاب ها هستند .
اکشن ها یک روش هستند که به یک تابع امکان می دهند روی عملکرد تابعی دیگر تاثیر بگذارد . بنابراین کدهای تابع اضافه شده می تواند در یک نقطه خاص در زمان اجرای هسته وردپرس ، یک افزونه و یا یک پوسته ، اجرا شوند.
اکشن ها همتای فیلترها (Filters) هستند . آنها با فراخوانی تابع add_action() که ۲ پارامتر قبول می کند ، کار می کنند .
پارامتر اول تابع add_action() نام اکشنی است که شما می خواهید یک تابع را به آن متصل کنید و پارامتر دوم آن تابعی است که می خواهید در زمان رخ دادن اکشن (پارامتر اول) ، اجرا شود .
به عنوان مثال :
add_action( 'init', 'do_some_stuff' );
در دستورات بالا ، زمانی که اکشن init اجرا می شود ، تابع سفارشی شما یعنی do_some_stuff() فراخوانی می شود و دستورات آن اجرا می شود .
برای مشاهده اکشن ها و مثال هایی از هر کدام می توانید این لینک را مشاهده کنید .
چنانچه با اکشن ها زیاد تمرین کنید ، به مرور زمان خواهید توانست که حتی منبع اصلی کدهای آنها یعنی فایل های هسته وردپرس را مرور و مطالعه کنید و از اکشن های دلخواه خود برای پیشبرد اهداف افزونه یا پوسته ، بهره بگیرید .
چند نمونه از اکشن ها جهت تمرین
اگر شما بخواهید یک پرس وجو (Query) از بانک اطلاعاتی MySQL را که نوشته های وردپرس را توسط یک حلقه (The Loop) نمایش می دهد را تغییر دهید ، می توانید از اکشن pre_get_posts استفاده کنید .
مثلاً یک کار که شما می توانید با این حلقه از نوشته ها انجام دهید ، این است که نوشته های سفارشی (Custom post ) خود را در نتایج پرس و جو اضافه کنید .
function search_filter( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
if ( $query->is_search ) {
$query->set( 'post_type', array( 'post', 'movie' ) );
}
}
}
add_action( 'pre_get_posts', 'search_filter' );
به عنوان مثالی دیگر اگر شما می خواهید یک یا چند تگ HTML را به قسمت head صفحه اضافه کنید می توانید از اکشن wp_head استفاده کنید :
function prevent_google_maps_resize() {
echo '<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />';
}
add_action( 'wp_head', 'prevent_google_maps_resize' );
پارامترهای اضافه
هر دو تابع add_action() و add_filter() می توانند ۲ پارامتر اضافه دیگر را که استفاده از آنها اختیاری است را ، داشته باشند .
پارامتر اختیاری اول برای اولویت دادن به تابع callback و پارامتر اختیاری دوم تعداد آرگومان هایی که تابع callback می تواند بپذیرد را مشخص می کند .
پارامتر اختیاری اول (اولویت یا Priority )
این پارامتر ، اولویت اجرای تابع متصل به قلاب اکشن را نسبت به سایر توابع متصل به این قلاب را مشخص می کند .
به عنوان نمونه یک تابع با اولویت ۱۱ بعد از یک تابع با اولویت ۱۰ اجرا می شود و یک تابع با اولویت ۹ زودتر از یک تابع با اولویت ۱۰ اجرا خواهد شد .
هر عدد صحیح و مثبتی قابل قبول است و عدد پیشفرض ۱۰ می باشد .
به عنوان مثال توابع فراخوانی (callback) زیر همگی به قلاب init متصل شده اند ، اما با اولویت های متفاوت .
add_action( 'init', 'run_me_early', 9 ); add_action( 'init', 'run_me_normal' ); // default value of 10 is used since a priority wasn't specified add_action( 'init', 'run_me_late', 11 );
در کد بالا ابتدا تابع run_me_early() ، سپس تابع run_me_normal() و در آخر تابع run_me_late() اجرا می شوند .
اگر دو تابع فراخوانی با اولویت یکسان به یک قلاب متصل شده و ثبت شده باشند ، ترتیب اجرای آنها بر اساس ترتیب ثبت آنها صورت می گیرد . به بیان دیگر تابعی که دستور آن زودتر توسط وردپرس اجرا می شود ، اولویت اجرای زودتری خواهد داشت .
تعداد آرگومان ها
بعضی اوقات شما می خواهید که تابع متصل به یک قلاب یک یا چند داده را به عنوان ورودی دریافت کند و بر روی آنها محاسباتی را انجام دهد .
به عنوان مثال ، زمانی که وردپرس یک نوشته را ذخیره می کند و اکشن save_post را اجرا می کند ، ۲ پارامتر را به تابع فراخوانش ارسال می کند : ID یا شناسه نوشته ذخیره شده و خود نوشته به عنوان یک شی (object) .
do_action( 'save_post', $post->ID, $post );
بنابراین ، زمانی که یک تابع فراخوان برای اکشن save_post ثبت شده است ، می تواند مشخص کند که این دو آرگومان را می خواهد :
add_action( 'save_post', 'my_save_post_callback', 10, 2 );
و سپس می تواند آرگومان را در تعریف تابع فراخوان ثبت کند :
function my_save_post_callback( $post_id, $post ) {
// do stuff
}






