特定のカテゴリの支払い方法を無効にする方法

公開: 2020-09-01

WooCommerceは特定のカテゴリの支払い方法を無効にします WooCommerceストアを運営していて、カートにある商品カテゴリに基づいて、特定のカテゴリまたは複数の支払い方法の支払い方法を無効にする方法を知りたいですか? 製品カテゴリに焦点を当てたソリューションを探しているが、製品自体などの出荷クラスに若干の変更を加えることもできる場合は、この記事でその方法を説明します。

特定のカテゴリの支払い方法を無効にする

このアプローチが役立つ良い例は、WooCommerceストアの所有者が高価格の商品のみを含むカテゴリを持っていて、顧客にクレジットカードを使用する代わりに銀行振込で支払うことを望んでいる場合です。 これは、カテゴリの支払い方法を無効にする必要がある多くの状況のほんの一例です。

あなたが技術に精通していないなら、あなたはあなたのために仕事をするためにプレミアムプラグインを選ぶかもしれません。 例として、WooCommerce Conditional Payment Pluginがあります。これは、支払い方法を有効または無効にする条件を作成するのに役立ちます。 コードの使用がそれほど得意でない場合は、これが検討すべき最高のプレミアムソリューションになります。

さらに、このプラグインを使用すると、無制限の条件を作成し、カートの合計、請求国、ユーザーの役割などを使用して、表示する支払いゲートウェイと表示しない支払いゲートウェイを定義できます。

WooCommerce条件付き支払いプラグイン

ただし、この簡単なチュートリアルでは、PHPコードスニペットを使用して特定のカテゴリの支払い方法を無効にする方法を紹介します。

PHPコードスニペットを使用して特定のカテゴリの支払い方法を無効にする手順

従う必要のある簡単な手順は次のとおりです。

  1. WordPressサイトにログインし、管理者ユーザーとしてダッシュボードにアクセスします。
  2. [ダッシュボード]メニューから、[外観メニュー]> [テーマエディターメニュー]をクリックします。 テーマエディタページが開いたら、特定のカテゴリの支払い方法を無効にする関数を追加するテーマ関数ファイルを探します。
  3. 次のコードをphpファイルに追加します。
 / **
 * @ snippet特定のカテゴリの支払い方法を無効にする
* /


add_filter( 'woocommerce_available_payment_gateways'、 'njengah_unset_gateway_by_category');


function njengah_unset_gateway_by_category($ available_gateways){

    if(is_admin())return $ available_gateways;

    if(!is_checkout())return $ available_gateways;

    $ unset = false;

    $ category_ids = array(8、37);

    foreach(WC()-> cart-> get_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;

                壊す;

            }

        }

    }

    if($ unset == true)unset($ available_gateways ['cheque']);

    $ available_gatewaysを返します。

}
  1. これが結果になります特定のカテゴリの支払い方法を無効にする

このコードを機能させるには、WooCommerceストアにある正しいカテゴリIDを追加することを忘れないでください。

カテゴリIDを使用したくない場合は、WooCommerceストアでカテゴリスラッグを使用することもできます。 後で参照できるように理解しやすいので、それらを使用することを選択できます。

カテゴリスラッグを使用して特定のカテゴリの支払い方法を無効にする手順

  1. WordPressサイトにログインし、管理者ユーザーとしてダッシュボードにアクセスします。
  2. [ダッシュボード]メニューから、[外観メニュー]> [テーマエディターメニュー]をクリックします。 テーマエディタページが開いたら、特定のカテゴリの支払い方法を無効にする関数を追加するテーマ関数ファイルを探します。
  3. 次のコードをphpファイルに追加します。
 / **

 * @ snippetカテゴリに基づいて支払いゲートウェイを無効にします。

* /

function njengah_disable_payment_gateway_category($ gateways){

//支払いゲートウェイを無効にするカテゴリ

$ category_slugs = array( 'accessories'、 'another-category');

$ category_ids = get_terms(array( 'taxonomy' => 'product_cat'、 'slug' => $ category_slugs、 'fields' => 'ids'));


//特定のカテゴリの各カートアイテムを確認します

foreach(WC()-> cart-> get_cart()as $ item){

$ product = $ item ['data'];

if($ product && array_intersect($ category_ids、$ product-> get_category_ids())){

unset($ gateways ['cod']); //商品にカテゴリのいずれかがある場合、支払いゲートウェイ 'cod'を無効にします

壊す;

}

}

$ gatewaysを返します。

}

add_filter( 'woocommerce_available_payment_gateways'、 'njengah_disable_payment_gateway_category');
  1. これが結果になります特定のカテゴリの支払い方法を無効にする

正しいカテゴリスラッグを追加することを忘れないでください。無効にする支払いゲートウェイを定義する必要があります。 私の例では、代金引換を表すために「タラ」を使用しました。

特定のカテゴリがカートにある場合は、支払いゲートウェイIDも無効にする必要があることに注意してください。

  • 銀行振込(bacs)
  • チェック(小切手)
  • 代金引換(タラ)
  • PayPal(PayPal)

ただし、デフォルトの支払いゲートウェイの1つを使用していない場合でも、支払いゲートウェイIDを見つける簡単な方法があるため、心配する必要はありません。 これを行うには、支払いゲートウェイの設定ページに移動すると、そこにIDが表示されます。

たとえば、設定ページの代金引換オプションの場合、次のURLになります:wp-admin / admin.php?page = wc-settings&tab = checkout&section = cod

結論

この投稿では、2つの方法を使用して特定のカテゴリの支払い方法を無効にする方法を学習しました。 後で簡単に参照できるように、製品カテゴリIDまたはカテゴリスラッグを使用してそれらを定義できます。 この機能を追加するには、WooCommerceストアにあるカテゴリIDまたはスラッグを使用することを忘れないでください。

同様の記事