Php 如何在";“继续结帐”;,特定产品类别的按钮[WooCommerce]

Php 如何在";“继续结帐”;,特定产品类别的按钮[WooCommerce],php,wordpress,woocommerce,conditional,checkout,Php,Wordpress,Woocommerce,Conditional,Checkout,我正在尝试为特定产品类别的“继续结帐”按钮添加自定义URL 我已经使用下面的代码成功地在上面添加了一个自定义URL,但是现在我想在购物车中根据产品显示一个不同的URL add_filter('woocommerce_get_checkout_url', 'dj_redirect_checkout'); function dj_redirect_checkout($url) { global $woocommerce; if(is_cart()){ $ch

我正在尝试为特定产品类别的“继续结帐”按钮添加自定义URL

我已经使用下面的代码成功地在上面添加了一个自定义URL,但是现在我想在购物车中根据产品显示一个不同的URL

add_filter('woocommerce_get_checkout_url', 'dj_redirect_checkout');

function dj_redirect_checkout($url) {
     global $woocommerce;
     if(is_cart()){
          $checkout_url = 'https://example.com';
     }
     else { 
     //other url or leave it blank.
     }
     return  $checkout_url; 
}
例如,我的WooCommerce网站上有两个类别(贸易线1和贸易线2)。如果购物车中有其他类别,我想在“继续结帐”按钮上放置一个不同的URL

add_filter('woocommerce_get_checkout_url', 'dj_redirect_checkout');

function dj_redirect_checkout($url) {
     global $woocommerce;
     if(is_cart()){
          $checkout_url = 'https://example.com';
     }
     else { 
     //other url or leave it blank.
     }
     return  $checkout_url; 
}
任何帮助都将不胜感激


非常感谢你

您应该循环浏览购物车项目,并检查是否有任何项目具有您想要针对的术语之一。您应该使用“Tradeline 1”、“Tradeline 2”的slug,可能是“Tradeline-1”

下面是一个快速POC:

$cat_in_cart = false;

foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {

    $product = $cart_item['data'];

    if ( has_term( 'tradeline-1', 'product_cat', $product->get_id() ) ) {
        $cat_in_cart = true;
        break;
    }
}

if( $cat_in_cart == true ) // do stuff
有用的参考资料:


干杯

嗨,谢谢你的密码。我应该把链接放在哪里?或者我需要在我的代码中添加您的代码吗?对不起,我有点困惑。没问题!是的,代码是集成代码的概念证明。如果你不熟悉PHP,那就不太容易了。非常感谢你。我已经设法将它与我的代码集成。