web-dev-qa-db-ja.com

ユーザーの役割で投稿/ページへのアクセスを制限する

ユーザーの役割でコンテンツを保護する方法を探しています。

例:

投稿を閲覧するには登録が必要です(フロントエンド)。

ユーザーが購読者の場合、投稿1、2、3を読むことができますが、ユーザーが投稿者の場合、投稿1、2、3、4、5、6 ...を表示できます。

誰もが私がこれを行うことができる方法を知っていますか?

3
Demilio

私は個人的にこれを使用していませんが、おそらくプラグインを見ているでしょう このように

あなたが上記で要求したすべての機能を提供するようです。

1
Vince Pettit

このような条件を使用して、役割contributorを持つログインユーザーにのみプライベート投稿を表示できます。投稿を投稿者に公開するには、投稿を private にするだけです。

<?php 
    if ( have_posts() ) : while ( have_posts() ) : the_post();
        $private = get_post_custom_values("private");
        if (isset($private[0]) && $private == "true") {

            if ( current_user_can( 'contributor' ) ) { //passing role to it may sometime not work
            the_title();
            the_content();
            } else {            // text to show instead the post
                echo 'this post is private, only contributor can view it';
            }

        } else {        // this is visible to all
            the_title();
            the_content();
        }

    endwhile; 
    endif; 
?>
4
amit

投稿を非公開にしてログインユーザーだけに表示できるようにするには、まずカスタムフィールドを追加し、「非公開」と名前を付けて「True」に値を設定します。次に、デフォルトのWPループを次のコードスニペットに置き換えます。

    <?php if (have_posts()) : while (have_posts()) : the_post();

    $private = get_post_custom_values("private");
    if (isset($private[0]) && $private == "true") {
        if (is_user_logged_in()) {
            // Display private post to logged user
        }
    } else {
        // Display public post to everyone
    }

endwhile; endif; ?>
0
Zohair Baloch