ویژگی تصویر

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

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

در این مقاله، به بررسی نحوه افزودن فیلد سفارشی به پنل مدیریت وردپرس (WordPress) خواهیم پرداخت. این فیلد‌ها می‌توانند شامل فیلدهای متنی، انتخابی، تاریخی یا حتی تصویری باشند و در ساختار کانتنت (محتوا) به منظور تخصیص دادن اطلاعات خاص به هر پست یا صفحه مورد استفاده قرار گیرند. این فرآیند نه تنها کاربران را بهتر در مدیریت محتوا می‌رساند، بلکه به توسعه‌دهندگان امکان می‌دهد تا ساختار داده‌های سفارشی را طراحی کنند.

مفاهیم اساسی

قبل از شروع، باید مفاهیم پایه‌ای را درک کنیم:

  • Custom Fields (فیلدهای سفارشی): فیلد‌هایی که به صورت دستی در وردپرس تعریف شده و می‌توانند برای هر پست یا صفحه اضافه شوند.
  • Meta Boxes: قسمت‌هایی در پنل مدیریت که به کاربران اجازه می‌دهند اطلاعات اضافی را وارد کنند.
  • WordPress Hooks: نقاطی در ساختار وردپرس که امکان افزودن یا تغییر عملکرد را فراهم می‌کنند. مثلاً `add_meta_box` و `save_post`.

روش پیاده‌سازی

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

  1. افزودن فیلد در پنل مدیریت
  2. ذخیره و نمایش اطلاعات

مرحله اول: افزودن فیلد به پنل مدیریت

برای این کار، از فانکشن `add_meta_box` استفاده می‌کنیم. این فانکشن چندین پارامتر دریافت می‌کند:

add_meta_box(
    $id,
    $title,
    $callback,
    $screen,
    $context,
    $priority
);

برای مثال، اگر بخواهیم یک فیلد سفارشی به تمام پست‌ها اضافه کنیم، پارامتر $screen را برابر با 'post' قرار می‌دهیم.

نمونه کد پیاده‌سازی

در اینجا یک نمونه کد برای افزودن فیلد سفارشی به پنل مدیریت وردپرس آورده شده است:

function add_custom_field() {
    add_meta_box(
        'custom_field_box',
        'فیلد سفارشی',
        'custom_field_callback',
        'post',
        'normal',
        'high'
    );
}
add_action('add_meta_boxes', 'add_custom_field');

در این کد، یک متا باکس با عنوان “فیلد سفارشی” در پنل مدیریت پست‌ها ایجاد شده است. این متا باکس به صورت “normal” و با اولویت “high” نمایش داده می‌شود.

نمونه کد فانکشن کالبک

حالا باید فانکشن کالبک را تعریف کنیم:

function custom_field_callback($post) {
    wp_nonce_field('custom_field_nonce', 'custom_field_nonce');
    $value = get_post_meta($post->ID, '_custom_field', true);
    echo '';
    echo '';
}

این کد یک فیلد متنی در پنل مدیریت نمایش می‌دهد. ابتدا یک nonce ایجاد می‌کند تا از امنیت بیشتری برخوردار باشد. سپس مقدار فیلد موجود را از دیتابیس خوانده و نمایش می‌دهد.

مرحله دوم: ذخیره اطلاعات

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

function save_custom_field($post_id) {
    if (!isset($_POST['custom_field_nonce']) || !wp_verify_nonce($_POST['custom_field_nonce'], 'custom_field_nonce')) {
        return;
    }
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }
    if (isset($_POST['custom_field'])) {
        update_post_meta($post_id, '_custom_field', sanitize_text_field($_POST['custom_field']));
    }
}
add_action('save_post', 'save_custom_field');

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

نحوه استفاده در قالب

پس از ذخیره، می‌توانید این فیلد را در قالب (template) نمایش دهید:

$custom_field_value = get_post_meta(get_the_ID(), '_custom_field', true);
echo $custom_field_value;

این کد مقدار فیلد سفارشی را از دیتابیس خوانده و در صفحه نمایش می‌دهد.

بهترین شیوه‌ها

برای افزودن فیلد سفارشی به وردپرس، موارد زیر باید رعایت شوند:

  • استفاده از nonce برای امنیت
  • بررسی دسترسی کاربر قبل از ذخیره
  • استفاده از `sanitize_text_field` یا سایر تابع‌های امنیتی برای اطلاعات ورودی
  • استفاده از `get_post_meta` و `update_post_meta` برای مدیریت داده‌ها

پیشنهادات پیشرفته

برای افزودن فیلدهای پیشرفته‌تر مانند انتخابی یا تاریخی، می‌توانید از کد زیر استفاده کنید:

function custom_field_callback($post) {
    wp_nonce_field('custom_field_nonce', 'custom_field_nonce');
    $value = get_post_meta($post->ID, '_custom_field_select', true);
    echo '';
    echo '';
    echo 'گزینه 1';
    echo 'گزینه 2';
    echo '';
}

این کد فیلد انتخابی را نمایش می‌دهد و به کاربر اجازه می‌دهد گزینه‌های مختلف را انتخاب کند.

جدول مقایسه

نوع فیلداستفادهنمونه کد
متنی<input type="text">sanitize_text_field($_POST['custom_field'])
انتخابی<select>selected($value, 'option1', false)
تاریخی<input type="date">sanitize_text_field($_POST['custom_field_date'])

نکات مهم

همانند دیگر ابزارهای وردپرس، در استفاده از فیلد سفارشی باید به نکات زیر توجه کنید:

  • فیلدهای سفارشی همیشه در دیتابیس ذخیره می‌شوند و نیاز به مدیریت دارند.
  • در صورت استفاده از فیلد‌های پیشرفته، از تابع‌های امنیتی مانند `esc_attr` و `sanitize_text_field` استفاده کنید.
  • فیلدهای سفارشی در هر نوع پست (post, page, custom post type) قابل استفاده هستند.

نکات امنیتی

برای اطمینان از امنیت، از موارد زیر استفاده کنید:

  • استفاده از `wp_nonce_field` و `wp_verify_nonce` برای پیشگیری از CSRF
  • بررسی دسترسی کاربر با `current_user_can`
  • استفاده از `sanitize_text_field` یا سایر تابع‌های خاص برای فیلدهای ورودی

پیاده‌سازی در کانستوم پست‌تایپ

برای افزودن فیلد سفارشی به یک کانستوم پست‌تایپ، باید $screen را به نام پست‌تایپ تغییر دهید:

add_meta_box(
    'custom_field_box',
    'فیلد سفارشی',
    'custom_field_callback',
    'your_custom_post_type',
    'normal',
    'high'
);

این کد فیلد را در پنل مدیریت کانستوم پست‌تایپ اضافه می‌کند.

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

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