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

فرض کنید چند فیلد سفارشی برای نوشته ها در وردپرس اضافه کرده اید و می خواهید کاربران مدیر سایت براحتی آنها را ویرایش کنند چطور می توانید کاری کنید که کاربر با کلیک روی لینک ویرایش سریع هر پست ، این فیلدها را هم مشاهده کند و بتواند ویرایش کند و هر بار مجبور نباشد پنجره اصلی ویرایش نوشته را باز کند؟

با مطالعه نحوه اضافه کردن فیلد سفارشی به نوشته ها می توانید با روش اضافه کردن فیلد های دلخواه به نوشته آشنا شوید، این فیلدها در پنجره اصلی ویرایش در دسترس خواهد بود .

اضافه کردن فیلد به پانل ویرایش سریع

در این بخش آموزش می دهیم تا فیلدهای سفارشی اضافه شده را به پانل ویرایش سریع وردپرس را هم اضافه کنید. دستورات زیر را می توانید در ادامه همان افزونه ای که فیلد جدید برای پست ها تعریف می کند، اضافه کنید یا در فایل functions.php بنویسید.

برای این کار باید تابع زیر را به تابع quick_edit_custom_box از وردپرس قلاب کنید:


<?php
add_action('quick_edit_custom_box', 'cn_quickedit_show', 10, 2);
function cn_quickedit_show( $col, $type ) {
if( $type != 'post' ) return;
global  $post;
$pos=get_post_meta( $post->ID, 'field1', true);
?>
<fieldset class="inline-edit-col-left">
    <div class="inline-edit-col">
        <div class="inline-edit-group">
            <label for="position" style="font: italic 12px Georgia, serif;">Field1 label</label>
            <span class="input-text-wrap">
                    <input type="text" name="field1" id="field1" style="width:50px;" size="3" value="<?php echo $field1; ?>">
                </span>
        </div>
    </div>
</fieldset>

<?php
}

در قطعه کد فوق فرض شده است قبلاً فیلد سفارشی جدیدی با نام field1 قبلاً به پست ها اضافه کرده اید. ابتدا تابع جدید cn_quickedit_show به تابع وردپرسی quick_edit_custom_box قلاب شده و در ادامه تابع پیاده سازی شده است.

در داخل تابع اول بررسی شده که نوع پست حتماً post باشد و مقدار قبلی مربوط به فیلد سفارشی استخراج شده است. در ادامه تگ هایی برای طراحی وورد و همچنین تگ input پیاده سازی شده است. تگ input دارای نام field1 است و مقدارپیش فرض آن هم مقدار قبلی فیلد field1.

ذخیره کردن تغییرات فیلد

بعد از اینکه فیلد جدید در پانل ویرایش سریع نشان داده شد باید دستوراتی بنویسیم تا تغییرات فیلد را ذخیره کند. برای این کار تابع جدیدی به نام cn_quickedit_save پیاده سازی کرده و آن را به تابع  save_post از وردپرس قلاب می زنیم:

add_action('save_post','cn_quickedit_save',10,3);
function cn_quickedit_save($post_id, $post) {
    if( $post->post_type != 'post' ) return;
    update_post_meta($post_id, 'field1', $_POST['field1']);
}

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

 

<?php
add_action('quick_edit_custom_box', 'cn_quickedit_show', 10, 2);
function cn_quickedit_show( $col, $type ) {
if( $type != 'post' ) return;
global  $post;
$pos=get_post_meta( $post->ID, 'field1', true);
?>
<fieldset class="inline-edit-col-left">
    <div class="inline-edit-col">
        <div class="inline-edit-group">
            <label for="position" style="font: italic 12px Georgia, serif;">Field1 label</label>
            <span class="input-text-wrap">
                    <input type="text" name="field1" id="field1" style="width:50px;" size="3" value="<?php echo $field1; ?>">
                </span>
        </div>
    </div>
</fieldset>
<?php
}
add_action('save_post','cn_quickedit_save',10,3);
function cn_quickedit_save($post_id, $post) {
    if( $post->post_type != 'post' ) return;
    update_post_meta($post_id, 'field1', $_POST['field1']);
}
?>

موفق باشید …

 

 

نمایش قابل چاپ