【问题标题】:Replace product title by the SKU in WooCommerce shop, cart and checkout pages在 WooCommerce 商店、购物车和结帐页面中用 SKU 替换产品标题
【发布时间】:2019-04-27 14:47:10
【问题描述】:

使用 Woocommerce,我想在以下页面中添加 SKU 而不是产品标题:商店页面、购物车页面和结帐页面。

例如在商店页面中,我可以使用下面的代码在产品标题上方添加 SKU。但是问题是添加的SKU没有单品页面的链接。

add_action( 'woocommerce_shop_loop_item_title', 'sku_before_title', 9 );
function sku_before_title()  {

    global $product;

    $sku = $product->get_sku();
    echo '<p class="name product-title">Product ' . $sku . '</p>';
}

使用 SKU 代替产品标题并保持与产品标题相同的链接和 CSS 的正确代码是什么? 商店页面和购物车页面和结帐页面的代码。

【问题讨论】:

    标签: php wordpress woocommerce cart checkout


    【解决方案1】:

    用您将使用的 WooCommerce 存档页面上的 sku 替换产品标题:

    // Frontend: On shop and archives pages
    add_action( 'woocommerce_shop_loop_item_title', 'sku_replace_title_on_loop', 9 );
    function sku_replace_title_on_loop()  {
        global $product;
    
        // Remove the product title
        remove_action( 'woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title', 10 );
    
        $sku = $product->get_sku();
    
        // Replace the title by the Sku if is not empty
        $title = empty($sku) ? get_the_title() : $sku;
    
        // Output
        echo '<h2 class="' . esc_attr( apply_filters( 'woocommerce_product_loop_title_classes', 'woocommerce-loop-product__title' ) ) . '">' . $title . '</h2>';
    }
    

    对于购物车和结帐页面,您将使用:

    // Frontend: on cart, minicart and checkout
    add_filter( 'woocommerce_cart_item_name', 'sku_replace_title_on_cart_checkout', 10, 3 );
    function sku_replace_title_on_cart_checkout( $item_name, $cart_item, $cart_item_key ) {
        if( $sku = $cart_item['data']->get_sku() ) {
            if( is_cart() ) {
                $item_name = sprintf( '<a href="%s">%s</a>', esc_url( $cart_item['data']->get_permalink( $cart_item ) ), $sku );
            } else {
                $item_name = $sku;
            }
        }
        return $item_name;
    }
    

    代码进入您的活动子主题(或活动主题)的 function.php 文件中。经过测试并且可以工作。

    【讨论】:

    • 这太好了,有什么方法可以使用这段代码来做相反的事情吗?假设我们想用 SKU 替换产品标题?
    • 这是用 SKU 替换产品标题。
    猜你喜欢
    • 2016-09-04
    • 1970-01-01
    • 2018-06-17
    • 2018-02-01
    • 1970-01-01
    • 2015-03-17
    • 2018-06-03
    • 1970-01-01
    • 2020-11-03
    相关资源
    最近更新 更多