آشنایی با 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));
اگر شرایط برآورده شود، یک ایمیل به آدرس مشخص شده ارسال میشود و عنوان پست جدیددر آن آورده میشود.