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

Mat*_*ijn 2 wordpress posts

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

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

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

但是,如果有“任何”过滤器挂钩/方法,有人可以指出这一点,我想我可以从那里走得更远。

亲切的问候。

Ric*_*d M 5

您可以使用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;
}
Run Code Online (Sandbox Code Playgroud)