web-dev-qa-db-ja.com

ユーザーのログインに基づいてコンテンツを表示する

これが可能かどうか私は思っていました。自分に割り当てられているすべての作業を見ることができるクライアントポータルを作成しました(これはすべてフロントエンドに表示されています)。ログインすると、ページにリダイレクトされます。現在のユーザーに関連するプロジェクトを表示するために以下のコードを使用しています

 <?php if ( is_user_logged_in() ) : function filter_posts_by_author( $query ) { 
        global $current_user; get_currentuserinfo();
        $query->set( 'author', $current_user->ID );
      }
        add_action( 'pre_get_posts', 'filter_posts_by_author' );?> 
 <h2>Post Goes here</h2>
 <?php else: wp_die('Sorry, you do not have access to this page. Please <a href="/#/">sign in</a> to view this page.');endif; ?>

これは完璧に機能します。私が考えようとしている問題は、あなたが管理者としてログインしているときにすべてのユーザからのすべての投稿を表示する方法です(フロントエンドで)

私はこれを試したが、それはそれからすべてのクライアントと管理者への投稿の全てを表示する

 <?php if ( is_user_logged_in() ) : function filter_posts_by_author( $query ) { 
        global $current_user; get_currentuserinfo();
        $query->set( 'author, administrator', $current_user->ID );
      }
        add_action( 'pre_get_posts', 'filter_posts_by_author' );?> 

管理者がログインしたらすべての投稿を表示し、ユーザーがログインしたときに選択した投稿のみを表示するにはどうすればよいですか。

1
user3756781

現在のユーザーがログインしていて、管理者ではない場合は、現在のユーザーからすべての投稿を取得します。

<?php 
    function filter_posts_by_author( $query ) {
        if( is_user_logged_in() ) {
            if( !current_user_can( 'administrator' ) ) {
                global $current_user; 
                get_currentuserinfo();
                $query->set( 'author', $current_user->ID );
            }
        }
        else {
            wp_die('Sorry, you do not have access to this page. Please <a href="/#/">sign in</a> to view this page.');
        }
    }
    add_action( 'pre_get_posts', 'filter_posts_by_author' );
?>
1
Howdy_McGee