前提・実現したいこと
WordPressのカスタム投稿で下記のようにタクソノミーを複数使っています。
post_type = photo
taxonomy = photo_no(第何回か)
taxonomy = photo_spot(撮影場所)
taxonomy = photo_award(賞)
archive-photo.php:photo_no のタイトル一覧
taxonomy-photo_no.php:「photo_award」ごとに分けた「第○○回」の写真一覧を表示したいです。
発生している問題・エラーメッセージ
「photo_award」ごとに分けた一覧表示はできたのですが、
他の回の写真も一緒に出てきてしまいます。
いろいろ試したのですが、PHP初心者でわからず、行き詰ってしまいました。
どなたか、ご教授頂けないでしょうか?
よろしくお願いいたします。
該当のソースコード
<?php // カスタム投稿タイプ $post_type = 'photo'; // カスタム分類名 $taxonomy = 'photo_award'; // パラメータ $args = array( // 親タームのみ取得 'parent' => 0, // 子タームの投稿数を親タームに含める 'pad_counts' => false, // 投稿記事がないタームは取得しない 'hide_empty' => true ); // カスタム分類のタームのリストを取得 $terms = get_terms( $taxonomy , $args ); if ( count( $terms ) != 0 ) { // 親タームのリスト $terms を $term に格納してループ foreach ( $terms as $term ) { // 親タームのURLを取得 $term = sanitize_term( $term, $taxonomy ); $term_link = get_term_link( $term, $taxonomy ); if ( is_wp_error( $term_link ) ) { continue; } $slug = $term->slug; // 親タームのURLと名称を出力 echo '<h2 class="tc"><a href="' . esc_url( $term_link ) . '" >' . $term->name . '</a></h2> <div class="post-loop-wrap tab_flex flex_wrap col_3 j_center mb60">'; $posts = get_posts( array( 'post_type' => $post_type, 'taxonomy' => $taxonomy, 'term' => $slug, 'posts_per_page' => -1, )); foreach($posts as $post){ setup_postdata( $post ); $image_url = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'medium' ); $image_url_hon = ''; if ( $image_url ) { $image_url_hon = $image_url[0]; } ?><?php } wp_reset_query(); ?><div class="post-thumbnail"> <?php if ( $image_url_hon ) { ?> <a href="<?php the_permalink(); ?>"><img src="<?php echo $image_url_hon; ?>"/></a> <?php } ?> <div class="cat-name"> <ul class="flex"> <?php $terms = wp_get_object_terms($post->ID,'photo_spot'); foreach($terms as $term) { echo '<li class="'. esc_html($term->slug) .'">'; echo '<a href="/photo_spot/'. esc_html($term->slug) .'/">'; echo esc_html($term->name) .'</a></li>'; } ?> </ul> </div> <p class="tc"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> </div>
<?php } } ?></div>
</div>
試したこと
もともと「archive.php」に記載があった下記のコードも使ってみたのですが、
全ての一覧の繰り返しループになってしまいました。
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); $cf = get_post_meta($post->ID); ?>
~ここに、上のコードを記述~
<?php endwhile; else : ?> <?php endif; ?>
補足情報(FW/ツールのバージョンなど)
WordPress 5.5.3
カスタム投稿は「functions.php」で追加
カスタムフィールドは使わず、既存の
・タイトル
・アイキャッチ画像
を使用。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。