wordpress添加自定义文章状态和获取调用文章状态

2020-07-30 12:27  

前言

我有个企业网站,一个简单商品展示型的那种网站,我想删除商品,但是还想让他不显示404页面,玩wordpress的都知道,文章只有发布出去,才会显示出来,

我想让他像京东那类电商网站一样,商品直接显示已经下架,

于是就在想,如果能给文章添加个自定义的状态,我可以通过文章状态来判断后续,

注册文章状态 下架

// 注册新的文章状态
add_action('init', function () {
    register_post_status('down', array(
        'label' => _x('下架', 'post'),
        'public' => true,
        'exclude_from_search' => false,
        'show_in_admin_all_list' => true,
        'show_in_admin_status_list' => true,
        'label_count' => _n_noop('下架 <span class="count">(%s)</span>', '下架 <span class="count">(%s)</span>'),
    ));
});

文章编辑那里,添加文章状态下拉选项

// 通过js添加新的状态到文章编辑页面
add_action('admin_footer-post.php', function () {
    global $post;
    $complete = '';
    $label = 0;
    if ($post->post_type == 'post') {  //只对默认的post类型添加
        if ($post->post_status == 'down') {
            $complete = ' selected=\"selected\"';
            $label = 1;
        }
        echo '
		<script>
		jQuery(document).ready(function($){
		    
		    $label = ' . $label . ';
			$("select#post_status").append("<option value=\"down\" ' . $complete . '>下架</option>");
		    if($label){
		       if($(".misc-pub-section.misc-pub-post-status").children().length>0){
			   $(".misc-pub-section.misc-pub-post-status").find("span#post-status-display").html("下架")
			    } 
		    }
		});
		</script>
		';
    }
});

文章列表,快速编辑那里,添加下拉选项

// 通过js添加新的状态到文章列表的快速编辑
add_action('admin_footer-edit.php', function () {
    echo "<script>
        jQuery(document).ready( function($) {
            $( 'select[name=\"_status\"]' ).append( '<option value=\"down\">下架</option>' );      
        }); 
        </script>";
});

文章列表那里,文章名后面显示文章状态

//添加自定义文章状态到文章类型列表
add_filter('display_post_states', function ($states) {
    global $post;
    $arg = get_query_var('post_status');
    if ($arg != 'down') {
        if ($post->post_status == 'down') {
            return array('下架');
        }
    }
    return $states;
});

取文章状态

这里可以调用文章状态,判断一下后面要干的事情

<?php get_post_status($ID); ?>

参考:

https://www.wpdaxue.com/add-custom-post-status-for-posts-in-wordpress.html

https://www.wpzhiku.com/register-post-status/

https://developer.wordpress.org/reference/functions/register_post_status/

http://www.shouce.ren/api/view/a/10484

发表评论

电子邮件地址不会被公开。 必填项已用*标注