WordPress - 保護ページタイトルから「保護中」を削除 | Technolog.jp - ICTウェブマガジン

WordPress – 保護ページタイトルから「保護中」を削除

  • 2011/04/04
  • カテゴリー:CMS

WordPressでは任意の投稿またはページをパスワード保護することが可能です。同設定は投稿(ページ)の「公開状態」にて「パスワード保護」を選択し、パスワードを入力するだけですが、この設定を行うとタイトルの接頭辞に「保護中」という文言が表示されます。ここではその削除方法を記載させていただきます。

結論から申し上げますと、利用中のテーマの「functions.」に以下のコードを追記してください。

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

「保護中」が表示される仕組みを解説すると「/wp-includes/post-template.php」の中にある以下のファンクションが機能しているためです。

1
2
3
4
5
6
7
8
9
10
if ( !is_admin() ) {
    if ( !empty($post->post_password) ) {
        $protected_title_format = apply_filters('protected_title_format', __('Protected: %s'));
        $title = sprintf($protected_title_format, $title);
    } else if ( isset($post->post_status) && 'private' == $post->post_status ) {
        $private_title_format = apply_filters('private_title_format', __('Private: %s'));
        $title = sprintf($private_title_format, $title);
    }
}
return apply_filters( 'the_title', $title, $id );

3行目にある「Protected:」が表示されるメッセージとなっており、翻訳ファイル側で「保護中」とされています。追記したコードはこの「protected_title_format」を無効にしています。

post-template.php を直接書き換える方法もありますが、それではWordPressのアップグレードの都度、編集を繰り返す必要があり、効率的とは言えません。また、別テーマの要件では「保護中」を表示することが求められる可能性もありますので、本対応が最も効果的ではないかと考えます。

ちなみに「private_title_format」を無効化する場合は、functions.phpに以下のように追記します。

1
2
3
4
add_filter('private_title_format', 'remove_private');
function remove_private($title) {
       return '%s';
}