【问题标题】:WooCommerce replace "Available on backorder" in cart/checkout based on product categoryWooCommerce 根据产品类别替换购物车/结帐中的“延期交货可用”
【发布时间】:2020-07-31 01:44:30
【问题描述】:

我编写了一些代码,用于在基于产品类别的产品详细信息页面上显示自定义延期交货消息。

function custom_backorder_message( $text, $product ){
    if ( $product->managing_stock() && $product->is_on_backorder( 1 ) ) {

        if( has_term( 'bridal-line', 'product_cat' ) ) {
            $text = __( 'Your piece will be handcrafted for you. Upon order we will manufacture your piece of eternity. Sadly, we can not give you a timeline, due to Covid 19, but are expecting 5-7 weeks', 'text-domain' );
        }else {
            $text = __( 'This product is currently out of stock, but upon order we will handcraft your piece. Sadly, we can not give you a timeline, due to Covid 19, but are expecting 6-8 week.', 'text-domain' );
        }
    }
    return $text;
}
add_filter( 'woocommerce_get_availability_text', 'custom_backorder_message', 10, 2 );

现在,在购物车页面上显示“可延期交货”。如何在此处显示正确的延期交货消息?

感谢任何帮助!

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce taxonomy-terms


    【解决方案1】:

    使用:woocommerce_cart_item_backorder_notification

    注意第三个参数($product_id)由has_term指定, 这是因为默认使用当前帖子(ID)。但是,如果购物车中有多个产品,则有多个 ID...

    // Change backorder notification - Single product page
    function custom_availability_text( $text, $product ) {
        // Returns whether or not the product is stock managed.
        if ( $product->managing_stock() && $product->is_on_backorder( 1 ) ) {
            // Check if the current post has any of given terms.
            if( has_term( 'bridal-line', 'product_cat' ) ) {
                $text = __( 'My first text', 'woocommerce' );
            } else {
                $text = __( 'My second text', 'woocommerce' );
            }
        }
        return $text;
    }
    add_filter( 'woocommerce_get_availability_text', 'custom_availability_text', 10, 2 );
    
    // Change backorder notification - Shop page
    function custom_cart_item_backorder_notification( $html, $product_id ){
        // Check if the current post has any of given terms.
        if ( has_term( 'bridal-line', 'product_cat', $product_id ) ) {
            $html = '<p class="backorder_notification">' . esc_html__( 'My first text', 'woocommerce' ) . '</p>';
        } else {
            $html = '<p class="backorder_notification">' . esc_html__( 'My second text', 'woocommerce' ) . '</p>';
        }
    
        return $html;
    }
    add_filter( 'woocommerce_cart_item_backorder_notification', 'custom_cart_item_backorder_notification', 10, 2 );
    

    【讨论】:

      【解决方案2】:

      我的主题 function.php 中的这段代码适用于我:

      function change_specific_availability_text( $availability ) {
      
          $targeted_text = __( 'Available on backorder', 'woocommerce' );
      
          if ($availability[ 'class' ] == 'available-on-backorder' && $availability[ 'availability' ] == $targeted_text) {
      
              $availability[ 'availability' ] = __( 'In the central warehouse', 'your-theme-textdomain' );
      
          }
      
          return $availability;
      
      }
      
      add_filter( 'woocommerce_get_availability', 'change_specific_availability_text', 20, 1 );
      

      或替代的简化方式:

      function change_specific_availability_text( $availability ) {
      
          if ($availability[ 'class' ] == 'available-on-backorder') {
      
              $availability[ 'availability' ] = __( 'In the central warehouse', 'your-theme-textdomain' );
      
          }
      
          return $availability;
      
      }
      
      add_filter( 'woocommerce_get_availability', 'change_specific_availability_text', 20, 1 );
      

      【讨论】:

        猜你喜欢
        • 2018-07-10
        • 2022-11-18
        • 1970-01-01
        • 2020-09-29
        • 2014-04-29
        • 2015-03-17
        • 2016-09-04
        • 2020-01-04
        • 1970-01-01
        相关资源
        最近更新 更多