我正在为我的客户构建目录主题, 并且我想通过将帖子状态从发布更改为过期来在帖子中添加过期功能。
为此, 我尝试使用以下代码注册新的帖子状态:
add_action('init', 'registerStatus', 0);
function registerStatus()
{
$args = array(
'label' => _x('Expired', 'Status General Name', 'z' ), 'label_count' => _n_noop('Expired (%s)', 'Expired (%s)', 'z'), 'public' => true, 'show_in_admin_all_list' => true, 'show_in_admin_status_list' => true, 'exclude_from_search' => true
);
register_post_status('expired', $args);
}
问题是我在自定义帖子类型的帖子状态中都无法在WordPress帖子中看到注册的帖子状态。
难道我做错了什么?
#1
自定义帖子状态功能仍在开发中(就像过去四年一样!), 请参阅https://core.trac.wordpress.org/ticket/12706, 以及有关https://wordpress.stackexchange.com的评论/ q / 67655/25765。此处提供更多有用的信息:https://wordpress.stackexchange.com/search?q=register_post_status。
就个人而言, 我强烈不建议实现自定义帖子状态, 但是如果确实需要, 你可以看看Edit Flow插件如何处理它。
#2
多亏了Ryan Bayne, 我得以将自定义帖子状态添加到编辑帖子页面上的管理面板中。没有可用的wordpress过滤器。他的jQuery解决方案非常完美。如果其他人正在寻找解决方案, 请在此处找到代码:
add_action( 'post_submitbox_misc_actions', 'my_post_submitbox_misc_actions' );
function my_post_submitbox_misc_actions(){
global $post;
//only when editing a post
if( $post->post_type == 'post' ){
// custom post status: approved
$complete = '';
$label = '';
if( $post->post_status == 'approved' ){
$complete = 'selected=\"selected\"';
$label = '<span id=\"post-status-display\"> Approved</span>';
}
echo '<script>'.
'jQuery(document).ready(function($){'.
'$("select#post_status").append('.
'"<option value=\"approved\" '.$complete.'>'.
'Approved'.
'</option>"'.
');'.
'$(".misc-pub-section label").append("'.$label.'");'.
'});'.
'</script>';
}
}
#3
此功能仍在等待将来的开发
注意:此功能不会将注册的帖子状态添加到管理面板。此功能有待开发。请参阅Trac票证#12706。考虑添加该参数的动作挂钩post_submitbox_misc_actions。
#4
现在是2014年11月, 自定义状态仍然存在问题。我认为发布的原始代码很好。这是一段视频, 显示了实现自定义帖子状态时你会遇到的问题。可能有一种解决方法, 即挂在帖子查询中并进行自定义查询, 但我尚未开始研究。
应用自定义状态时, 帖子的屏幕快照未显示在”全部”表中, 但是可以在表视图中找到每种自定义状态的帖子。单击此处查看短片。
该截屏视频是在我处理新的WTG Tasks Manager插件时进行的。我将把设计留在插件中, 希望它能鼓励鼓励在WordPress方面进行改进。
为了获得正确的答案…我的自定义状态确实会在”我的自定义帖子”类型的”编辑帖子”屏幕上显示, 以便可以实现。如果要查看我的插件, 请注册自定义帖子类型和状态, 然后转到目录” posttypes / tasks.php”, 并使用一个可用的示例。这是插件的官方页面…
WTG Tasks Manager Beta
评论前必须登录!
注册