要取消发布的默认页面-可能吗?

时间:2013-02-08 作者:J. Chin

是否可以将创建的每个新页面的默认状态更改为“未发布”?

我们希望有人帮助我们将页面添加到网站,但在(所有页面)被批准上线之前,不要让它们在默认情况下显示出来。

如有建议,将不胜感激。

3 个回复
SO网友:Sunyatasattva

你的问题有一个非常简单的解决方案。只需通过Wp_Role 班Wordpress具有以下功能Submitting for Review 默认情况下,对于作者和贡献者是活动的,但是,如果要使用页面,必须为他们提供edit_pages 能力,但不是publish_pages 一个,这样他们就可以Add new pages 而不能Publish 他们这将激活Submit for review 按钮,而不是Publish

想想这样的事情:

function my_authors_can_help_with_pages() {

    $user_role = get_role( \'author\' );
    $user_role->add_cap( \'edit_pages\' );

}
然后钩住某个地方,无论是在插件中还是functions.php, 例如:

add_action(\'init\', \'my_authors_can_help_with_pages\');
理想情况下,使用运行次数最少的挂钩,如after_setup_theme 如果它在你的主题中。一旦您添加了该功能,就不需要多次添加:它不会有太大的坏处,也不是一个真正的性能问题,我想这更多的是一个优雅的问题。

SO网友:gteh

之前在上发布了类似的内容https://stackoverflow.com/questions/5007748/modifying-wordpress-post-status-on-publish

这允许您添加一个过滤器,在发布帖子时更改帖子状态。然而,birgire关于Contributor用户的评论可能更符合您的需要。投稿者可以登录并创建帖子,这些帖子在您登录并批准之前不会发布。

add_filter(\'wp_insert_post_data\', \'my_post_data_validator\', \'99\');
function my_post_data_validator($data) {
  if ($data[\'post_type\'] == \'post\') {
    // If post data is invalid then
    $data[\'post_status\'] = \'draft\';
    add_filter(\'redirect_post_location\', \'my_post_redirect_filter\', \'99\');
  }
  return $data;
}

function my_post_redirect_filter($location) {
  remove_filter(\'redirect_post_location\', __FILTER__, \'99\');
  return add_query_arg(\'my_message\', 1, $location);
}

add_action(\'admin_notices\', \'my_post_admin_notices\');
function my_post_admin_notices() {
  if (!isset($_GET[\'my_message\'])) return;
  switch (absint($_GET[\'my_message\'])) {
    case 1:
      $message = \'Invalid post data\';
      break;
    default:
      $message = \'Unexpected error\';
  }
  echo \'<div id="notice" class="error"><p>\' . $message . \'</p></div>\';
}

SO网友:montrealist

创建新页面时,“发布”元框中有两个按钮可用:\'Save Draft\' 和\'Publish\'. 您只需指示此人始终单击“保存草稿”,而不要单击“发布”。稍后,您可以通过单击“发布”进入并发布所有已批准的页面。这有意义吗?

结束

相关推荐

为什么不能在自定义小部件中使用wp_EDITOR?

我一直在开发一个插件,添加一个小部件,允许您使用所见即所得编辑器编辑内容。我想通过调用wp_editor(). 我看到有人说你做不到这一点,果然,当你尝试更新小部件内容时,它崩溃了。有人能解释一下原因吗wp_editor() 不能在小部件中使用?我希望一旦我知道它为什么不起作用,我就想知道如何绕过它。然而,Chrome不会在控制台中显示任何错误,所以我不确定它会显示出什么情况。谢谢,goldentoa11