我正在尝试更改签出页面中的下订单按钮文本,条件是当且仅当购物车中有来自“捐赠”类别的产品时。否则要将文本从“下订单”更改为“提交订单”。为此,我应用了以下代码
add_filter('woocommerce_order_button_text', 'subscriptions_custom_checkout_submit_button_text' );
function subscriptions_custom_checkout_submit_button_text( $order_button_text ) {
// set our flag to be false until we find a product in that category
$cat_check = false;
// check each cart item for our category
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
// replace 'donations' with your category's slug
if ( has_term( 'donations', 'product_cat', $product->id ) && !has_term( 'dvds', 'product_cat', $product->id ) ){
$cat_check = true;
// break because we only need one "true" to matter here
break;
}
}
// if a product in the cart is in our category, do something
if ( $cat_check ) {
$order_button_text = __( 'Submit Donation', 'woocommerce-subscriptions' );
} else {
// You can change it here for other products types in cart
# $order_button_text = __( 'Something here', 'woocommerce-subscriptions' );
$order_button_text = __( 'Submit Order', 'woocommerce-subscriptions' );
}
return $order_button_text;
}
它起作用了。但是有一个不同的问题。。如果有其他类别和捐赠类别的产品。然后它仍然将PlaceOrder按钮更改为“提交捐赠”,因为有一个条件满足,即捐赠类别中存在一种产品。
现在我想要的是,如果有一个产品从捐赠类别和从另一个类别,然后我只是想改变的地方订单按钮文本"提交订单"文本。
我认为需要在if循环中应用AND条件。但是我没有得到它,我怎么能在if循环中应用AND condtion...
这应该适合您:
add_filter('woocommerce_order_button_text', 'subscriptions_custom_checkout_submit_button_text' );
function subscriptions_custom_checkout_submit_button_text( $order_button_text ) {
$donation = true;
// check each cart item for our category
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product = $cart_item['data'];
if ( !has_term( 'donations', 'product_cat', $product->id ) ){
$donation = false;
break;
}
}
return $donation ? 'Submit Donation' : 'Submit Order';
}
您也可以在此处查看有关更改“下订单”按钮文本的教程https://rudrastyh.com/woocommerce/place-order-button-text.html有一个关于更改特定产品的按钮文本的示例。