如何禁用特定類別的付款方式

已發表: 2020-09-01

WooCommerce 禁用特定類別的付款方式 您是否在經營 WooCommerce 商店,並且想知道如何根據購物車中的產品類別禁用特定類別的付款方式或多種付款方式? 如果您正在尋找專注於產品類別的解決方案,但也可以針對運輸類別進行一些小的更改,例如產品本身,本文將指導您如何實現這一目標。

禁用特定類別的付款方式

這種方法很有用的一個很好的例子是,當 WooCommerce 商店所有者的類別僅包含高價產品並希望客戶通過銀行轉賬而不是使用信用卡付款時。 這只是您可能需要為某個類別禁用付款方式的許多情況中的一個示例。

如果您不精通技術,您可能會選擇高級插件來為您完成這項工作。 一個例子是 WooCommerce 條件支付插件,它可以幫助您創建啟用或禁用支付方式的條件。 如果您不擅長使用代碼,這將是您應該考慮的最佳高級解決方案。

此外,此插件允許您創建無限的條件並使用,例如購物車總數、計費國家、用戶角色等來定義顯示哪個支付網關,哪些不顯示。

WooCommerce 條件支付插件

但是,對於這個簡短的教程,我將向您展示如何使用 PHP 代碼片段禁用特定類別的付款方式。

使用 PHP 代碼片段禁用特定類別的付款方式的步驟

以下是您需要遵循的簡單步驟:

  1. 登錄您的 WordPress 站點並以管理員用戶身份訪問儀表板
  2. 從儀表板菜單中,單擊外觀菜單 > 主題編輯器菜單。 打開主題編輯器頁面後,查找主題功能文件,我們將在其中添加禁用特定類別支付方式的功能。
  3. 將以下代碼添加php文件中:
 /**
 * @snippet 禁用特定類別的付款方式
*/


add_filter('woocommerce_available_payment_gateways','njengah_unset_gateway_by_category');


功能 njengah_unset_gateway_by_category( $available_gateways ) {

    if ( is_admin() ) 返回 $available_gateways;

    if ( !is_checkout() ) 返回 $available_gateways;

    $未設置=假;

    $category_ids = 數組(8, 37);

    foreach ( WC()->cart->get_cart_contents() as $key => $values ) {

        $terms = get_the_terms($values['product_id'], 'product_cat');   

        foreach ( $terms 作為 $term ) {       

            if ( in_array( $term->term_id, $category_ids ) ) {

                $未設置=真;

                休息;

            }

        }

    }

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

    返回$available_gateways;

}
  1. 這將是結果禁用特定類別的付款方式

請記住在您的 WooCommerce 商店中添加正確的類別 ID,以便此代碼正常工作。

如果您不喜歡使用類別 ID,那麼您也可以在您的 WooCommerce 商店中使用類別標籤。 您可以選擇使用它們,因為它們更易於理解以供將來參考。

使用 Category Slug 禁用特定類別的付款方式的步驟

  1. 登錄您的 WordPress 站點並以管理員用戶身份訪問儀表板
  2. 從儀表板菜單中,單擊外觀菜單 > 主題編輯器菜單。 打開主題編輯器頁面後,查找主題功能文件,我們將在其中添加禁用特定類別支付方式的功能。
  3. 將以下代碼添加php文件中:
 /**

 * @snippet 根據類別禁用支付網關。

*/

功能njengah_disable_payment_gateway_category($網關){

// 將禁用支付網關的類別

$category_slugs = array('附件', '另一個類別');

$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() ) ) {

未設置($gateways['cod']); // 當產品具有以下類別之一時禁用支付網關'cod'

休息;

}

}

返回$網關;

}

add_filter('woocommerce_available_payment_gateways','njengah_disable_payment_gateway_category');
  1. 這將是結果禁用特定類別的付款方式

請記住添加正確的類別 slug,您需要定義要禁用的支付網關。 在我的示例中,我使用“cod”來表示貨到付款。

請務必注意,當購物車中存在給定類別時,還需要將支付網關標識符更改為您想要禁用的任何一個。

  • 銀行轉帳 (bacs)
  • 支票(支票)
  • 貨到付款(鱈魚)
  • 貝寶(貝寶)

但是,如果您沒有使用默認支付網關之一,請不要擔心,因為仍然有一種簡單的方法可以找到支付網關 ID。 您可以通過轉到支付網關設置頁面來執行此操作,您將在其中找到 ID。

例如,對於設置頁面中的貨到付款選項,這將是 URL:wp-admin/admin.php?page=wc-settings&tab=checkout&section=cod

結論

在這篇文章中,您學習瞭如何使用兩種方法禁用特定類別的付款方式。 您可以使用產品類別 ID 或類別標籤來定義它們,以便將來參考。 請記住使用 WooCommerce 商店中的類別 ID 或 slug 來添加此功能。

類似文章