Top

メモ書き

今回も事例の中から紹介。
auther.phpを使うログインではなくて、固定ページにロックをかけて一定の閲覧者しか見れなくする方法です。
auther.phpを使う方法は閲覧者によって内容を変えたりすることができる反面、ユーザーとして登録させるため、セキュリティ的な面で心配が増えることになります。
閲覧者によって見せる内容を変える必要がない場合は、今回紹介する方法か以前紹介したBasic認証を使うのが良いかと思います。

固定ページにパスワードを設定する方法

パスワードの設定は簡単。
ダッシュボードから固定ページ > 特定のページのクイック編集 > パスワードを設定し更新するだけです。

あとは指定した固定ページに下記コードを入れるだけです。

<?php
get_header();

if ( post_password_required() ) {
    echo get_the_password_form();
} else {
?>
<main>
	
</main>
<?php 
}
get_footer(); 
?>

このコードでmainのコンテンツのみパスワードで保護します。
headerとfooterは他のページに飛ぶための導線確保やjsを読み込むために、パスワード解除前にも読み込むようにしておきましょう。

出力されるパスワード画面の設定方法

上記コードを利用すると、デフォルトの入力フォームが出力されます。
状況によっては、編集したいことがあるかと思います。
そんなときは下記コードを参照して、functions.phpに記入してみてください。

add_filter('the_password_form', 'custom_password_form');
function custom_password_form() {
    // 正しい action URL を取得します。WordPress の機能を直接利用します。
    $action_url = esc_url(site_url('wp-login.php?action=postpass', 'login_post'));

    $custom_form = '<div class="passArea">
        <form action="' . $action_url . '" class="post-password-form" method="post">
            <p>このコンテンツはパスワードで保護されています。<br class="smp-d-none">閲覧するには以下にパスワードを入力してください。</p>
            <label for="pwbox-270">
                <dl>
                    <dt>パスワード</dt>
                    <dd>
                        <input name="post_password" id="pwbox-270" type="password" spellcheck="false" class="form-control"/>
                    </dd>
                </dl>
            </label>
            <button type="submit" name="Submit" class="form-btn">確定</button>
        </form>
    </div>';

    return $custom_form;
}