【WordPress】投稿者権限のユーザーに自分が投稿した記事だけが見れるようにする方法

WordPressのサイトなりを複数で管理していたり、記事は外注している場合など、他の方が投稿した記事を編集できたり見れてしまったりすると困ったりする場合もあります。

投稿者権限のユーザーに自分の投稿だけがみれるようにする

function show_only_authorpost($query) {
    global $current_user;
    if(is_admin()){
        if(current_user_can('author') ){
            $query->set('author', $current_user->ID);
        }
    }
}
add_action('pre_get_posts', 'show_only_authorpost');

コードの解説

is_admin()

→ 現在のユーザーが管理画面内を閲覧中である場合

current_user_can(‘author’) 

→ また現在のユーザーが投稿者権限である場合

$query->set(‘author’, $current_user->ID); 

→ 投稿を呼び出す処理に自分の投稿した記事のみという条件を付与します

もし、user role editorなどのプラグインで特別な権限を作成した場合は、その権限名を記入する。

例)

if(current_user_can('blog-author') ){
            $query->set('blog-author', $current_user->ID);
        }

投稿者権限のユーザーに自分の投稿したメディアのみが見えるようにするコード

function show_only_authorimage( $where ){
    global $current_user;
    if(is_admin()){
        if(current_user_can('author') ){
            if( isset( $_POST['action'] ) && ( $_POST['action'] == 'query-attachments' ) ){
                $where .= ' AND post_author='.$current_user->data->ID;
            }
        }
    }
    return $where;
}
add_filter( 'posts_where', 'show_only_authorimage' );

コードの解説

isset( $_POST[‘action’] ) && ( $_POST[‘action’] == ‘query-attachments’ ) 

→ 現在ユーザーがメディアリストを呼び出そうとしていることを示しています。

$where .= ‘ AND post_author=’.$current_user->data->ID;

→ このコードは、メディア(画像)の呼び出し処理に自分の投稿したメディアのみという条件を付与します

if(current_user_can('author') ){

上記の4行目 author ではなく、 user role editorなどのプラグインで特別な権限を作成した場合は、その権限名を記入する。 author → blog-author

参考

ワードプレスで投稿者権限で自分が投稿した記事だけが見えるようにする方法 – WPドクターblog
ワードプレスで投稿者権限で自分が投稿した記事だけが見えるようにする方法 ワードプレスの投稿者権限では、記事の投稿だけができるようになっていますね。ただ、ワードプレスは複数の投稿者権限のユーザー全員に他のユーザーが投稿した記事も全て管理画面で...
タイトルとURLをコピーしました