2023.05.01
【WordPress】パスワード保護を行った場合のカスタマイズ
パスワード保護画面のタイトルから「保護中:」を削除
add_filter('protected_title_format', 'remove_protected');
function remove_protected($title) {
return '%s';
}
パスワード保護画面のテキスト変更(入力・エラーメッセージ)カスタム
function password_form_kai() {
return
'<p>こちらのコンテンツを閲覧するためにはパスワードが必要です。<br>
下記にパスワードを入力してください。</p>
<form action="' . home_url() . '/wp/wp-login.php?action=postpass" class="post-password-form" method="post">
<input name="post_password" type="password" size="24" placeholder="パスワードを入力してください" class="member__password-input" />
<input type="submit" name="Submit" class="member__password-submit" value="' . esc_attr__("パスワード送信") . '" />
</form>';
}
add_filter('the_password_form', 'password_form_kai');
//エラーメッセージ
add_filter( 'the_password_form', 'wpse_71284_custom_post_password_msg' );
/**
* Add a message to the password form.
*
* @wp-hook the_password_form
* @param string $form
* @return string
*/
function wpse_71284_custom_post_password_msg( $form )
{
// No cookie, the user has not sent anything until now.
if ( ! isset ( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ) )
return $form;
// The refresh came from a different page, the user has not sent anything until now.
if ( ! wp_get_raw_referer() == get_permalink() )
return $form;
// Translate and escape.
$msg = esc_html__( 'パスワードに誤りがあります。', 'your_text_domain' );
// We have a cookie, but it doesn’t match the password.
$msg = "<p class='custom-password-message'>$msg</p>";
return $msg . $form;
}
【参考】Add error message on password protected page
パスワードの有効時間設定
function custom_postpass_time() {
require_once ABSPATH . 'wp-includes/class-phpass.php';
$hasher = new PasswordHash( 8, true );
//1日に設定(※変更する場合は「DAY_IN_SECONDS」を変更)
setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), time() + DAY_IN_SECONDS, COOKIEPATH );
wp_safe_redirect( wp_get_referer() );
exit();
}
//MINUTE_IN_SECONDS(1分間)
//30 * MINUTE_IN_SECONDS(30分間)
//HOUR_IN_SECONDS(1時間)
//12 * HOUR_IN_SECONDS(12時間)
//DAY_IN_SECONDS(1日)
//3 * DAY_IN_SECONDS(3日)
add_action( 'login_form_postpass', 'custom_postpass_time' );