WordPress の記事一覧で他ユーザーの投稿を非表示にする

http://ja.forums.wordpress.org/topic/15002 への回答例として

他ユーザーの投稿を編集する権限がない場合に、一覧表示から他ユーザーの記事を除外してしまう方法

function exclude_other_posts( $wp_query ) {
	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' );
所有 (1) | すべて (7) | 公開済み (4) | 下書き (3)

の数字が合わなくなってしまうのが気になる方は、CSSで .count に display: none; があたるようにしてください。

「WordPress の記事一覧で他ユーザーの投稿を非表示にする」への3件のフィードバック

  1. こんにちは。
    とても参考になりました。
    この方法ですと、カスタム投稿タイプでは有効にならないようです。

    カスタム投稿タイプの方法も公開いただけると、とてもありがたいです!
    是非ご検討ください!

  2. 参考にさせていただきました。ありがとうございます。
    数字が合わない点が確かに気になっていたので
    CSSでdisplay: none; をあてる、という方法も参考になりました。
    個人的に「所有」「すべて」の内容が結果として同じものになる点も気になっていたので
    応用して、「すべて」のリンクもdisplay: none; で隠しました。

    こんにちはさんがカスタム投稿で有効にならないとコメントされていますが
    私の環境では有効になっているので
    カスタム投稿タイプの管理権限設定が影響しているのかな、と思いました。参考までに。

  3. フォーラムでもお世話になっております。
    前記事の「新アップローダーでもメディア表示をアップロードしたユーザーのみに限定する」と本記事を組み合わせて、初心者ですが複数人投稿型WordPressを構築しております。
    権限を変更し投稿できるようにした寄稿者にはそれらを当てて、おのおのの投稿、メディアは管理画面上で見られないようにし、編集者は管理ページで全部閲覧可能にすることができました。
    しかしながら、投稿はカテゴリーを必ず付けるので、フロントページの記事に表示されるカテゴリーリンクをクリックすると、他寄稿者の同カテゴリー記事がリスト閲覧できてしまいます。
    回避設定としては甘いですが、content.phpのカテゴリーリンクの表示タグを削除することで、フロントページのカテゴリーリスト表示をさせないようにしましたが、直接URL(を想像して記入すれば)見られますし、全記事を確認する編集者がその便利なカテゴリー別リストで表示できず、モヤッとしております。
    フロントページでも寄稿者は自分の記事のみ閲覧できるようにする小技は不可能でしょか?
    あるいは、投稿記事そのものに管理権限グループ別閲覧表示させる方法といった切り分け風味な小技とかはないでしょうか?
    ご教授をよろしくお願いいたします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です