Woocommerce で特定のカテゴリーの時に支払い方法を無効にする方法です。
あるカテゴリーの商品は代引きを利用不可にしたいという場合に役立ちます。
functions.phpに次のコードを追加します。
//例)特定カテゴリで任意の支払い方法をアンセットする add_filter( 'woocommerce_available_payment_gateways', 'unset_gateway_by_category' ); function unset_gateway_by_category( $available_gateways ) { global $woocommerce; $unset = false; $category_ids = array( 94, 37 ); //カテゴリIDを入力 複数の場合はカンマで区切る foreach ( $woocommerce->cart->cart_contents as $key => $values ) { $terms = get_the_terms( $values['product_id'], 'product_cat' ); foreach ( $terms as $term ) { if ( in_array( $term->term_id, $category_ids ) ) { $unset = true; break; } } } if ( $unset == true ) unset( $available_gateways['atstore'] ); //代引き=cdo 銀行振込=bankjp 店頭払い=atstore カード払い=stripeなど return $available_gateways; }
$category_ids にカテゴリIDを指定。
$available_gateways は 代引きなら ['cod'] 銀行振込なら['bankjp'] を指定します。
(いずれもWoocommerce Japan導入が前提)
忘備録として。