お問い合わせはコチラから

Woocommerceで商品がある商品カテゴリのみメニューに表示するカスタマイズ

サイト運営

Woocommerceサイトで商品カテゴリはあるけど、商品が無いカテゴリが結構あるようなサイトがあったとします。その場合、商品が無いカテゴリが大量にあるとメニュー上のほとんどのカテゴリはハズレになってしまうので、積極的に非表示にした方が親切なケースもあります。

通常、wp_nav_menuで挿入しているメニューの場合、自前でカスタマイズしないとメニューの表示をダイナミックに変更することは出来ません。

今回、Woocommerceのサイトで商品カテゴリをwp_nav_menuで表示しているときに、商品登録があるカテゴリだけ表示できるようなカスタマイズを行ったので、ご紹介します。

グローバルメニューで商品がある商品カテゴリのみ表示するカスタマイズ

wp_nav_menuのhookを使って、特定の条件でcssを追加することで表示非表示を切り替えます。

商品カテゴリで、かつ、商品がある場合のみclassを追加します。

function my_special_nav_class( $classes, $item ) {

	if($item->object == 'product_cat'){
		$term = get_term_by( 'id',$item->object_id,'product_cat');
		if ( $term->count > 0 ) {
			$classes[] = 'special-class';
		}

	}
  return $classes; 
}
 
add_filter( 'nav_menu_css_class', 'my_special_nav_class', 10, 2 );
.menu-item-object-product_cat:not(.special-class) {
    display: none;
}

グローバルメニューで商品カテゴリに商品数を表示するカスタマイズ

wp_nav_menuの表記を変更する場合は、the_title hookを使うカスタマイズが有名です。参考記事にあるカテゴリー用のカスタマイズをWoocommerceの商品カテゴリに適用できるように変更しました。

function my_the_title_menu_category( $title, $post_ID ) {
	if ( 'nav_menu_item' == get_post_type( $post_ID ) ) {

		if ( 'taxonomy' == get_post_meta( $post_ID, '_menu_item_type', true ) && 'product_cat' == get_post_meta( $post_ID, '_menu_item_object', true ) ) {
			$term = get_term_by( 'id', get_post_meta( $post_ID, '_menu_item_object_id', true ), 'product_cat' );
			if ( $term->count > 0 ) {
				$title .= sprintf( ' (%d)', $term->count );
			}
		}
	}
	return $title;
}
add_filter( 'the_title', 'my_the_title_menu_category', 10, 2 );

参考https://ja.wordpress.org/support/topic/%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E5%86%85%E3%81%AE%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%83%BC%E9%A0%85%E7%9B%AE%E3%81%AE%E4%BB%B6%E6%95%B0%E8%A1%A8%E7%A4%BA%E3%81%AE%E4%BB%B6%E3%81%A7/

まとめ

ほとんどの人には、何の意味があるのか?というカスタマイズかもしれませんが、特殊な運用をしている人が一定数いて、そのような人たちには便利なカスタマイズじゃないかと思います。

この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました