パスワード保護ページの投稿パスワードは投稿ごとに設定します。設定方法は、投稿一覧からの「クイック編集」か「投稿の編集」画面で ひとつずつ変更します。
しかし 全て同じパスワードにする場合でも 一括で変更するメニューがありません。1つ1つ変更しかありません。
さらに 定期的にパスワードを変更している場合は、めんどくさいですよね。
そこで 「クイック一括操作」で 投稿パスワードを一括変更できるようになる方法を紹介します。
クイック一括操作に投稿パスワードを追加
「bulk_edit_custom_box」というアクションフィルターを使って 投稿パスワードを一括編集できるようにします。
コード
以下のコードを my-plugin.php に張り付けてみてください。
/* * クイック一括操作に「投稿パスワード」を追加 * Fires once for each column in Bulk Edit mode. * * @since 2.7.0 * class-wp-posts-list-table.php * * @param string $column_name Name of the column to edit. * @param WP_Post $post_type The post type slug. * License: GPLv2 or later */ function nendebcom_post_password_bulk_quickmenu( $column_name, $post_type ) { if( $column_name == 'postpass' && $post_type == 'post' ){ ?> <fieldset class="inline-edit-col-right"> <label class="inline-edit-<?php echo $column_name; ?>"> <span class="title">パスワード</span> <span class="input-text-wrap"> <input class="inline-edit-password-input" name="post_password" value="" type="text"> </span> </label> </fieldset> <style type="text/css">th.column-postpass,td.column-postpass{display:none;}</style> <?php } } add_action( 'bulk_edit_custom_box', 'nendebcom_post_password_bulk_quickmenu', 10, 2 ); // ダミーカラム追加 function rachel_carden_managing_my_posts_columns( $columns, $post_type ) { if ( $post_type == 'post' ) $columns[ 'postpass' ] = ''; return $columns; } add_filter( 'manage_posts_columns', 'rachel_carden_managing_my_posts_columns', 10, 2 );
※bulk_edit_custom_box で項目を追加するにはカラムも追加しないといけないので ダミーの(postpass)カラムを追加して CSSで消しています。
使用方法
投稿一覧画面で変更したい投稿にチェックをいれて、一括操作のプルダウンを「編集」にして「適用」を押します。
パスワード欄に 共通パスワードを入力して、右の「更新」ボタンを押します。
これで選択した投稿はパスワード変更されました。
※一括操作では パスワード欄を 空(カラ) にしても「消去」ではなく、「変更なし」になります。
※パスワード無しにしたい(パスワード保護をやめる)場合は従来通り、1つ1つ変更してください。
スポンサードリンク
おまけ
「WordPress パスワード保護」とかで調べるといろいろでてきますが、おさらいします。
タイトルの「保護中:」を消す
パスワード保護がされている投稿のタイトルは「保護中:タイトル」となっています。
ここの「保護中:」は以下の方法で変更する事ができます。
/* * タイトルの「保護中:」を消す * * @param str $title 'Protected: %s' or '保護中:%s; * @return str $title * License: GPLv2 or later */ function nendebcom_protected_title_format( $title ) { return '%s'; } add_filter( 'protected_title_format', 'nendebcom_protected_title_format' );
テーマがちゃんとしてたら タイトル外側の article の class に「post-password-required」と入ります。
これを利用してタイトルに鍵マーク等の装飾をしたらいかがでしょうか。
(パスワード認証後は「post-password-required」が無くなるので 鍵マークも消えます)
パスワード認証後の有効期限を変更する
ユーザーはパスワードを入力後、10日間はパスワードを入力しなくても閲覧する事ができます。
この「10日間」というのは以下の方法で変更する事ができます。
/** * パスワード保護機能 Cookieの期限を変える * Filters the life span of the post password cookie. * * By default, the cookie expires 10 days from creation. To turn this * into a session cookie, return 0. * * @since WordPress 3.7.0 * wp-login.php * @param int $expires The expiry time, as passed to setcookie(). * * MINUTE_IN_SECONDS : 1分 * HOUR_IN_SECONDS : 1時間 * DAY_IN_SECONDS : 1日 * License: GPLv2 or later */ function nendebcom_post_password_expires() { return time() + 2 * HOUR_IN_SECONDS; //2時間 } add_filter( 'post_password_expires', 'nendebcom_post_password_expires' );
※「return 0;」 にすると 毎回パスワードが必要になるようにできます。
パスワード認証フォームの説明文を変更する
/** * パスワード認証フォームを変更する * Filters the HTML output for the protected post password form. * * @since 2.7.0 * * @param string $output The password form HTML output. * License: GPLv2 or later */ function nendebcom_password_form( $output ) { global $post; $label = 'pwbox-' . ( empty($post->ID) ? rand() : $post->ID ); $output = '<form action="' . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '" class="post-password-form" method="post"> <p>ここに説明文をいれてください。</p> <p><label for="' . $label . '">' . __( 'Password:' ) . ' <input name="post_password" id="' . $label . '" type="password" size="20" /></label> <input type="submit" name="Submit" value="送信" /></p></form> '; return $output; } add_filter( 'the_password_form', 'nendebcom_password_form' );
※送信ボタンの Enterの翻訳が「確定」になってましたのでここで「送信」と 直書きしておきます。
あとがき
WordPressの標準の投稿パスワードとは別に、投稿パスワードを複数登録して使う事もできます。
「パスワード保護ページの 投稿パスワード を 複数使えるようにする」 https://nendeb.com/560
参考
Plugin API/Action Reference/bulk edit custom box – WordPress Codex
https://codex.wordpress.org/Plugin_API/Action_Reference/bulk_edit_custom_box
WP_REST_Posts_Controller::protected_title_format() | Method | WordPress Developer Resources
https://developer.wordpress.org/reference/classes/wp_rest_posts_controller/protected_title_format/
the_password_form | Hook | WordPress Developer Resources
https://developer.wordpress.org/reference/hooks/the_password_form/
post_password_expires | Hook | WordPress Developer Resources
https://developer.wordpress.org/reference/hooks/post_password_expires/
Using Password Protection – WordPress Codex
https://codex.wordpress.org/Using_Password_Protection