首页 > 解决方案 > 用 WooCommerce 中的按钮替换缺货文本

问题描述

我想用联系我们按钮替换缺货文本。

我试过这段代码,但它似乎对我不起作用。

add_action('woocommerce_after_shop_loop_item', 'themelocation_change_outofstock_to_contact_us', 1);
// for shop page 
function themelocation_change_outofstock_to_contact_us() {
  global $product;
  if (!$product->is_in_stock()) {
    remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
    remove_action('woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart');
    //change the link to your contact us page
    echo '<a href="/contact"> Contact Us </a>';
  }
}
// for single page
add_filter('woocommerce_get_availability', 'wcs_custom_get_availability', 1, 2);
function wcs_custom_get_availability($availability, $_product) {
  // Change In Stock Text
  if ($_product->is_in_stock()) {
    $availability['availability'] = __('Available!', 'woocommerce');
  }
  // Change Out of Stock Text
  if (!$_product->is_in_stock()) {
    $availability['availability'] = __('<a href="/contact"> Contact Us </a>', 'woocommerce');
  }
  return $availability;
}

标签: phpwordpresswoocommercehook-woocommercestock

解决方案


add_filter('woocommerce_get_availability_text', 'woocommerce_get_availability_text', 10, 2);

function woocommerce_get_availability_text($availability, $product){

    /*
    if ( ! $product->is_in_stock() ) {
        $availability = __('<a href="/contact"> Contact Us </a>', 'woocommerce');
    }
     * 
     */

    if($availability == 'Out of stock'){
        $availability = __('<a href="/contact"> Contact Us </a>', 'woocommerce');
    }
    return $availability;
}

尝试以下代码以获取特定消息。

add_filter( 'woocommerce_out_of_stock_message', 'woocommerce_get_availability_text_msg', 10, 1 );

function woocommerce_get_availability_text_msg( $availability ) {

    return __( '<a href="/contact"> Contact Us </a>', 'woocommerce' );

}

推荐阅读