با سلام خدمت شما همراهان گرامی قلب وردپرس , در خدمت شما هستیم با آموزش اضافه کردن یک وضعیت نوشته به وردپرس
شاید تا بحال به این فکر کرده باشید که یک وضعیت جدید را به نوشته های وردپرس خود اضافه کنید
اما برایتان سوال بوده است که چگونه ؟
خب در این آموزش به کمک هم یک وضعیت جدید را تحت عنوان ” رد شده ” به نوشته های خود اضافه میکنیم
باید توجه داشت که از این وضعیت ها میتوان استفاده های زیادی کرد حتی وضعیت نوشته را به
کاربر ارسال کننده نوشته ارسال کرد و یا برای خودتان در پیشخوان این وضعیت را مدیریت کنید!
با اضافه کردن این وضعیت جدید به نوشته ها , تب جدید به بخش همه نوشته های شما اضافه خواهد شد
و همینطور این وضعیت از بخش تنظیمات نوشته ها قابل مدیریت و انتخاب است.
زمان رو ذخیره کنیم !
خب به سراغ نوشتن کدها میریم و شروع میکنیم کدهای مربوط به اضافه کردن وضعیت جدید را
به فایل فانکشن قالبمان اضافه کنیم!
توجه :
قبل از انجام هرکار یک نسخه پشتیبانی از سایت خود تهیه کنید.
خب در مرحله اول به کمک تابع 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 'این نوشته رد شده است';
}
به این ترتیب این آموزش ما به پایان میرسه و برای شما آرزوی موفقیت میکنم.
برا مشاهده ویدیو های آموزشی میتوانید به کانال آپارات ما مراجعه کنید.
در صورت بروز هرگونه سوال و مشکل لطفا از طریق دیدگاه ها با ما در ارتباط باشید.
قلب وردپرس , دریچه ای تخصصی رو به یادگیری وردپرس