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

30 اردیبهشت 1399

نویسنده : قلب وردپرس | دسته بندی: آموزشی | ۰ نظر | ۴۴۹ بازدید

چکیــــــده ...

با سلام خدمت شما همراهان گرامی قلب وردپرس , در خدمت شما هستیم با آموزش اضافه کردن یک وضعیت نوشته به وردپرس شاید تا بحال به این فکر کرده باشید که یک وضعیت جدید را به نوشته های وردپرس خود اضافه کنید اما برایتان سوال بوده است که چگونه ؟   خب در این آموزش […]

اضافه مردن وضعیت نوشته به وردپرس

با سلام خدمت شما همراهان گرامی قلب وردپرس , در خدمت شما هستیم با آموزش اضافه کردن یک وضعیت نوشته به وردپرس

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

اما برایتان سوال بوده است که چگونه ؟

 

خب در این آموزش به کمک هم یک وضعیت جدید را تحت عنوان ” رد شده ” به نوشته های خود اضافه میکنیم

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

کاربر ارسال کننده نوشته ارسال کرد و یا برای خودتان در پیشخوان این وضعیت را مدیریت کنید!

با اضافه کردن این وضعیت جدید به نوشته ها , تب جدید به بخش همه نوشته های شما اضافه خواهد شد

و همینطور این وضعیت از بخش تنظیمات نوشته ها قابل مدیریت و انتخاب است.

زمان رو ذخیره کنیم !

خب به سراغ نوشتن کدها میریم و شروع میکنیم کدهای مربوط به اضافه کردن وضعیت جدید را

به فایل فانکشن قالبمان اضافه کنیم!

توجه :

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

 

خب در مرحله اول به کمک تابع register_post_status یک وضعیت را به شکل کد های زیر اضافه میکنیم و یک آرایه را

باز میکنیم :

 

register_post_status( 'failed', array(
                    'label'                     => 'رد شده',
                    'public'                    => true,
                    'label_count'               => _n_noop( 'رد شده ها <span class="count">(%s)</span>', 'رد شده ها <span class="count">(%s)</span>', 'wpheart_ir' ),
                    'post_type'                 => array( 'post' ), // پست تایپ مورد نظر شما
                    'show_in_admin_all_list'    => true,
                    'show_in_admin_status_list' => true,
                    'show_in_metabox_dropdown'  => true,
                    'show_in_inline_dropdown'   => true,
                    'dashicon'                  => 'dashicons-businessman',
                ) );

خب همانطور که ملاحظه میکنید در این کد ما یک وضعیت جدید را رجیستر کردیم با شناسه failed و عنوان رد شده.

 

و در ادامه با استفاده از برخی شروط و کدهای جی کوئری این وضعیت را به منو انتخابوضعیت نوشته اضافه میکنیم:

پس بنابر این یک کوئری کلی از وردپرس میگیریم و مینویسیم :

 

add_action('admin_footer-post.php',function(){
    global $post;
    $complete = '';
    $label = '';
    if($post->post_type == 'post') {
        if ( $post->post_status == 'failed' ) {
            $complete = ' selected=\"selected\"';
            $label    = 'failed';
        }
        $script = <<<SD
       jQuery(document).ready(function($){
           $("select#post_status").append("<option value=\"failed\" '.$complete.'>رد شده</option>");
           if( "{$post->post_status}" == "failed" ){
                $("span#post-status-display").html("$label");
                $("input#save-post").val("ذخیره به عنوان رد شده");
           }
           var jSelect = $("select#post_status");
           $("a.save-post-status").on("click", function(){
                if( jSelect.val() == "failed" ){
                    $("input#save-post").val("ذخیره به عنوان رد شده");
                }
           });
      });
SD;
        echo '<script type="text/javascript">' . $script . '</script>';
    }
});

 

به این ترتیب ما جی کوئری مورد نظر را نیز به فایل فوتر ادمین برای ویرایش نوشته اضافه کردیم تا وضعیت جدید به نوشته ها اضافه شود.

اکنون ما در بخش مدیریت نوشته در وضعیت نوشته ها وضعیت فوق را مشاهده خواهیم کرد مانند تصویر زیر :

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

حالا اگر بر روی دکمه “قبول” بزنیم به جای کلمه ” ذخیره پیش نویس ” متنی که ما برای ذخیره وضعیت جدید نوشتیم

را خواهیم دید.

یعنی متن : ” ذخیره به عنوان رد شده ” و در نهایت ما وضعیت را به شکل زیر خواهیم دید :

 

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

 

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

کد های زیر را در ادامه به کدهای قبلی خود اضافه میکنم

تا با کوئری های کلی و البته شروط مربوطه وضعیت نوشته را با تکه کدجیکوئری قابل انتخاب و نمایش کنیم.

پس مینویسیم :

 

add_action('admin_footer-edit.php',function() {
    global $post;
    if( $post->post_status == 'post' ) {
        echo "<script>
    jQuery(document).ready( function() {
        jQuery( 'select[name=\"_status\"]' ).append( '<option value=\"failed\">failed</option>' );
    });
    </script>";
    }
});
add_filter( 'display_post_states', function( $statuses ) {
    global $post;

    if( $post->post_type == 'post') {
        if ( get_query_var( 'post_status' ) != 'failed' ) { // not for pages with all posts of this status
            if ( $post->post_status == 'failed' ) {
                return array( 'failed' );
            }
        }
    }
    return $statuses;
});

 

به این ترتیب :

ما یک وضعیت جدید برای نوشته های خود اضافه کردیم با عنوان ” رد شده ” و شناسه “failed” که برای فراخوانی آن

در هر بخشی از قالب و حلقه نوشته ها

میتوان از تکه کد زیر با تابع get_post_field اقدام کرد.

بنابر این برای فراخوانی وضعیت نوشته میتوان به این ترتیب اقدام کرد :

get_post_field('post_status')

 

اگر بخواهیم متن خاصی را اگر وضعیت نوشته ” رد شده ” بود نمایش دهیم با یک شرط ساده این کار را انجام میدهیم.

مثال :

if(get_post_field('post_status')== 'failed'){
echo 'این نوشته رد شده است';
}

 

به این ترتیب این آموزش ما به پایان میرسه و برای شما آرزوی موفقیت میکنم.

برا مشاهده ویدیو های آموزشی میتوانید به کانال آپارات ما مراجعه کنید.

در صورت بروز هرگونه سوال و مشکل لطفا از طریق دیدگاه ها با ما در ارتباط باشید.

 

قلب وردپرس , دریچه ای تخصصی رو به یادگیری وردپرس

قلب وردپرس

قلب وردپرس نویسنده مقاله

مرتضی دریوژه هستم عضو کوچکی از خانواده بزرگ وردپرس که علاقه بسیار زیادی به وردپرس و نشر دانسته و یادگیری بیشتر وردپرس دارم.
هدف از راه اندازی سایت قلب وردپرس ارائه آموزش های تخصصی در زمینه وردپرس به دوستان علاقه مند هست که امیدوارم در این مسیر با سایر اعضای تیم قلب وردپرس موفق باشیم و نیاز شما کارب

0 0 رای
امتیاز شما به این آموزش
عضویت
اطلاع از

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.

0 Comments
Inline Feedbacks
View all comments