Wordpress,在管理员编辑屏幕中过滤页面

时间:2011-05-15 21:17:09

标签: wordpress posts

是否可以“过滤”Wordpress中页面(http://cl.ly/6nLC)的“编辑”屏幕中显示哪些页面?我已经查看了Wordpress的动作/钩子部分的插件开发人员,但我找不到任何。

我想要完成的是某些用户可以编辑某些页面(和子页面),而其他人不能编辑这些页面,但可能能够编辑其他页面。

我已经编写了一个插件,可以将不同的用户放在不同的组中,现在只需要拥有不同的权限,哪个用户是哪个组的成员存储在user_meta表中。

然而,如果有“任何”过滤器钩子/方法,有人可以指出这一点,我想我将能够从那里走得更远。

亲切的问候。

1 个答案:

答案 0 :(得分:4)

您可以使用posts_where过滤器向SQL查询添加条件以过滤掉某些页面。可以使用load-{filename}操作来确保仅在管理页面时应用过滤器。

add_action('load-edit.php', 'my_load_edit_php_action');
function my_load_edit_php_action() {
  if ($_GET['post_type'] !== 'page') return;
  add_filter('posts_where', 'my_posts_where_filter');
}

function my_posts_where_filter($sql) {
  if (current_user_can('your_capability')) {
    global $wpdb;
    $sql = " AND $wpdb->posts.ID NOT IN (1,2,3)" . $sql;
  }
  return $sql;
}