【问题标题】:Displaying the SKU in cart item names on WooCommerce cart page在 WooCommerce 购物车页面上的购物车项目名称中显示 SKU
【发布时间】:2017-08-09 07:46:19
【问题描述】:

我在购物车页面中显示带有产品标题的 SKU 值,但现在每个单词 SKU 和产品标题分别链接。我怎样才能只显示单个链接而不是单独链接。

用于显示 SKU 值在购物车页面中添加了此代码 Functions.php

add_filter( 'woocommerce_cart_item_name', 'add_sku_in_cart', 20, 3);
function add_sku_in_cart( $title, $values, $cart_item_key ) {
$sku = $values['data']->get_sku();
$url = $values['data']->get_permalink( $product->ID );
$final='<a href="'. $url .'">SKU: '. $sku .'</a>';
return $title ?  sprintf("%s  - ", $final) .$title : $final;
}       

示例 现在显示这个

<a href="http://localhost/test/?product=child-product">SKU: asda121 </a> - <a href="http://localhost/test/?product=child-product">Child Product</a>

但我想要这样

<a href="http://localhost/test/?product=child-product">SKU: asda121 - Child Product</a>                               

【问题讨论】:

  • 因为 $title 不在 a 标签内。

标签: php wordpress woocommerce cart sku


【解决方案1】:

您应该以这种方式使用挂在 woocommerce_cart_item_name 过滤器挂钩中的自定义函数,以在 Sku 和项目名称上获得相同的链接(当 sku 存在时)

add_filter( 'woocommerce_cart_item_name', 'customizing_cart_item_name', 10, 3 );
function customizing_cart_item_name( $item_name, $cart_item, $cart_item_key  ) {

    $product = $cart_item['data'];
    $sku = $product->get_sku();

    // When sku doesn't exist
    if(empty($sku)) return $item_name;

    $product_name = $product->get_name();
    $product_id = $product->get_id();
    $url = $product->get_permalink( $product_id );

    return '<a href="'. $url .'">Sku: ' . $sku . ' - ' .$product_name . '<a>';
}

代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件中。

经过测试并且可以工作

【讨论】:

    【解决方案2】:
    add_filter( 'woocommerce_cart_item_name', 'add_sku_in_cart', 20, 3);
    
    function add_sku_in_cart( $title, $values, $cart_item_key ) {
    
        $sku = $values['data']->get_sku();
        $url = $values['data']->get_permalink( $product->ID );
        $final='SKU: '. $sku . ($title ? ' - ' . $title : '');
        return '<a href="'. $url .'">' . $final . '</a>';
    } 
    

    【讨论】:

    【解决方案3】:
    add_filter( 'woocommerce_cart_item_name', 'add_sku_in_cart', 20, 3);
    function add_sku_in_cart(){
    global $woocommerce;
    $items = $woocommerce->cart->get_cart();
    $product_names = array();
    
    foreach($items as $item => $values) { 
    
        // Retrieve WC_Product object from the product-id:
        $_woo_product = wc_get_product( $values['product_id'] );
    
        // Get SKU from the WC_Product object:
        $product_names[] = $_woo_product->get_sku(); 
     }
    } 
    

    【讨论】:

    • 请不要用纯代码的sn-ps回答,解释为什么你的回答对用户有帮助
    • 用户想在购物车页面中显示 SKU 值我使用了过滤器挂钩,用于使用此行在购物车页面中添加内容 $items = $woocommerce->cart->get_cart();我们可以获取产品内容并使用循环我可以在购物车页面中的特定位置显示 sku 值以及产品标题。我们必须在functions.php文件中添加这个带有钩子的函数,以便所有产品的SKU值都将在woocommerce的购物车页面中显示为产品标题
    • 对我来说,这段代码不起作用。你能重新检查一下吗?我在购物车页面中看不到任何内容
    猜你喜欢
    • 2013-07-05
    • 2016-03-30
    • 1970-01-01
    • 2018-02-01
    • 2019-09-18
    • 2017-12-13
    • 2020-05-09
    • 1970-01-01
    • 2013-12-13
    相关资源
    最近更新 更多