記事を投稿する際に、
にチェックを入れて保存すると、「このページを非公開のままにする」
実際のページには、タイトルの横部分に「非公開:」という文字が表示されるかと思います。
この非公開という文字を表示させたくないのですが、
どの部分を修正すれば非公開という文字が表示されないのでしょうか?
ちなみに、適用させたいのは
投稿記事ではなく、ページです。
記事を投稿する際に、
にチェックを入れて保存すると、「このページを非公開のままにする」
この非公開という文字を表示させたくないのですが、
どの部分を修正すれば非公開という文字が表示されないのでしょうか?
ちなみに、適用させたいのは
投稿記事ではなく、ページです。
フィルタで取り除くことが出来ます。
テーマの functions.php に以下の内容を追加してください。
<?php
function remove_page_title_prefix( $title = '' ) {
if ( empty( $title ) || !is_page() ) return $title;
$protected = preg_quote( sprintf( __('Protected: %s'), '' ), '/' );
$private = preg_quote( sprintf( __('Private: %s'), '' ), '/' );
$search = "/^(?:" . $protected . "|" . $private . ")(.*)/";
return preg_replace( $search, "$1", $title );
}
add_filter( 'the_title', 'remove_page_title_prefix' );
?>上記のコードはちゃんと動くのですが、わたしだったら
$protected = preg_quote( sprintf( __('Protected: %s'), '' ), '/' );
$private = preg_quote( sprintf( __('Private: %s'), '' ), '/' );
$search = "/^(?:" . $protected . "|" . $private . ")(.*)/";
return preg_replace( $search, "$1", $title );
の部分は
$search[0] = '/^' . str_replace('%s', '(.*)', preg_quote(__('Protected: %s'), '/' )) . '$/';
$search[1] = '/^' . str_replace('%s', '(.*)', preg_quote(__('Private: %s'), '/' )) . '$/';
return preg_replace( $search, '$1', $title );
と書きますね。日本語だと問題ないんですが、右から左に書く言語など、Protected: %s の翻訳文字列が「%s: なんちゃら」となっている場合に動かない可能性があるためです。
> lilyfan さん
おお、添削ありがとうございます。確かに仰る通りですね!
rtl の他にも独自に ja.mo をカスタマイズして、suffix にしている場合なども考えられますね。
とすると、 remove_page_title_prefix って関数名から不適切かも? 勉強になりました。
remove_page_title_prefix って関数名から不適切かも? 勉強になりました。
rtl の場合は prefix でいいのではないかと思います。言語リソースを改造してしまっている場合は仕方ないということで。
# わたしの作っているプラグインでも、Protected, Private の文字列をいじる部分があるんですが、
# 実は先頭にあるという決め打ちだったので、今回の提案内容を元に修正予定です。
mizube様
lilyfan様
アドバイスありがとうございます。
<?php
function remove_page_title_prefix( $title = '' ) {
if ( empty( $title ) || !is_page() ) return $title;
$search[0] = '/^' . str_replace('%s', '(.*)', preg_quote(__('Protected: %s'), '/' )) . '$/';
$search[1] = '/^' . str_replace('%s', '(.*)', preg_quote(__('Private: %s'), '/' )) . '$/';
return preg_replace( $search, '$1', $title );
}
add_filter( 'the_title', 'remove_page_title_prefix' );
?>
お二人のアドバイスの結果、上記のソースを貼り付けましたところ、解決いたしました。
今回のこの利用目的は、
携帯用ページとパソコンページの使い分けを行いたく伺いました。
パソコン版のページにはFLASHやlightboxで対応させたコンテンツを
非公開設定にして、直接メニューからリンク表示させ、
Ktai Styleを利用した携帯用ページでは、非公開ページが表示されず、
パソコン版でメニューからリンクされていない独立ページを表示させる。
無事に使い分けることが出来ました。ありがとうございました。
一旦解決したのですが、WordPress2.7にしたら【非公開】と表示されるようになってしまいました。
WordPress2.7ですが、新たにサーバを立てそのままインストールしています。
以前の利用データからのアップグレードではございません。
2.7以下のバージョンでは表示されません。
原因はどのようなことが推測されるでしょうか?
ご教授いただけましたら幸いです。
宜しくお願いいたします。
その後、表示の有無の違いについて分かりました。
WordPressのバージョンは関係ありませんでした。
2.7で確認済みです。
●ページだと非公開表示が表示されずに済み
●投稿記事だと非公開表示される
このような状況でした。
両方とも非表示にさせるには、どのようにすれば良いのでしょうか?
ちなみに、適用させたいのは
投稿記事ではなく、ページです。
と念を押すように書かれていましたので、ページ以外では「非公開:」の部分を削除しないコードになっています。投稿でも同じように「非公開:」を削除したい場合は
if ( empty( $title ) || !is_page() ) return $title;
の部分を
if ( empty( $title ) ) return $title;
としてください。
mizube 様
ご教授ありがとうございました。
無事に解決いたしました。
このトピックを立てた際には、
ちなみに、適用させたいのは投稿記事ではなく、ページです。
だったのですが、今回、投稿にも適用させたいと考えました。
過去の投稿内容を修正することができなかったので、念押し表現が残ったままの形になりました。
ページではなく、記事に適用させたいと、新たに質問を立てようかと思ったのですが、
投稿内容のタイトルから、ページもしくは記事のいづれかで適用させたい人も閲覧されるかと思い、
この内容に付け足しました。
ご教授、ご指摘、ありがとうございました。
ログイン しなければ投稿できません。