パスワード保護のカスタマイズ

スポンサーリンク

パスワード保護って

記事や固定ページの「公開」部分を「パスワード保護」にすると、アクセス制限がかけられます。

以下必要なところをfunctions.phpに追加する

保護中の文言を削除

add_filter('protected_title_format', 'remove_protected');
function remove_protected($title) {
       return '%s';
}

テキストを変更する方法

function my_password_form() {
  return
    '<p>ここに好きなテキストを入力します<p>
    <form class="post_password" action="' . home_url() . '/wp-login.php?action=postpass" method="post">
    <input name="post_password" type="password" size="24" />
    <input type="submit" name="Submit" value="' . esc_attr__("パスワード送信") . '" />
    </form>';
}
add_filter('the_password_form', 'my_password_form');

Cookieの期限を変える

function custom_postpass_time() {
    require_once ABSPATH . 'wp-includes/class-phpass.php';
    $hasher = new PasswordHash( 8, true );
    setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), time() + HOUR_IN_SECONDS, COOKIEPATH );
    wp_safe_redirect( wp_get_referer() );
    exit();
}
add_action( 'login_form_postpass', 'custom_postpass_time' );

時間を変更する場合は、「HOUR_IN_SECONDS」(1時間に設定)の部分を、10分であれば「600」など、秒数を指定。
または1日にする場合には「DAY_IN_SECONDS」と設定。

カスタムフィールドもパスワード保護する

通常パスワード保護は「post_content()」、「comments_template()」で出力された情報のみに適用されるので、カスタムフィールドは適用されず表示されてしまうので、カスタムフィールドもパスワード保護する。

<?php
 if( !post_password_required( $post->ID ) ) :
 //ここにカスタムフィールドなどパスワード保護したいものを追加する
 endif;?>

コメント

タイトルとURLをコピーしました