【WordPress】カスタム投稿タイプで限定公開の記事を作成する方法

WordPressでは、投稿記事にパスワードをつける機能が備わっているため、任意のパスワードを設定することで簡単に限定公開の記事を作成することができます。

しかし、この機能がきちんと反映されるのはデフォルトの投稿機能に対して。
「カスタム投稿タイプ」経由の投稿記事だと上記のやり方ではこのパスワード設定がうまく機能せず、「パスワード設定したはずなのに全体公開になってしまう!」という状態になってしまいます。

これでは複数の投稿機能でパスワード機能を使いたいときに困ってしまいますよね。

そこで今回は、カスタム投稿タイプで作成した記事にパスワードをつける方法について紹介します。

デフォルトの投稿機能でパスワードを設定する場合

まずはじめに、WordPressをインストールした直後から管理画面に表示されているこのデフォルトの投稿機能。
こちらでパスワードを設定する方法について簡単に触れておきます。

「投稿」→「新規作成」を選択。

画面右側の「公開状態」の編集ボタンをクリック。

「パスワード保護」にチェックし任意のパスワードを入力すれば、限定公開の記事として表示することができます。
自分で設定するのは任意のパスワードのみ!簡単で便利。

カスタム投稿タイプでパスワードを設定する場合

管理画面からパスワード付きの記事を投稿する方法は、前章に書いたデフォルトの投稿機能と同じ。

しかし、ブログの最初に言ったようにカスタム投稿タイプの場合は「公開状態」を「パスワード保護」に設定しても全体公開になってしまう現象が起こります。

なぜかというと、デフォルトの投稿機能の場合と違い、カスタム投稿タイプで作成した記事では“パスワード設定をしているかどうか”という部分が判別できないため。

そこで、テーマファイル側に「記事にパスワードが設定されているときはパスワード入力を求める」という内容のコードを記述してあげます。
パスワード機能を有効にしたいsingle.phpに以下のようなコードを書くことで解決できます!

<?php if( !post_password_required( $post->ID ) ) : ?>
<?php if (have_posts()) : the_post(); ?>
    
    <!-- ここから記事の内容 -->

    <section>
          <h1><?php the_title(); ?></h1>
         <p><?php the_content(); ?></p>
    </section>
    
    <!-- ここまで記事の内容 -->

<?php endwhile; endif;?>
<?php else: ?>
<?php echo get_the_password_form(); ?>
<?php endif; ?>

上のコードを解説すると、以下の通り。

オレンジ色で示したコードがパスワード設定の判別をさせている部分です。

これで、カスタム投稿で作成した記事にもパスワード保護がきちんときくようになります。

WordPressにあまり慣れていない方やカスタム投稿タイプで限定公開記事をこれまで使ったことがない方など、今回のようなパターンに陥る可能性もあると思いご紹介させていただきました。

カスタム投稿タイプはホームページの制作時によく使用する機能のひとつ。 カスタム投稿タイプを使って限定公開機能を使う機会も出てくるかもしれませんので、知っておくと便利です!