archive-カスタム投稿名.phpの中でよく使うWordPressのコード

HTMLサイトをWordPressにする本

親子ターム別の投稿一覧を表示

・カスタム投稿タイプ = info-en
・タクソノミー名 = info-encat
を指定しています。

<?php 
$terms = get_terms('info-encat', 'parent=0');  // 親階層のターム一覧を取得
foreach($terms as $parent_term):
?>
  <h2><?php echo esc_html($parent_term->name);  // 親タームのタイトルを出力 ?></h2>
<?php
  $child_terms = get_terms('info-encat', 'hierarchical=0&parent='. $parent_term->term_id);  // hierarchical=0:子タームを持つタームを含めない、parent=タームID:親タームを指定
  if($child_terms):  // 子タームを出力
    foreach($child_terms as $term):
?>
      <h3><?php echo esc_html($term->name);  // 子タームのタイトルを出力 ?></h3>
      <?php 
        $args = array(
          'post_type' => 'info-en',  // 投稿タイプ:カスタム投稿
          'info-encat' => $term->slug,  // 子タームを指定
          'posts_per_page' => -1,  // 表示件数:全件表示
          'post_status' => 'publish',  // 投稿ステータス:公開済み
        );
        $the_query = new WP_Query($args);
      ?>
      <?php if($the_query->have_posts()): ?>
        <?php while($the_query->have_posts()): $the_query->the_post(); ?>
          <article>
            <figure><?php the_post_thumbnail(); ?></figure>
            <h4><?php the_title(); ?></h3>
            <p><?php the_excerpt(); ?></p>
            <a href="<?php the_permalink(); ?>">もっと見る</a>
          </article>
        <?php endwhile; ?>
      <?php endif; ?>
      <?php wp_reset_postdata();  // サブクエリーで取得したデータをリセットするコード ?>
    <?php endforeach;  // 子タームに紐づく記事一覧の表示終了 ?>

  <?php else:  // 子タームがない場合、親タームに所属する記事を出力 ?>
    <?php 
      $args = array(
        'post_type' => 'info-en',  // 投稿タイプ:カスタム投稿
        'info-encat' => $parent_term->slug,  // 親階層のタームを指定
        'posts_per_page' => -1,  // 表示件数:全件表示
        'post_status' => 'publish',  // 投稿ステータス:公開済み
      );
      $the_query = new WP_Query($args);
    ?>
    <?php if($the_query->have_posts()): ?>
      <?php while($the_query->have_posts()): $the_query->the_post(); ?>
        <article>
          <figure><?php the_post_thumbnail(); ?></figure>
          <h4><?php the_title(); ?></h3>
          <p><?php the_excerpt(); ?></p>
          <a href="<?php the_permalink(); ?>">もっと見る</a>
        </article>
      <?php endwhile; ?>
    <?php endif; ?>
    <?php wp_reset_postdata();  // サブクエリーで取得したデータをリセットするコード ?>

  <?php endif;  // タームに紐づく記事の出力終了 ?>
<?php endforeach;  // 親タームの取得終了 ?>

最低限覚えておきたい
WordPressのコード