自定义帖子状态未显示

时间:2013-11-30 08:52:01

标签: wordpress wordpress-plugin wordpress-theming

我正在为我的客户构建一个目录主题,我希望通过将帖子状态从发布修改为过期来在帖子中添加过期功能。

为实现这一目标,我尝试使用以下代码注册新的帖子状态:

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帖子中的已注册帖子状态。

我做错了吗?

4 个答案:

答案 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月,仍然存在自定义状态问题。我认为发布的原始代码很好。这是一个视频,显示了在实现自定义帖子状态时会遇到的问题。可能有一种解决方法,即挂钩帖子查询和进行自定义查询,但我还没有开始研究。

Screencast of posts not showing in the All table when a custom status is applied, however the posts can be found in the table view for each custom status. Click here to view short clip.

当我使用我的新WTG任务管理器插件时,该截屏视频正在进行中。我会将我的设计保留在插件中,并希望它有助于鼓励改进WordPress的这一领域。

要获得正确答案,我的自定义状态会显示在我的自定义帖子类型的“编辑帖子”屏幕上,以便可以。如果你想查看我的插件注册自定义帖子类型和状态,请转到目录“posttypes / tasks.php”并使用一个工作示例。这是插件官方页面......

https://wordpress.org/plugins/wtg-tasks-manager/