首先,我们来看一下默认情况下文章状态和文章状态可用的内容。在文章发布界面中,我们可以看到有一个带有状态设置选项的发布模块。文章指出WordPress默认内置的是:
- 草稿 – 已保存但尚未完成且尚未发布的文章
- 自动草稿 – WordPress具有自动保存功能,可自动将草稿保存为修订
- 待审核 – 已完成并提交审核但尚未发布的文章
- 未来 – 一篇计划稍后发布的文章,即通过将发布时间设置为将来某个时间点。
- 私有 – 标记为私人的文章,仅在您登录时可见
- 回收 – 添加到回收站的文章
- 继承 – 自动继承其父页面状态的子页面
当然,除了这些默认文章状态之外,我们还可以添加自定义文章状态,如以下代码示例所示:
- // 注册新的文章状态
- function wpdx_add_custom_post_status(){
- register_post_status(‘rejected’, array(
- ‘label’ => _x( ‘Rejected’, ‘post’ ),
- ‘public‘ => false,
- ‘exclude_from_search’ => false,
- ‘show_in_admin_all_list’ => true,
- ‘show_in_admin_status_list’ => true,
- ‘label_count’ => _n_noop( ‘Rejected <span class=“count”>(%s)</span>’, ‘Rejected <span class=“count”>(%s)</span>’ ),
- ) );
- }
- add_action( ‘init’, ‘wpdx_add_custom_post_status’ );
- // 通过 js 添加新的状态到文章编辑页面
- function wpdx_add_post_status_list(){
- global $post;
- $complete = ”;
- $label = ”;
- if($post->post_type == ‘post’){ //只对默认的 post 类型添加
- if($post->post_status == ‘rejected’){
- $complete = ‘ selected=“selected”‘;
- $label = ‘<span id=“post-status-display”> Rejected</span>’;
- }
- echo ‘
- <script>
- jQuery(document).ready(function($){
- $(“select#post_status”).append(“<option value=\”rejected\” ‘.$complete.’>Rejected</option>”);
- $(“.misc-pub-section label”).append(“‘.$label.’”);
- });
- </script>
- ‘;
- }
- }
- add_action(‘admin_footer-post.php’, ‘wpdx_add_post_status_list’);
- add_action(‘admin_footer-post-new.php’, ‘wpdx_add_post_status_list’);
- // 通过 js 添加新的状态到文章列表的快速编辑
- function wpdx_add_custom_status_in_quick_edit() {
- echo “<script>
- jQuery(document).ready( function($) {
- $( ‘select[name=\”_status\”]’ ).append( ‘<option value=\”rejected\”>Rejected</option>’ );
- });
- </script>”;
- }
- add_action(‘admin_footer-edit.php’,’wpdx_add_custom_status_in_quick_edit’);
上面的代码示例注册了一个新文章状态:Rejected,请根据你的实际需要,修改代码中高亮显示的行中的大小写的 Rejected,才能完全设置为你自己的文章状态!
因为WordPress本身有一个错误:新注册的文章状态不会自动添加到设置选择中,所有这些只能通过js添加。这个bug已经提交了好几年了,目前还不清楚为什么没有修复WordPress。
例如,如果我将上述代码的已拒绝更改为提交,则在文章发布模块的状态设置中将有更多“提交”文章状态选择。最终效果如下:
如果您想稍后执行某些操作,例如发送电子邮件通知,请查看插件发布状态通知程序和发布状态通知,以及一个不错的编辑流程。