また忘れた。。。

WooCommerceに限ったことではないけど、WordPressも含めて頻繁に使わない条件分岐タグをよく忘れる。
WordPressについてはCodex(日本語版)を見にいけば「あ、そうそう、コレコレ」というケースも多い。がしかし、WooCommerceは使い始めて日が浅いこともあって、WordPressほど利用シーンが少ないのでおぼえられない。
ということで、そのための備忘録。

WooCommerce Conditional Tags(条件分岐タグ)

とりあえずこのページを見ればわかります。

このなかでもよく使うと思われるもの

is_shop()

商品アーカイブページ、ショップのメインとして設定しているページ

is_product_category()

商品カテゴリ、アーカイブページ
is_product_category( 'shirts' )
is_product_category( array( 'shirts', 'games' ) )複数が該当する場合はarray

is_product()

商品ページ

has_term( 2, ‘product_cat’ )

属するカテゴリーの場合
商品ページでカテゴリーごとに異なる情報を表示する場合に使える

is_cart()

カートページ

is_checkout()

購入者情報入力/決済ページ

こんな単純なものを忘れるのもどうかしてるけど、忘れるんです。

使い方はWordPressと同じだけど、Snow Monkeyで使う場合は、上書きしたテンプレートもしくは、my-snow-monkey.phpに記述します。

例えば、特定の商品にだけ「モニター申込みボタン」を置く場合。しかも「お買い物かごに入れる」ボタンも非表示に。
「モニター申込みボタン」の設置だけでいい場合は、フックではなく、商品ページのエディターに書いたほうが早いです。これは1つの例です。

/**
 * 特定商品の「カートに入れる」ボタンを非表示
 */
add_action(
	'loop_start',
	function () {
  		// 商品ページでidが15のもの
  		if( is_product() && get_the_id() == 15) {
    		remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
  		}
	}
);


/**
 * 別ページへのリンクを設置
 */
add_action(
	'woocommerce_single_product_summary',
	function () {
  		if( is_product() && get_the_id() == 15 ) {
  		?>
    	<p class="custom_add_cart">
    		<a href="https://example.com/product-111/monitor/" target="_blank" rel="noopener noreferrer">モニターに申し込む</a>
    	</p>
  		<?php
  		}
	},
	40 // 表示場所
);

よくない例になってしまったけど、WooCommerceには特有の条件分岐タグがあるので、活用してみてください。
今日は短いですが、このへんで。

この記事を書いた人

GONSY

印刷会社のグラフィックデザイナーだった1998年に「会社案内」のHTML化をきっかけにWebの世界へ。
WordPressはMEから使っているけどプログラムスキルは一向に上がらない。WooCommerceは2018年から。忘れっぽくなってきたので、試したこと、実装方法を記録するためにブログをスタート。
最近、WordPress、WooCommerce、Snow Monkeyがおもしろいと感じるおじさん。