我正在为我的客户构建一个目录主题,我希望通过将帖子状态从发布修改为过期来在帖子中添加过期功能。
为实现这一目标,我尝试使用以下代码注册新的帖子状态:
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帖子中的已注册帖子状态。
我做错了吗?
答案 0 :(得分:7)
感谢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>';
}
}
答案 1 :(得分:5)
自定义帖子状态功能仍在开发中(与过去四年一样!),请参阅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 :(得分:2)
此功能为still pending for future development
注意: 此功能不会将已注册的帖子状态添加到管理面板。此功能正在等待未来的开发。请参阅Trac Ticket #12706。考虑用于添加此参数的操作挂钩post_submitbox_misc_actions。
答案 3 :(得分:1)
现在是2014年11月,仍然存在自定义状态问题。我认为发布的原始代码很好。这是一个视频,显示了在实现自定义帖子状态时会遇到的问题。可能有一种解决方法,即挂钩帖子查询和进行自定义查询,但我还没有开始研究。
当我使用我的新WTG任务管理器插件时,该截屏视频正在进行中。我会将我的设计保留在插件中,并希望它有助于鼓励改进WordPress的这一领域。
要获得正确答案,我的自定义状态会显示在我的自定义帖子类型的“编辑帖子”屏幕上,以便可以。如果你想查看我的插件注册自定义帖子类型和状态,请转到目录“posttypes / tasks.php”并使用一个工作示例。这是插件官方页面......