Twenty Twenty-Oneテンプレートにて、カスタム投稿で「twenty_twenty_one_entry_meta_footer()」を読み込んではいるけどカテゴリーや更新日が表示されない🤔
「twenty_twenty_one_entry_meta_footer()」は「template-tags.php」を呼び出している🤔🤔
ゆえに「template-tags.php」を調整。
まずは下記のようにコメントアウト。
function twenty_twenty_one_entry_meta_footer() { // Early exit if not a post. //if ( 'post' !== get_post_type() ) { // return; //}
ifの次に下記elseifを追加してカスタム投稿時(今回は「event」)の表示を記述。
なおカスタム投稿のカテゴリーはカスタムタクソノミーなのでcategoryでなくtermで取得・表示となる。ざっくり。
classを充てるのは任意。
} elseif ( is_singular('event') ) { echo '<div class="posted-by">'; // Posted on. twenty_twenty_one_posted_on(); // Posted by. twenty_twenty_one_posted_by(); // Edit post link. edit_post_link( sprintf( /* translators: %s: Post title. Only visible to screen readers. */ esc_html__( 'Edit %s', 'twentytwentyone' ), '<span class="screen-reader-text">' . get_the_title() . '</span>' ), '<span class="edit-link">', '</span>' ); echo '</div>'; //ここからは書き換え(今回は「event_cat」というタクソノミー(カテゴリー)名) if ( has_term( '', 'event_cat') ) { echo '<div class="post-taxonomies">'; //ループ外なのでグローバル関数($post)でIDを取得 global $post; $post_id = $post->ID; //投稿ページのタームを取得し出力していく $terms = get_the_terms( $post->ID, 'event_cat' ); //classを充てるためタームのスラッグを表示しつつ、タームをリンク付きで表示 if ( $terms ) { foreach ( $terms as $term ) { echo '<span class="cat-links ' . $term->slug . '"><a href="'. get_term_link( $term->slug, 'event_cat' ). '">' . $term->name.'</a></span>'; } } echo '</div>'; //ここまで }
上記参考記事を抜粋しつつ書き換えると
「has_termの第一引数を空にすることで第二引数で指定したタクソノミー(event_cat)のいずれかのタームに属する記事かどうかを判定。」
ちなみに「twenty_twenty_one_entry_meta_footer()」を引っぱってこずに表示させることもできる。
下記は投稿日表示+timeタグで投稿日時と、スラッグ名class出力付きカテゴリー表示(力尽きてる)。
<div class="entry-content-header"> <div class="posted-by"> <span class="posted-on"> <time class="entry-date published updated" datetime="<?php echo get_the_date('Y-m-d') ?>T<?php echo get_the_time('H:i:s') ?>"><?php the_date() ?></time> </span> </div> <div class="post-taxonomies"> <span class="cat-links <?php get_the_category()[0]->category_nicename ?>"> <!-- カテゴリー表示の記述 --> </span> </div> </div>
おまけ:投稿者アーカイブページを無効にするとき、「Notice: Undefined index」エラーが出るときは参考サイトをベースに4行目の!empty追加で上手くいった。
//投稿者アーカイブページを無効にする add_filter ( 'author_rewrite_rules', '__return_empty_array' ) ; function disable_author_archive() { if ( !empty($_GET['author']) || preg_match('#/author/.+#', $_SERVER['REQUEST_URI']) ) { wp_redirect( home_url( '/404.php' ) ); exit; } } add_action ('init', 'disable_author_archive') ;