ログインしていないユーザーにはコンテンツを表示しない方法 のコードをご紹介いたします。

1 ワードプレスのコンテンツ出力時にフィルターを設定します

add_filter( 'the_content', 'hide_content_whoisnot_login' );
function hide_content_whoisnot_login( $content ) {
    if ( (is_single() || is_page()) && in_the_loop() && is_main_query() && is_page( array( 1,2,3 ) ) {
        //ここで$contentsを置き換えて出力(return)します
        return $content;
    }
    return $content;
}

上記コードでは、the_content というコンテンツの出力前にその内容を取得して加工できるフィルターという仕組みを使います。
return $content; にてそのまま受け取ったコンテンツを返せば、何も起こらずそのままコンテンツが出力されます。

is_single() || is_page()) && in_the_loop() && is_main_query() は固定ページまたは、投稿ページが表示されているときという条件分岐です。

is_page( array( 1,2,3 ) の部分は投稿idが1,2,3 のときのみという条件になります。(ここにお好きなページidを指定することで任意のページでこのプログラムが実行されるようにできます。)

2 条件に一致するページでのみ、コンテンツを出力せずにログインリンクを出力します

$contents = "このページを表示するには<a href='".wp_login_url()."'>ログイン</a>してください";

このコードによって、本来の出力コンテンツをログインリンクに置き換えてしまいます。
wp_login_url() はログインURLを取得するのに使用できるワードプレスの組み込み関数です。

完成のコードは下記となります。テーマのFunctions.phpなどに記載すると動作するようになります。

add_filter( 'the_content', 'hide_content_whoisnot_login' );
function hide_content_whoisnot_login( $content ) {
    if ( (is_single() || is_page()) && in_the_loop() && is_main_query() && is_page( array( 1,2,3 ) ) {
        $contents = "このページを表示するには<a href='".wp_login_url()."'>ログイン</a>してください";
        return $content;
    }
    return $content;
}

WordPress ワードプレスのテーマのカスタマイズ、プラグインの作成やカスタマイズのご相談ご依頼はWPドクターまでお気軽にお送りください