
パスワード保護ページの投稿パスワードは投稿ごとに設定します。設定方法は、投稿一覧からの「クイック編集」か「投稿の編集」画面で ひとつずつ変更します。
しかし 全て同じパスワードにする場合でも 一括で変更するメニューがありません。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