如何禁用特定类别的付款方式

已发表: 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 来添加此功能。

类似文章