2020.04.11

WordPress管理画面で管理者以外は他人の投稿を表示しない方法

こんにちは、webエンジニアのゾノ( @ozonosho )です。

さて、今回の記事ではWordPress管理画面で管理者以外は他人の投稿を表示しない方法を紹介したいと思います。

WordPress管理画面の投稿ページでは他のユーザーが投稿した記事も表示されますが、多数のライターで運用しているようなサイトの場合、ライターは自分の投稿だけを一覧で確認できたほうが見やすく編集もしやすいです。

WordPress管理画面で管理者以外は他人の投稿を表示しない方法

実装は簡単で、下記のコードをfunctions.phpに追加してください。

function exclude_other_posts( $wp_query ) {
  if (!current_user_can('administrator')) {
    if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) ) {
        $post_type = get_post_type_object( $_REQUEST['post_type'] );
        $cap_type = $post_type->cap->edit_other_posts;
    } else {
        $cap_type = 'edit_others_posts';
    }
    if ( is_admin() && $wp_query->is_main_query() && ! $wp_query->get( 'author' ) && ! current_user_can( $cap_type ) ) {
        $user = wp_get_current_user();
        $wp_query->set( 'author', $user->ID );
    }
  }
}
add_action( 'pre_get_posts', 'exclude_other_posts' );

アクションフック「pre_get_posts」を利用して、投稿一覧を読み込む際に「管理者以外は自分の記事だけを読み込む」という処理を加えてあげました。

おわりに

以上、今回の記事ではWordPress管理画面で管理者以外は他人の投稿を表示しない方法を紹介させていただきました。

当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。

あなたのサイトに理想の機能を実装!WordPressカスタマイズサービス

本サービスはあなたのWordPressサイトに理想の機能を実装するサービスとなります。 どのような機能・要望でも実現可能です! Wo......

→この記事を読む