ページナビのテキスト
記事ページの下部に前後の記事(投稿)へのリンクが表示される仕様なのだが、「カテゴリーに制限」をかけている関係上、単純に前後へのリンクとする訳にいかず、多少の制御を入れている。具体的には、非ログイン状態では、表示中の記事が属するカテゴリーの前後へのリンクとしている。リンクの表示内容は「前後の記事タイトル」と「過去の投稿」「新しい投稿」というテキストの予定であった。改修する時、単純にログイン状態かどうかを判定し、非ログインの場合にはカテゴリー制限を入れるコードにしたところ、今になってリンクの「過去の投稿」「新しい投稿」というテキストが表示されていなかった事が判明してしまった。ということで修正した。
例によって、元のコードから。
// Previous/next post navigation. the_post_navigation( array( 'next_text' => '<span class="meta-nav" aria-hidden="true">' . esc_html__( 'Next', 'fotografie' ) . '</span> ' . '<span class="screen-reader-text">' . esc_html__( 'Next post:', 'fotografie' ) . '</span> ' . '<span class="post-title">%title</span>', 'prev_text' => '<span class="meta-nav" aria-hidden="true">' . esc_html__( 'Previous', 'fotografie' ) . '</span> ' . '<span class="screen-reader-text">' . esc_html__( 'Previous post:', 'fotografie' ) . '</span> ' . '<span class="post-title">%title</span>', ) ); get_template_part( 'components/post/content', 'comments' );
書き方をガラッと変えて、以下のようなコードでやりたいことを実現している。前半はページナビの構築、後半はログイン状態の確認、その結果で引数の中身が追加されるかどうか、という方式へ変更した。
// Previous/next post navigation. $args = wp_parse_args( $args, array( 'next_text' => '<span class="meta-nav" aria-hidden="true">' . esc_html__( 'Next', 'fotografie' ) . '</span> ' . '<span class="screen-reader-text">' . esc_html__( 'Next post:', 'fotografie' ) . '</span> ' . '<span class="post-title">%title</span>', 'prev_text' => '<span class="meta-nav" aria-hidden="true">' . esc_html__( 'Previous', 'fotografie' ) . '</span> ' . '<span class="screen-reader-text">' . esc_html__( 'Previous post:', 'fotografie' ) . '</span> ' . '<span class="post-title">%title</span>', ) ); if ( !is_user_logged_in() ) : $args = wp_parse_args( $args, array( 'in_same_term' => true, 'excluded_terms' => '1,5,6,7,8,9,10', 'taxonomy' => 'category', 'screen_reader_text' => __( 'Post navigation' ), ) ); endif; the_post_navigation($args); get_template_part( 'components/post/content', 'comments' );