WooCommerceで今どのページか判定するための条件分岐関数

WooCommerceで今どのページか判定するための条件分岐関数
先生

WooCommerce でページによって処理を変えたい時、その条件を判定するのに便利な関数を紹介しよう。

生徒

へー、どんな関数があるのかな。

WooCommerce ページかどうか

is_woocommerce() 関数は、WooCommerce のページ(WooCommerce テンプレートが使われているページ)かどうかを判定できます。

WooCommerce のページであれば true、そうでなければ false が結果として返されます。

if ( is_woocommerce() ) {
    echo 'ここは WooCommerce のページです。';
} else {
    echo 'ここは WooCommerce のページではありません。';
}

なお、is_woocommerce() 関数は、後述の is_shop()is_product_taxonomy()is_product() のいずれかに合致する場合のみ true となり、それ以外のカート、チェックアウト、マイアカウントなどのページでは false となります。

ショップページかどうか

is_shop() 関数は、ショップのページ(商品アーカイブが表示されるページ)かどうかを判定できます。

ショップページであれば true、そうでなければ false が結果として返されます。

if ( is_shop() ) {
    echo 'ここはショップページです。';
} else {
    echo 'ここはショップページではありません。';
}

商品カテゴリーページかどうか

is_product_category() 関数は、商品カテゴリーページかどうかを判定できます。

商品カテゴリーページであれば true、そうでなければ false が結果として返されます。

if ( is_product_category() ) {
    echo 'ここは商品カテゴリーページです。';
} else {
    echo 'ここは商品カテゴリーページではありません。';
}

is_product_category() 関数に引数を指定すると、特定の商品カテゴリーページかどうかも判定できます。

if ( is_product_category( 'food' ) ) {
    echo 'ここは商品カテゴリー「food」のページです。';
} else {
    echo 'ここは商品カテゴリー「food」のページではありません。';
}

// 配列で複数指定することも可能
if ( is_product_category( array( 'food', 'drink' ) ) ) {
    echo 'ここは商品カテゴリー「food」か「drink」のページです。';
} else {
    echo 'ここは商品カテゴリー「food」か「drink」のページではありません。';
}

商品タグページかどうか

is_product_tag() 関数は、商品タグページかどうかを判定できます。

商品タグページであれば true、そうでなければ false が結果として返されます。

if ( is_product_tag() ) {
    echo 'ここは商品タグページです。';
} else {
    echo 'ここは商品タグページではありません。';
}

is_product_tag() 関数に引数を指定すると、特定の商品カテゴリーページかどうかも判定できます。

if ( is_product_tag( 'food' ) ) {
    echo 'ここは商品タグ「food」のページです。';
} else {
    echo 'ここは商品タグ「food」のページではありません。';
}

// 配列で複数指定することも可能
if ( is_product_tag( array( 'food', 'drink' ) ) ) {
    echo 'ここは商品タグ「food」か「drink」のページです。';
} else {
    echo 'ここは商品タグ「food」か「drink」のページではありません。';
}

商品タクソノミーページかどうか

is_product_taxonomy() 関数は、商品タクソノミーページかどうかを判定できます。

商品タクソノミーページであれば true、そうでなければ false が結果として返されます。

if ( is_product_taxonomy() ) {
    echo 'ここは商品タクソノミーページです。';
} else {
    echo 'ここは商品タクソノミーページではありません。';
}

商品詳細ページかどうか

is_product() 関数は、商品詳細ページかどうかを判定できます。

商品詳細ページであれば true、そうでなければ false が結果として返されます。

if ( is_product() ) {
    echo 'ここは商品詳細ページです。';
} else {
    echo 'ここは商品詳細ページではありません。';
}

カートページかどうか

is_cart() 関数は、カートページかどうかを判定できます。

カートページであれば true、そうでなければ false が結果として返されます。

if ( is_cart() ) {
    echo 'ここはカートページです。';
} else {
    echo 'ここはカートページではありません。';
}

チェックアウトページかどうか

is_checkout() 関数は、チェックアウトページ(購入手続きページ)かどうかを判定できます。

チェックアウトページであれば true、そうでなければ false が結果として返されます。

if ( is_checkout() ) {
    echo 'ここはチェックアウトページです。';
} else {
    echo 'ここはチェックアウトページではありません。';
}

マイアカウントページかどうか

is_account_page() 関数は、マイアカウントページかどうかを判定できます。

マイアカウントページであれば true、そうでなければ false が結果として返されます。

if ( is_account_page() ) {
    echo 'ここはマイアカウントページです。';
} else {
    echo 'ここはマイアカウントページではありません。';
}

エンドポイントページかどうか

is_wc_endpoint_url() 関数は、WooCommerce のエンドポイントのページかどうかを判定できます。

エンドポイントのページであれば true、そうでなければ false が結果として返されます。

if ( is_wc_endpoint_url() ) {
    echo 'ここはエンドポイントのページです。';
} else {
    echo 'ここはエンドポイントのページではありません。';
}

is_wc_endpoint_url() 関数に引数を指定すると、特定のエンドポイントページかどうかを判定することもできます。

if ( is_wc_endpoint_url( 'order-pay' ) ) {
    echo 'ここはエンドポイント「order-pay」のページです。';
} else {
    echo 'ここはエンドポイント「order-pay」ではありません。';
}

なお、エンドポイントとは、WooCommerce で特定の機能に割り当てられている URL のことです。管理画面の「WooCommerce」>「設定」>「上級者向け」タブから、エンドポイントが設定できるようになっています。

「WooCommerce」>「設定」>「上級者向け」タブより

まとめ

先生

WooCommerce の条件を判定する関数は wc-conditional-functions.php というファイルにまとまっているので、その他の関数も見たい人は調べてみるのもいいかもじゃな。でも紹介した関数を組み合わせるだけでも、きっと大方の条件は対応できるぞ。

生徒

ページによって違う処理を入れたい時にとても役に立ちそうだね!

参考URL