💡

WooCommerceで商品カテゴリーのリンク付きバナーセクションを作る

2023/05/27に公開

WooCommerceの商品カテゴリー(product_cat)では、初期からサムネイルを登録することが可能です。
これを活用してサムネイル登録あり+紐付く投稿があるカテゴリーでアーカイブページに飛べるバナーを出力し、バナーセクションを作るという小ネタをご紹介したいと思います。

実装手順

まずはWordPressの管理画面メニュー【商品】→【カテゴリー】で、バナーセクションに表示したいカテゴリーのサムネイル画像を登録しておきましょう。

その後、テンプレートファイル等で以下のようなphpの記述を行います。

<?php 
$categories = get_terms('product_cat');
if (!empty($categories)) { ?>
  <section class="banners">
    <?php foreach ($categories as $category) {
        $thumbnail_id = get_term_meta($category->term_id, 'thumbnail_id', true);
        if ( $thumbnail_id ) { ?>
        <a href="<?= esc_url(get_term_link($category->term_id)); ?>" class="banners__link">
          <img src="<?= esc_url(wp_get_attachment_url($thumbnail_id)); ?>" class="banners__image">
        </a>
        <?php }
      } ?>
  </section>
<?php }

コードの説明

get_termsは$argsで条件抽出が可能ですが、省略してもhide_emptyがtrue・hierarchicalもtrueなので子タームでサムネイルが登録されているものも取得してくれます。

get_term_metaで添付ファイルの投稿IDを取得→wp_get_attachment_urlで取得したIDを利用しソースのURLを取得するという流れとなります。

アーカイブリンクはget_term_linkで取得し、あとはCSSで見た目を整えて完成です。

上記コードではカテゴリー名を出力内容に含めていませんが、$category→nameで取得して出力すればOKです。

シンプルですが、意外と使いそうな実装ケースかなと思いました。
以上、ご参考になれば幸いです。

Discussion