wordpress添加自定义文章状态和获取调用文章状态
前言
我有个企业网站,一个简单商品展示型的那种网站,我想删除商品,但是还想让他不显示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/