パンくずリストからWelcartの「商品・商品ジャンル」カテゴリを消す

Welcart,WordPress

WordPressのECサイトプラグイン「Welcart」のパンくずリストのカスタマイズ。
パンくずリストの階層の一部を除去して表示する方法の覚え書きです。

Welcartの商品データのカテゴリ構造

Welcartでは構造上、商品データは以下のカテゴリに属している必要があります。

商品 (item)
┣ お勧め商品( itemreco )
┣ 新着商品 ( itemnew)
┗ 商品ジャンル (itemgenre)

商品データは全て「商品(item)」カテゴリーに属します。商品(item)カテゴリの配下に「お勧め商品(itemreco)」、「新着商品(itemnew)」、「商品ジャンル(itemgenre)」というカテゴリーがあります。

商品をさらに細かいカテゴリーに分けたい場合、例えばファッションカテゴリとして、レディス、メンズ、キッズカテゴリを作りたい場合は、「商品ジャンル(itemgenre)」の下にレディス、メンズ、キッズカテゴリーを作っていくことになります。

商品ジャンルの子カテゴリ「レディス」に登録した商品「レディスブラウス」をお勧め商品としたい場合は、商品、お勧め商品、商品ジャンル、レディスの、4つのカテゴリーにチェックを付けます。

パンくずリストから「商品」「商品ジャンル」を消したい

上記のような構造となるため、パンくずリストは

トップ > 商品 > 商品ジャンル > レディス > レディスブラウス

となります。「商品」と「商品ジャンル」はショップページ側ではあまり意味がないのでパンくずリストからは除去した方がすっきりします。

理想のパンくずリスト

トップ > レディス > レディスブラウス

Breadcrumb NavXTのカスタマイズ

パンくずリストプラグイン「Breadcrumb NavXT」を導入している場合は公式サポートフォーラムにカスタマイズの方法が載っています。

結構古い情報ですが問題なく動くようです。

パンくずリストのカスタマイズ方法について

function my_filter_breadcrumbs($bcnObj) {
	$trail = array();
	if ( count($bcnObj->trail) > 0 ) {
		for ( $i = 0; $i < count($bcnObj->trail); $i++ ) {
			if ( '商品' != $bcnObj->trail[$i]->get_title() && '商品ジャンル' != $bcnObj->trail[$i]->get_title() ) {
				$trail[] = $bcnObj->trail[$i];
			}
		}
	}
	$bcnObj->trail = $trail;
	return $bcnObj;
}
add_action('bcn_after_fill', 'my_filter_breadcrumbs');

Yoast SEOのパンくずリストのカスタマイズ

人気のSEO対策ができるプラグイン「Yoast SEO」。生憎、SEOの昨日はWelcartの商品ページでは機能しないですがSEOだけでなくパンくずリストも生成してくれます。

こちらの場合は以下のページが参考になりました。

Yoast SEOパンくずリスト出力項目をカスタマイズ【wpseo_breadcrumb_links】

https://gist.github.com/amboutwe/ea0791e184668a5c7bd7bbe357c598e9

The breadcrumbs title setting

function custom_yoast_breadcrumb( $links ) {
    if(usces_is_item()){
       array_splice( $links, 1, 2 );        
    }
    return $links;
}
add_filter( 'wpseo_breadcrumb_links', 'custom_yoast_breadcrumb' );

usces_is_itemは現在の記事が商品かどうかを判断するWelcart関数です。

とりあえず、商品、商品ジャンルは消せるんですが、お勧め商品や新商品の場合も消えてしまうので再考が必要です。

また時間ができたら考えようと思います。。。

https://www.welcart.com/