自定义POST状态不工作

时间:2015-02-01 作者:Tara

我正在尝试创建两个自定义帖子状态”。我用Codex来生成代码,但没有成功。然后我去了http://generatewp.com/post-status 但它也不起作用。它不会显示在“编辑帖子”中“状态”旁边的下拉列表中。

你看到我的代码有什么问题吗?

// ***** http://generatewp.com/post-status **** //

function custom_post_status() {

$args = array(
\'label\' => \'Reserve\',
\'label_count\' => \'Reserve (%s)\',
\'public\' => false,
\'show_in_admin_all_list\' => true,
\'show_in_admin_status_list\' => true,
\'exclude_from_search\' => false,
);
register_post_status( \'Reserve\', $args );

}

add_action( \'init\', \'custom_post_status\', 0 );

function custom_post_status_2() {

$args = array(
\'label\' => \'Ready to be Scheduled\',
\'label_count\' => \'Ready to be Scheduled (%s)\',
\'public\' => false,
\'show_in_admin_all_list\' => true,
\'show_in_admin_status_list\' => true,
\'exclude_from_search\' => false,
);
register_post_status( \'Ready to be Scheduled\', $args );

}

add_action( \'init\', \'custom_post_status_2\', 0 );
谢谢大家!

2 个回复
SO网友:birgire

post状态值似乎是在核心中硬编码的。Here\'s the status box code 对于编辑屏幕:

<span id="post-status-display">
<?php
switch ( $post->post_status ) {
        case \'private\':
                _e(\'Privately Published\');
                break;
        case \'publish\':
                _e(\'Published\');
                break;
        case \'future\':
                _e(\'Scheduled\');
                break;
        case \'pending\':
                _e(\'Pending Review\');
                break;
        case \'draft\':
        case \'auto-draft\':
                _e(\'Draft\');
                break;
}
?>
</span>
TheCodex says:

注意:此函数不会将registered post状态添加到管理面板。此功能尚待将来开发。请参考Trac票据#12706。考虑添加此参数的操作挂钩post\\u submitbox\\u misc\\u操作。

这个#12706 门票是5年前创建的!

因此,我认为目前核心不支持这一点。

如果手动将帖子的状态更改为已注册的自定义帖子状态,那么您将在edit.php 屏幕

在WP 4.1上测试:

当我尝试Codex示例时:

function my_custom_post_status(){
        register_post_status( \'unread\', array(
                \'label\'                     => _x( \'Unread\', \'post\' ),
                \'public\'                    => true,
                \'exclude_from_search\'       => false,
                \'show_in_admin_all_list\'    => true,
                \'show_in_admin_status_list\' => true,
                \'label_count\'               => _n_noop( \'Unread <span class="count">(%s)</span>\', \'Unread <span class="count">(%s)</span>\' ),
        ) );
}
add_action( \'init\', \'my_custom_post_status\' );
并手动将某个职位的职位状态修改为unread, 那么该帖子的状态是not 在元框中显示:

Missing status

另一方面,它显示在edit.php 屏幕:

Shows in the edit.php tabs

SO网友:Privateer

我会将add\\u action的优先级更改为1,看看这是否可以解决问题。

据我所知,优先级必须是1到99(含)之间的整数。

使用0或100+,我相信你的行动永远不会开火。

我还建议您更改注册状态的名称,以匹配现有状态(例如,所有小写字母都没有空格,可能很短)。您可以查看wp\\u posts表的post\\u status列,查看它们有哪些限制,但请尝试:

register_post_status( \'reserve\', $args );

register_post_status( \'ready\', $args );
你的标签会让他们看起来很体面。

结束

相关推荐

子主题函数的正确入队.php

我一开始并没有设置儿童主题,所以现在我正在尝试这样做。我确实激活了儿童主题。我读了一遍POST 仍然无法获得我的孩子主题风格。css先挂接,然后再挂接其他内容。我不太熟悉编码,也不知道如何编写函数。php for my child主题我的父主题使用3个样式表;风格css,自定义。css和绿色。css(后者是将绿色作为按钮等的主要颜色)。当我改变我的孩子主题风格时。css通常不会生效。由于数据库中存在一些缓存问题(我想是因为)一个旧的自定义。css似乎正在开创先例。说来话长,但由于web主机帐户升级迁移出错