WooCommerceのプラグインを作っていたのですが、ちょっとバグが発生して、お!という事が起こって、その解決方法をみつけたので、書いておきます。
ちょっと決済周りのページで決済処理をするプログラムを書いていて、エラー処理の必要があって、エラーしたらユーザーに分かるようにwc_add_noticeという関数を使って、表示する処理をしていたのです。普通に使っていれば、問題なかったのですが、CSVファイルで注文データを取り込もうとするとStatusを登録する処理をする際に決済処理をしてしまうのでその際にエラーが出るという状態だったので。
なるほど、じゃあ、決済ページの時だけ wc_add_notice を出す処理をしないといけないという事で、WordPressでは、is_home()とかあるので、WooCommerceでも定義関数があるんじゃないかなと思って調べてみたらやっぱりありました。
ここからはこちらのページの日本語説明だと思ってください。
固有ページの条件分岐関数
基本的に以下の関数は、該当した場合はtrueを返して、違う場合はfalseを返します。
また、条件詳細指定が出来る関数はis_product_category()とis_product_tag()とis_wc_endpoint_url()の3つだけです。
A WooCommerce page(WooCommerceのテンプレートでshortcodeなど使われるページ全部)
is_woocommerce()
The main shop page(ショップページ)
is_shop()
A product category page(商品カテゴリーアーカイブページ)
is_product_category()
is_product_category( ‘shirts’ )
is_product_category( array( ‘shirts’, ‘games’ ) )
A product tag page(商品タグアーカイブページ)
is_product_tag()
is_product_tag( ‘shirts’ )
is_product_tag( array( ‘shirts’, ‘games’ ) )
A single product page(商品詳細ページ)
is_product()
The cart page(カートページ)
is_cart()
The checkout page(支払いページ)
is_checkout()
Customer account pages(マイアカウントページ)
is_account_page()
An endpoint(エンドポイント)
is_wc_endpoint_url()
エンドポイント全ての場合
is_wc_endpoint_url( ‘order-pay’ )
注文支払いを表示した時
is_wc_endpoint_url( ‘order-received’ )
注文受信を表示した時
is_wc_endpoint_url( ‘view-order’ )
注文表示を表示した時
is_wc_endpoint_url( ‘edit-account’ )
アカウント編集を表示した時
is_wc_endpoint_url( ‘edit-address’ )
住所編集を表示した時
is_wc_endpoint_url( ‘lost-password’ )
パスワードの再発行ページを表示した時
is_wc_endpoint_url( ‘customer-logout’ )
ログアウトページを表示した時
is_wc_endpoint_url( ‘add-payment-method’ )
支払い方法を追加(選択)した時
An ajax request(Ajaxを呼び出しているページ)
is_ajax()
関数の使用例
カテゴリーが違う場合に表示する内容を変える形での関数の例です。
if ( is_product_category() ) { if ( is_product_category( 'shirts' ) ) { echo 'Hi! Take a look at our sweet tshirts below.'; } elseif ( is_product_category( 'games' ) ) { echo 'Hi! Hungry for some gaming?'; } else { echo 'Hi! Check our our products below.'; } }