ویژگی تصویر

آموزش تابع remove_theme_mod() در وردپرس و کاربرد آن

  /  وردپرس   /  تابع remove_theme_mod در وردپرس
بنر تبلیغاتی الف
wp - wordpress - وردپرس

تابع remove_theme_mod() یکی از توابع مهم API سفارشی‌سازی (Customizer) در وردپرس است که برای حذف یک مودیفیکیشن (theme modification) ذخیره‌شده در تنظیمات قالب استفاده می‌شود. در این مقاله به صورت دقیق عملکرد، کاربردها، نمونه‌های عملی و نکات حرفه‌ای پیرامون این تابع را بررسی می‌کنیم.

مودیفیکیشن‌های قالب چیست و کجا ذخیره می‌شوند؟

مودیفیکیشن‌های قالب (theme mods) مقادیر تنظیماتی هستند که با استفاده از Customizer یا توابعی مانند set_theme_mod() ذخیره می‌شوند—مانند لوگو، رنگ‌ها یا متن‌های سفارشی. این مقادیر در جدول options پایگاه‌داده در گزینه‌ای با نام theme_mods_{stylesheet} ذخیره می‌شوند (برای هر قالب یک مجموعه جداگانه).

تعریف و مقدار بازگشتی remove_theme_mod()

امضای تابع ساده است:

remove_theme_mod( $name );

پارامتر $name نام مودیفیکیشنی است که می‌خواهید حذف شود. تابع در صورت موفقیت معمولاً مقدار بولی true و در صورت عدم وجود آن مودیفیکیشن یا عدم تغییر false بازمی‌گرداند.

مثال ساده: حذف یک مودیفیکیشن

if ( remove_theme_mod( 'header_logo' ) ) {
    // موفقیت‌آمیز: می‌توانیم پیام لاگ یا بازنشانی‌های لازم را انجام دهیم
} else {
    // مودیفیکیشن وجود نداشته یا حذف نشد
}

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

حذف تمام مودیفیکیشن‌ها

گاهی لازم است تمام تنظیمات قالب بازنشانی شوند. برای این کار می‌توان از تابع remove_theme_mods() (جمع) استفاده کرد که کلیه مودیفیکیشن‌های قالب جاری را حذف می‌کند.

remove_theme_mods();  // تمام مودیفیکیشن‌ها پاک می‌شوند

این تابع مرتباً برای بازنشانی کامل قالب کاربرد دارد، اما احتیاط کنید چون همه‌چیز از بین می‌رود و قابل بازیابی آسان نیست مگر نسخه پشتیبان داشته باشید.

استفاده در هوک‌ها: مثال با switch_theme

گاهی می‌خواهیم هنگام تعویض قالب، برخی یا همه مودیفیکیشن‌ها را پاک کنیم. بهترین نقطه برای این کار هوک switch_theme است:

add_action( 'switch_theme', 'mytheme_clear_theme_mods_on_switch' );
function mytheme_clear_theme_mods_on_switch() {
    // پاک کردن یک تنظیم خاص
    remove_theme_mod( 'footer_text' );

    // یا پاک کردن همه تنظیمات قالب
    // remove_theme_mods();
}

کد بالا هنگام تغییر قالب اجرا می‌شود و مودیفیکیشن موردنظر (یا همه) را حذف می‌کند. این الگو برای جلوگیری از باقی‌ماندن تنظیمات نامرتبط بین قالب‌ها مفید است.

نمونه کاربردی: بازنشانی تنظیم از طریق AJAX

در رابط مدیریت ممکن است بخواهید دکمه‌ای برای بازنشانی یک تنظیم خاص قرار دهید. مثال زیر نشان می‌دهد چگونه با استفاده از AJAX و بررسی دسترسی، مودیفیکیشن حذف شود:

add_action( 'wp_ajax_reset_custom_mod', 'ajax_reset_custom_mod' );
function ajax_reset_custom_mod() {
    // بررسی دسترسی و nonce
    if ( ! current_user_can( 'edit_theme_options' ) || ! check_ajax_referer( 'reset_mod_nonce', 'nonce', false ) ) {
        wp_send_json_error( array( 'message' => 'Unauthorized' ), 403 );
    }

    $mod_name = isset( $_POST['mod_name'] ) ? sanitize_text_field( wp_unslash( $_POST['mod_name'] ) ) : '';
    if ( $mod_name && remove_theme_mod( $mod_name ) ) {
        wp_send_json_success( array( 'message' => 'Reset successful' ) );
    }

    wp_send_json_error( array( 'message' => 'Reset failed' ) );
}

توضیح: این تابع AJAX ابتدا بررسی می‌کند که کاربر توانایی و nonce معتبر دارد یا خیر. سپس نام مودیفیکیشن را از درخواست دریافت و پاک‌سازی می‌کند و با remove_theme_mod آن را حذف می‌کند. در نهایت جواب JSON مناسب ارسال می‌کند. این الگو امنیت و اعتبارسنجی را رعایت می‌کند.

نکات حرفه‌ای و موارد احتیاط

  • همیشه قبل از حذف بررسی دسترسی (capabilities) انجام دهید تا تنظیمات کاربران غیرمجاز تغییر نکند.
  • حذف مودیفیکیشن ممکن است نیاز به پاک‌سازی کش داشته باشد تا کاربران تغییرات را ببینند.
  • اگر می‌خواهید بازگشت‌پذیری فراهم کنید، قبل از حذف نسخه پشتیبان از گزینه‌های theme_mods بگیرید.
  • remove_theme_mod فقط مودیفیکیشن‌های قالب جاری را دستکاری می‌کند؛ گزینه‌های جداگانه در options با نام‌های دیگر دست‌خوش تغییر نخواهند شد.
  • برای پاک‌سازی کامل در uninstall یا switch بهتر است از remove_theme_mods() یا حذف مستقیم گزینه theme_mods_{stylesheet} استفاده کنید، ولی با احتیاط.

مقایسه توابع مرتبط

تابعکاربرد
get_theme_mod()خواندن مقدار مودیفیکیشن با مقدار پیش‌فرض
set_theme_mod()ذخیره یا بروزرسانی یک مودیفیکیشن
remove_theme_mod()حذف یک مودیفیکیشن خاص
remove_theme_mods()حذف همه مودیفیکیشن‌های قالب جاری

خلاصه و بهترین شیوه‌ها

تابع remove_theme_mod() ابزار ساده و مؤثری برای مدیریت تنظیمات قالب در وردپرس است. آن را در جاهایی به کار ببرید که نیاز به بازنشانی یا حذف یک مقدار خاص دارید، اما همیشه موارد امنیتی مانند قابلیت‌ها و nonce را رعایت کنید. برای پاک‌سازی کلی، remove_theme_mods() را با احتیاط استفاده کنید و قبل از تغییرات مهم از داده‌ها نسخه پشتیبان تهیه کنید.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: