WPで書籍論文一覧ページを作っています。
①全書籍・論文の一覧ページ(ページスラッグ list)
②特定ジャンルのみの書籍・論文一覧ページ(ページスラッグ list-genre)
の2種類のページがあります。
ページは固定ページで、カスタム投稿を出力しています。
カスタム投稿を出力するページテンプレートを作り、それぞれの書籍一覧ページにそのページテンプレートを適用しています。
ページテンプレート内で①と②のページの表示を切り分ける条件分岐を書いています。
カスタム投稿は「発行年」を1投稿として、
ACFで書籍タイトル、論文タイトルそれぞれを入れる2つの繰り返しフィールドを作っており
その中に②のページに表示するかどうかのチェックボックスがあり、
チェックが入ったタイトルだけが②のページに出力されるようにしたい、というのが前提です。
出力時の見た目は下記のような感じになります
【2001年】
■書籍一覧
・タイトルタイトル
・タイトルタイトル
・タイトルタイトル
■論文一覧
・タイトルタイトル
・タイトルタイトル
・タイトルタイトル
発生している問題・エラーメッセージ
下記のコードでは、②のページで、チェックボックスにチェックした書籍・論文タイトルだけが表示されるところまではうまくいきました。
しかしこれでは、チェックボックスにチェックが入ったものがない年の投稿の出力箇所で、
h2とh3が残ってしまいましたので、②に表示するものがない年のh2とh3も消えるようにしたいです。
php
1<?php 2 $args = array( 3 'post_type' => 'books', 4 'posts_per_page' => -1, 5 'orderby' => 'title', 6 'order' => 'DESC', 7 ); 8 $domestic_post = get_posts($args); 9 $wp_query = new WP_Query($args); 10 if ( $wp_query->have_posts() ) : 11 while ($wp_query->have_posts()) : $wp_query->the_post(); 12?> 13<h2><?php the_title(); ?></h2> //投稿のタイトル=○○年 14 15<?php if( have_rows('book_content') ): ?> 16<h3>書籍一覧</h3> 17 18<?php while ( have_rows('book_content') ) : the_row(); ?> 19<?php if( is_page('list-genre') ): //②のページの場合のみ 20 $checked = get_sub_field('check_or_not'); //②に表示するかどうかのチェックボックスフィールド 21?> 22 <?php if($checked){ ?> 23 〜出力コード〜 24 <?php } ?> 25 26<?php else: ?> //①のページの場合 27 〜出力コード〜 28<?php endif; ?> //書籍ここまで 29 30<?php if( have_rows('repo_content') ): ?> 31<h3>論文一覧</h3> 32 33<?php while ( have_rows('repo_content') ) : the_row(); ?> 34<?php if( is_page('list-genre') ): //②のページの場合のみ 35 $checked = get_sub_field('check_or_not'); //②に表示するかどうかのチェックボックスフィールド 36?> 37 <?php if($checked){ ?> 38 〜出力コード〜 39 <?php } ?> 40 41<?php else: //①のページの場合 ?> 42 〜出力コード〜 43<?php endif; ?> //論文ここまで 44 45<?php endwhile; endif; wp_reset_postdata(); ?>
試したこと
たとえばh2の部分を下記のようにしてみましたが、うまくいきませんでした。
php
1<?php if( is_page('list-genre') ): 2 $checked = get_sub_field('cyber_or_not'); 3 if($checked){ 4?> 5<h2><?php the_title(); ?></h2> //投稿のタイトル=○○年 6<?php } ?> 7<?php endif; ?>
このように、繰り返しフィールドのwhile文の外でチェックボックスフィールドでの条件分岐が可能なのか…
不可能なら他にどんな方法があるのか…と詰んでしまっています。
具体的な目標
「②のページのみ、
書籍タイトル繰り返しフィールドor論文タイトル繰り返しフィールドで
ひとつでもチェックボックスにチェックされていたら表示、ひとつもチェックされてなかったらh2,h3まで丸々非表示」
を実現したいです。
補足情報
上記説明でわかりにくかったら補足いたしますので何卒ご助力いただきたく思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。