管理画面での登録が終わりましたので、コードに入っていきたいと思います。
初めて書いたので、間違いや効率悪いなどはあるかと思いますが、ご容赦願います。。。
今回、カスタムタクソノミーとして、メニュージャンルを作成して、その中にサラダ、ドリンク、パスタ、パン&スイーツとタームを作成しました。メニュージャンルの一覧のページファイルをarchive-menu.phpにしました。その他にそれぞれのページを作成しました。階層図を見てtoxonomy-genre-salada.php, toxonomy-genre-drink.php, toxonomy-genre-pasta.php, toxonomy-genre-breadssweets.phpを作成しました。これは一つのファイルで良かったかもしれません。archive-menu.phpでは下記のコードを書きました。一部省略
<?php
$menu_query = new WP_Query(
array(
‘post_type’ => ‘menu’,
‘posts_per_page’ => 12,
‘orderby’ => ‘item’,
‘order’ => ‘ASC’,
‘tax_query’ => array(
array(
‘taxonomy’ => ‘genre’,
‘field’ => ‘slug’,
‘terms’ => [‘pasta’, ‘salada’, ‘breadsweets’, ‘drink’],
),
),
)
);
?>
<?php if ($menu_query->have_posts()) : ?>
<?php while ($menu_query->have_posts()) : ?>
<?php $menu_query->the_post(); ?>
<a href=”<?php the_permalink(); ?>” class=”p-menu__card-item”>
<div class=”p-menu__img”>
<?php if (has_post_thumbnail()) : ?>
<?php the_post_thumbnail(); ?>
<?php else : ?>
<img src=”<?php echo get_template_directory_uri(); ?>/img/noimg.png” alt=”no-img”>
<?php endif; ?>
</div><!– /pickup-item-img –>
<h3 class=”p-menu__name”><?php the_title(); ?></h3>
<h3 class=”p-menu__price”><?php the_excerpt(); ?></h3>
</a><!– /pickup-item –>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_postdata(); ?>
post_type: 'menu'
と指定しています。これは、カスタム投稿タイプmenu
から投稿を取得することを意味します。
posts_per_page: 一度に取得する投稿数を12
に設定しています。
order: 'ASC'
(昇順)で並べ替えます。
tax_query: カスタムタクソノミーgenre
のslug
フィールドに基づき、指定されたターム(pasta
, salada
, breadsweets
, drink
)に一致する投稿を取得します。
作成したクエリでサブループを回しています。