ویژگی تصویر

افزودن متاباکس سفارشی در وردپرس

  /  وردپرس   /  افزودن متاباکس سفارشی در وردپرس
بنر تبلیغاتی الف
wp - wordpress - وردپرس

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

مزایای استفاده از متاباکس سفارشی

  • افزایش انعطاف‌پذیری: امکان افزودن فیلدهای اختصاصی بدون تغییر قالب اصلی.
  • سفارشی‌سازی بهتر: ایجاد رابط کاربری اختصاصی برای ویرایش پست‌ها.
  • مدیریت داده‌ها: ذخیره و بازیابی داده‌های اضافی مرتبط با پست‌ها.

مرحله اول: ثبت متاباکس با استفاده از hook‌ها

برای ایجاد متاباکس، ابتدا باید از hook add_meta_boxes استفاده کنیم. این hook اجازه می‌دهد متاباکس‌ها در بخش ویرایش پست ثبت شوند.

function my_custom_meta_box() {
    add_meta_box(
        'my_meta_box_id',       // شناسه یکتا متاباکس
        'اطلاعات اضافی',        // عنوان متاباکس
        'my_meta_box_callback', // تابع نمایش متاباکس
        'post',                 // نوع پست (post, page, custom post type)
        'normal',               // مکان نمایش (normal, side, advanced)
        'default'               // اولویت نمایش (default, high, low)
    );
}
add_action('add_meta_boxes', 'my_custom_meta_box');

در این مثال، یک متاباکس برای پست‌ها ثبت شده است. my_meta_box_callback تابعی است که محتویات متاباکس را نمایش می‌دهد.

مرحله دوم: نمایش فیلدهای متاباکس

در تابع callback می‌توانیم فیلدهای HTML موردنظر را نمایش دهیم:

function my_meta_box_callback($post) {
    // افزودن nonce برای امنیت
    wp_nonce_field('my_meta_box_nonce_action', 'my_meta_box_nonce');
    
    // بازیابی مقدار ذخیره شده
    $value = get_post_meta($post->ID, '_my_meta_key', true);
    
    echo '<label for="my_meta_field">متن نمونه:</label> ';
    echo '<input type="text" id="my_meta_field" name="my_meta_field" value="' . esc_attr($value) . '" size="25" />';
}

در اینجا، از get_post_meta برای بازیابی داده‌های ذخیره‌شده استفاده شده و یک فیلد متنی ساده نمایش داده می‌شود. همچنین wp_nonce_field برای امنیت فرم استفاده شده است.

مرحله سوم: ذخیره داده‌های متاباکس

برای ذخیره اطلاعات وارد شده توسط کاربر، از hook save_post استفاده می‌کنیم:

function my_save_meta_box_data($post_id) {
    // بررسی nonce
    if (!isset($_POST['my_meta_box_nonce']) || 
        !wp_verify_nonce($_POST['my_meta_box_nonce'], 'my_meta_box_nonce_action')) {
        return;
    }

    // جلوگیری از ذخیره خودکار
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    // بررسی مجوز کاربر
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }

    // ذخیره داده‌ها
    if (isset($_POST['my_meta_field'])) {
        update_post_meta($post_id, '_my_meta_key', sanitize_text_field($_POST['my_meta_field']));
    }
}
add_action('save_post', 'my_save_meta_box_data');

در این کد:

  • با استفاده از wp_verify_nonce امنیت فرم بررسی می‌شود.
  • با شرط DOING_AUTOSAVE از ذخیره خودکار جلوگیری می‌کنیم.
  • با current_user_can مطمئن می‌شویم کاربر دسترسی لازم برای ویرایش پست را دارد.
  • در نهایت، داده‌ها با update_post_meta ذخیره می‌شوند و قبل از ذخیره با sanitize_text_field پاکسازی می‌شوند.

بهترین شیوه‌ها برای متاباکس‌های سفارشی

  • همیشه از nonce برای امنیت فرم استفاده کنید.
  • نام‌های کلید متاباکس را با پیشوند مناسب انتخاب کنید تا از تداخل با افزونه‌ها جلوگیری شود.
  • داده‌ها را قبل از ذخیره حتماً پاکسازی و اعتبارسنجی کنید.
  • از hookهای مناسب وردپرس برای ثبت، نمایش و ذخیره داده‌ها استفاده کنید.
  • در صورت اضافه کردن فیلدهای متعدد، از آرایه‌ها و متادیتای ساختاریافته استفاده کنید.

نمونه پیشرفته: افزودن فیلد انتخابی (select)

function my_meta_box_callback($post) {
    wp_nonce_field('my_meta_box_nonce_action', 'my_meta_box_nonce');
    
    $value = get_post_meta($post->ID, '_my_meta_select', true);
    $options = array(
        'option1' => 'گزینه ۱',
        'option2' => 'گزینه ۲',
        'option3' => 'گزینه ۳'
    );
    
    echo '<label for="my_meta_select">انتخاب کنید:</label> ';
    echo '<select name="my_meta_select" id="my_meta_select">';
    foreach($options as $key => $label) {
        $selected = ($value == $key) ? 'selected' : '';
        echo '<option value="' . esc_attr($key) . '" ' . $selected . '>' . esc_html($label) . '</option>';
    }
    echo '</select>';
}

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

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

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

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