2

Wordpressのページ( http://cl.ly/6nLC )の「編集」画面に表示されるページを「フィルタリング」することは可能ですか?プラグイン開発者向けのWordpressのアクション/フックセクションを調べましたが、見つかりませんでした。

私が達成しようとしているのは、特定のユーザーは特定のページ(および子ページ)を編集でき、他のユーザーはそれらのページを編集できないが、他のページは編集できる可能性があるということです。

さまざまなユーザーをさまざまなグループに配置できるプラグインを作成しました。このプラグインには、さまざまな権限が必要です。どのユーザーがどのグループのメンバーであり、user_metaテーブルに格納されています。

しかし、これに「任意の」フィルターフック/メソッドがある場合、誰かがこれを指摘できますか、私はそこからさらに進むことができると思います。

敬具。

4

1 に答える 1

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;
}
于 2011-05-16T01:24:59.873 に答える