更改特定页面上的WooCommerce订单按钮页面

时间:2018-06-09 作者:Jason Abraham

我目前在我的功能中有此功能。php更改woocommerce中的默认订单按钮文本。

add_filter( \'woocommerce_order_button_text\', \'woo_custom_order_button_text\' ); 

function woo_custom_order_button_text() {
    return __( \'Join The Founders Circle\', \'woocommerce\' ); 
}
这很有效。我正在处理一个单一的产品签出页面,我想为除新签出页面之外的其他产品保留上面的代码。

我知道我只需要以该页面为目标,并使用条件逻辑来实现这一点,但我正在尝试的一切都不起作用,这不是我的强项。有人能帮忙吗?

新签出的页面ID为37802。

提前谢谢!!!!!!!

1 个回复
最合适的回答,由SO网友:Bjorn 整理而成

您可以尝试以下方法

add_filter( \'woocommerce_order_button_text\', \'woo_custom_order_button_text\', 999 ); 
function woo_custom_order_button_text() {
  if( is_page(37802)) { // only run if page ID is 37802
    return __( \'Join The Retreat\', \'woocommerce\' ); 
  }
  return __( \'Join The Founders Circle\', \'woocommerce\' );   
}
<小时>

UPDATE

条件逻辑is_page() 不起作用。

WHY
因为在签出页面上,WOO使用ajax更新页面上的几乎所有内容,包括订单按钮。调用ajax时,它在管理会话中运行,因此is_page() 不起作用。

SOLUTION
我建议您检查购物车中是否有所需的产品,而不是页面检查,如果有,请显示其他订单按钮文本。

Example

add_filter( \'woocommerce_order_button_text\', \'woo_custom_order_button_text\', 999 );
function woo_custom_order_button_text() {
  $product_id = 179;  // Some product id
  $product_cart_id = WC()->cart->generate_cart_id( $product_id );

  // Returns an empty string, if the cart item is not found
  $product_in_cart = WC()->cart->find_product_in_cart( $product_cart_id );

  if( $product_in_cart ) {
    return __( \'Buy our special product\', \'woocommerce\' );
  }
  return __( \'Buy product\', \'woocommerce\' );
}
你好,比约恩

结束

相关推荐