目次
同一カテゴリー商品ページへのリンクを張りたい理由
前回の投稿で、関連商品を表示する方法を書きましたが、商品登録時に1つ1つ設定しなければなりません。
これは結構な手間ですし、完売商品も表示されてしまいます(在庫ナシと表示せることは可能です)。
ここからは当店の事情ですが、当店は生まれ年のワインを贈りたい方のためのECサイト。
ある商品を見たときの関連商品(比べたい商品)は、同じヴィンテージ(年号)のワインです。
そして、商品カテゴリーはヴィンテージ毎に設定していました。
なので、
関連商品を見たい=この商品のカテゴリーに登録されている別の商品も見たい
です。
そこでこの商品が登録されているカテゴリーへのリンクを張ることにしました。
登録カテゴリーの名前とリンクを取得して表示する方法
当初は、それぞれのワインのカテゴリー(○○年)を商品登録時に手作業で張ろうと思ったのですが面倒ですし、過去のワインの作業が結構大変です。
そこで、最下層のカテゴリ名・リンクを取得して自動で表示できたらよいと思いました。
これは調べると、シラツキさん運営の『カケウェブ|HTML・CSS・jQuery・WordPress(CMS)など』さんでご紹介されていたコードで簡単に解決しました。
<?php $cats = get_the_category(); $current_cat = ''; foreach ( $cats as $cat ) { if ( ! $current_cat || cat_is_ancestor_of( $current_cat, $cat ) ) { $current_cat = $cat; } } ?><a href="<?php echo get_category_link( $current_cat ); ?>"><?php echo $current_cat->cat_name; ?></a>
『カケウェブ|HTML・CSS・jQuery・WordPress(CMS)など』より(シラツキさん、断りなくコード引用させていただきました。不都合があればご一報ください。)
実際に貼ったコードとその結果
小テーマのwc_item_single.phpの任意の場所に以下のように張りました。
<!--○○年一覧へ--> <div style="text-align: right;margin: 20px auto"> <?php $cats = get_the_category(); $current_cat = ''; foreach ( $cats as $cat ) { if ( ! $current_cat || cat_is_ancestor_of( $current_cat, $cat ) ) { $current_cat = $cat; } } ?><a class="btn-style-link" href="<?php echo get_category_link( $current_cat ); ?>">ほかの<?php echo $current_cat->cat_name; ?>ワインを見る</a> </div> <!--○○年一覧へ(終了)-->
表示はこのようになります。
(赤いボタン形式になるようにcssで設定しています)