WordPressのユーザーが、1人のとき記事下に「投稿者」表示はありませんが、2人以上になると投稿者のユーザー名が記事下に表示されます。
Twelty Twelveでは、記事下にカテゴリー、タグ、投稿日、投稿者のメタ情報を表示しますが、それをカスタマイズする方法について書きます。
全て非表示(削除)する方法
カテゴリーや投稿日など全てを表示しないようにするには、content.phpのfooterタグにあるtwentytwelve_entry_meta()関数を削除するかコメントアウトすると表示されないようになります。
下のコードは、非表示にするためコメントアウトする例です。
<?php //twentytwelve_entry_meta(); ?>
記事のメタ情報をカスタマイズする方法
twentytwelve_entry_meta()関数の定義は、functions.phpファイルにあります。
正しい言い方ではありませんが、下のコードの説明を簡単にします。
コード説明
①$categories_list、$tag_list、$date、$authorで、記事のカテゴリー、タグ、投稿日、投稿者の情報を得ます。
②変数をもとにif条件分岐をします。
最初は、$tag_listに値があれば実行して、次に$tag_listがなくて$category_listがあれば実行して、最後に$tag_listも$category_listも無いとき実行します。
実行結果は、$utility_text変数に代入されます。
③printf関数で、情報を出力します。
printf関数の第1引数は、出力フォーマット($utility_text)になり、その後の引数の順番を変えれば表示も変ります。
【functions.php twentytwelve_entry_meta関数】
function twentytwelve_entry_meta() { // 1 カテゴリーを取得 $categories_list = get_the_category_list( __( ', ', 'twentytwelve' ) ); // 2 タグを取得 $tag_list = get_the_tag_list( '', __( ', ', 'twentytwelve' ) ); // 3 投稿日を取得 $date = sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a>', esc_url( get_permalink() ), esc_attr( get_the_time() ), esc_attr( get_the_date( 'c' ) ), esc_html( get_the_date() ) ); // 4 投稿者を取得 $author = sprintf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>', esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ), get_the_author() ); // Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's name. if ( $tag_list ) { $utility_text = __( 'This entry was posted in %1$s and tagged %2$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); } elseif ( $categories_list ) { $utility_text = __( 'This entry was posted in %1$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); } else { $utility_text = __( 'This entry was posted on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); } printf($utility_text,$categories_list,$tag_list,$date,$author); }
カスタマイズ方法
if文の出力フォーマット($utility_text)の部分ですが、国際化対応するために若干長いコードになっていますが、運営するサイトの対象ユーザーが日本人の場合、日本語で書き換えた方がいいと思います。
【日本語書き換えた例】
if ( $tag_list ) { $utility_text = 'カテゴリー:%1$s タグ:%2$s 投稿日:%3$s <span class="by-author">投稿者:%4$s</span>; } elseif ( $categories_list ) { $utility_text = 'カテゴリー:%1$s 投稿日:%3$s <span class="by-author">投稿者:%4$s</span>'; } else { $utility_text = '投稿日:%3$s <span class="by-author">投稿者:%4$s</span>'; }
投稿者を表示しない方法
twentytwelve_entry_meta()関数にある変数$authorの「4 投稿者を取得」下の式を削除して、if文とprintf関数は、$author変数を使用しないコードにします。
【投稿者を表示しないコード例】
function twentytwelve_entry_meta() { // Translators: used between list items, there is a space after the comma. $categories_list = get_the_category_list( __( ', ', 'twentytwelve' ) ); // Translators: used between list items, there is a space after the comma. $tag_list = get_the_tag_list( '', __( ', ', 'twentytwelve' ) ); $date = sprintf( '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a>', esc_url( get_permalink() ), esc_attr( get_the_time() ), esc_attr( get_the_date( 'c' ) ), esc_html( get_the_date() ) ); if ( $tag_list ) { $utility_text = 'カテゴリー:%1$s タグ:%2$s 投稿日:%3$s'; } elseif ( $categories_list ) { $utility_text = 'カテゴリー:%1$s 投稿日:%3$s'; } else { $utility_text = '投稿日:%3$s'; } printf($utility_text, $categories_list, $tag_list, $date); }
表示順を変更する例
表示される順番を日付、カテゴリー、タグの順にする場合、printf関数にある$utility_textの後にある変数$date、$categories_list、$tag_listの順に入れ替えます。
printf( $utility_text, $date, $categories_list, $tag_list );
フォーマット($utility_text)がprintf関数に対応していないので、if文を変更します。
if ( $tag_list ) { $utility_text = '投稿日:%1$s カテゴリー:%2$s タグ:%3$s '; } elseif ( $categories_list ) { $utility_text = '投稿日:%1$s カテゴリー:%2$s'; } else { $utility_text = '投稿日:%1$s'; }
コメント
[…] Twenty Twelveで記事下の投稿者、投稿日を削除する方法 | WordPressカスタマイズ… […]