WordPressで投稿日や投稿者を非表示にする(Twenty Twelve)
多くのテーマでは投稿の下に、投稿者、投稿日、カテゴリなどが表示されます。
Twenty Twelveの場合、コンテンツテンプレートcontent.phpでtwentytwelve_entry_metaを呼び出したタイミングで表示されます。
<?php twentytwelve_entry_meta(); ?>
カテゴリ、タグ、投稿日、投稿者をすべてまとめて非表示にするには、この行を削除またはコメントにします。
<?php // twentytwelve_entry_meta(); ?>
これにより、投稿日や投稿者の情報が非表示になります。
カテゴリ、タグ、投稿日、投稿者を個別に消したい
すべてをまとめて消すのではなく、個別に非表示にしたい場合は、functions.phpの「function twentytwelve_entry_meta()」をカスタマイズします。
function twentytwelve_entry_meta() { // Translators: used between list items, there is a space after the comma. $categories_list = get_the_category_list( __( ', ', 'twentytwelve' ) ); ...略... }
twentytwelve_entry_metaの処理の流れは、「(1)各項目値の取得、(2)取得した項目を整形して表示」のようになります。
- 各項目値の取得
- 332行目あたり:$categories_list = … → カテゴリリストを取得
- 335行目あたり:$tag_list = … → タグリストを取得
- 337行目あたり:$date = … → 投稿日を取得
- 344行目あたり:$author = … → 投稿者を取得
- 項目値の表示
取得した各項目の値を整形して表示するため、次のような見本の文字列を準備しておいて、「?」を実際の値に置き換えています。○メタ情報を表示するテンプレート文字列
カテゴリー: ? | タグ: ? | 投稿日: ? | 投稿者: ?それぞれの「?」は、(1)のステップで取得したカテゴリリスト、タグリスト、投稿日、投稿者です。
テンプレート文字列と実際の値を混ぜる命令が、359行目あたりのprintfです。
printf( $utility_text, $categories_list, $tag_list, $date, $author );
361行目から364行目の$categories_list、$tag_list、$date、$authorは、(1)のステップで取得したカテゴリリスト、タグリスト、投稿日、投稿者です。
この値を混ぜ込むのがテンプレート文字列$utility_text(360行目)です。
$utility_textのテンプレート文字列は、次のような文字列になっています。
○メタ情報の各項目値を組み込むためのテンプレート
This entry was posted in %1$s and tagged %2$s on %3$s .英語なのでわかりづらいかもしれませんが、%1$sから%4$sまでが、カテゴリリスト、タグリスト、投稿日、投稿者に対応しています。
- %1$s --- カテゴリリスト
- %2$s --- タグリスト
- %3$s --- 投稿日
- %4$s --- 投稿者
この%1$sから%4$sまでが、printfによって投稿日、投稿者などに置き換えられて画面に表示されます。
各項目を個別に非表示にする場合、英語のテンプレートをカスタマイズしても良いのですが、次のように日本語に直してうまく表示できるか確認してからカスタマイズした方が無難です。
○$utility_textのテンプレートを日本語に
'カテゴリ:%1$s タグ:%2$s 投稿日:%3$s 'これでうまく表示できたことを確認して、「投稿者」を消してみます。
$utility_text = __( 'カテゴリ:%1$s タグ:%2$s 投稿日時:%3$s', 'twentytwelve' );
他の項目も同じように削除すれば画面から消すことができます。次の例では、投稿日を削除しています。
$utility_text = __( 'カテゴリ:%1$s タグ:%2$s <span class="by-author">投稿者:%4$s</span>', 'twentytwelve' );
【注意】見本文字列の$utility_textは、タグやカテゴリが取得できたかどうかで別々の内容が表示されるように分岐しているので、351行目あたりから続く3パターンのテンプレート文字列を修正する必要があります。
// パターン1:タグが取得できた場合 if ( $tag_list ) { タグ、カテゴリ、投稿日、投稿者を表示する$utility_text // パターン2:タグが取得できず、カテゴリが取得できた場合 } elseif ( $categories_list ) { カテゴリ、投稿日、投稿者を表示する$utility_text // パターン3:タグ、カテゴリが取得できなかった場合 } else { // 投稿日、投稿者を表示する$utility_text }