آشنایی با Hook های وردپرس: transition_post_status

transition post status wordpress
27 فروردین 1404

آشنایی با Hook های وردپرس: transition_post_status


وردپرس یک پلتفرم بسیار قوی برای وبلاگ‌نویسی و مدیریت محتوا است و یکی از ویژگی‌های کلیدی آن، سیستم Hook است که به توسعه‌دهندگان این امکان را می‌دهد تا کد خود را به آسانی به هسته وردپرس متصل کنند. یکی از Hook های مهم در وردپرس، transition_post_status است که برای شناسایی وضعیت تغییر پست‌ها استفاده می‌شود. به عنوان مثال، زمانی که یک پست از حالت پیش‌نویس به منتشر شده تغییر وضعیت می‌دهد، این Hook فعال می‌شود.


این Hook یک شیء post و دو وضعیت old_status و new_status را به تابع شما می‌فرستد. این ویژگی به توسعه‌دهندگان امکان می‌دهد تا کارهای خاصی مانند ارسال ایمیل، به‌روزرسانی محتوا یا حتی فعالیت‌های مرتبط با SEO را انجام دهند.


برای استفاده از این Hook، شما باید یک تابع را به آن متصل کنید. این تابع زمانی که وضعیت یک پست تغییر کند، اجرا خواهد شد. فرض کنید می‌خواهیم هنگامی که یک پست منتشر می‌شود، یک پیام به مدیر سایت ارسال کنیم، به راحتی می‌توانیم این کار را با استفاده از transition_post_status انجام دهیم.


خلاصه اینکه، این Hook به شما اجازه می‌دهد تا به سادگی کنترل کنید چه زمانی یک پست در وردپرس وضعیت خود را تغییر می‌دهد و بر اساس آن اقدامات مختلفی را انجام دهید. در ادامه، به تصویر زیر کدی که این مفهوم را به نمایش می‌گذارد می‌پردازیم.


نمونه کد


add_action('transition_post_status', 'my_transition_post_status', 10, 3);

function my_transition_post_status($new_status, $old_status, $post) {
if ('publish' === $new_status && 'draft' === $old_status) {
// کارهایی که می‌خواهید انجام دهید
wp_mail('[email protected]', 'پست جدید منتشر شد', 'پست جدید: ' . get_the_title($post->ID));
}
}

توضیحات کد


add_action('transition_post_status', 'my_transition_post_status', 10, 3);
این خط Hook transition_post_status را به تابع my_transition_post_status متصل می‌کند.

function my_transition_post_status($new_status, $old_status, $post) {
این تابع برای مدیریت تغییر وضعیت پست تعریف شده است و سه پارامتر دریافت می‌کند: وضعیت جدید، وضعیت قدیمی و شیء پست.

if ('publish' === $new_status && 'draft' === $old_status) {
این خط بررسی می‌کند که آیا وضعیت جدید publish و وضعیت قدیمی draft بوده است یا خیر.

wp_mail('[email protected]', 'پست جدید منتشر شد', 'پست جدید: ' . get_the_title($post->ID));
اگر شرایط برآورده شود، یک ایمیل به آدرس مشخص شده ارسال می‌شود و عنوان پست جدیددر آن آورده می‌شود.

سوالات متداول

؟

هوک transition_post_status چه کاربردی دارد؟

؟

چگونه می‌توانم از transition_post_status برای ارسال ایمیل استفاده کنم؟

؟

آیا می‌توانم از transition_post_status برای انواع دیگر وضعیت‌ها نیز استفاده کنم؟