パスワード保護投稿のカスタム
本日、我が家の自宅警備員(ネコ)が旅立ちました。
ベランダを縄張りとして幾年月。昔はブイブイ言わせていた雄ネコ(去勢済み)も、最近は老猫の域に入ってきたからか眠ってばかりでした。
もう10年以上飼育していたのですが、年を取ってきたとはいえ、突然だったので悲しいよりも呆然としています。
今回はパスワード保護機能を弄り倒した備忘録です。
似た記事はあるのですが、年数を経ていたりするので実装例として備忘録をしておきたいと思います。
書き込む先はテーマ内のファンクションズです。
やったこと
- タイトル部分『保護中:』をとる
- エラー表示をつける
- カスタムフィールドへ『パスワード入力画面』で文言を挟めるように設定
- パスワードの有効期間を1分へ変更
以上です。コードはこのようになりました。
/* パスワード保護画面のタイトル */ add_filter('protected_title_format', 'remove_protected'); function remove_protected($title) { return '%s'; } /* パスワード保護画面のカスタム */ function my_password_form() { $passwordForm = '<form class="post_password" action="' . home_url() . '/階層があれば/wp-login.php?action=postpass" method="post">' .'<input name="post_password" size="24" class="yutori" />' .'<br><input type="submit" name="Submit" class="maru" value="' . esc_attr__("送信") . '" /></form>'; if ( ! isset ( $_COOKIE[ 'wp-postpass_' . COOKIEHASH ] ) ){ return post_custom("パスワード入力画面") . $passwordForm;} $msg = esc_html__( '入力に誤りがあります。', 'your_text_domain' ); $msg = "<p class='custom-password-message'>$msg</p>"; return $msg . post_custom("パスワード入力画面") . $passwordForm; } add_filter('the_password_form', 'my_password_form'); /* パスワードの有効時間 */ 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() + MINUTE_IN_SECONDS, COOKIEPATH ); wp_safe_redirect( wp_get_referer() ); exit(); } add_action( 'login_form_postpass', 'custom_postpass_time' );
参考記事はこちらです。
てとぶろ様
https://tetrachroma.co.jp/blog/131111_postpassword_custom/
海外フォーラムっぽいところ
https://wordpress.stackexchange.com/questions/71284/add-error-message-on-password-protected-page
https://wordpress.stackexchange.com/questions/241424/add-error-message-on-password-protected-pages
なお、コピペしてエラー吐いても自己責任で頼んます。
ただの備忘録です。