当前位置: 首页 > 知识库问答 >
问题:

WooCommerce-编辑购物车、收银台和“浮动购物车”插件上的产品名称

林博厚
2023-03-14

我有两个代码来更改我的WooCommerce变量产品的产品名称。第一个可以在任何地方正常工作,但不是在我的浮动车插件(它使用默认的产品名称)。

    add_action( 'woocommerce_before_calculate_totals', 'custom_cart_items_prices', 10, 1 );
function custom_cart_items_prices( $cart ) {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( did_action( 'woocommerce_before_calculate_totals' ) >= 2 )
        return;

    foreach ( $cart->get_cart() as $cart_item ) {

        $product = $cart_item['data'];
        $modell = $product->get_attribute('pa_modell');
        $reparatur = $product->get_attribute('pa_reparatur');

        $original_name = method_exists( $product, 'get_name' ) ? $product->get_name() : $product->post->post_title;

        $new_name = '<class="new-product-name">' . $original_name . __( " ", "woocommerce") . $modell . __( " - ", "woocommerce") . $reparatur;

        if( method_exists( $product, 'set_name' ) )
            $product->set_name( $new_name );
        else
            $product->post->post_title = $new_name;
    }
}

第二个是我的“浮动购物车插件”,但如果我也使用它,我在购物车和结帐页面表上有两次相同的名字。

    function show_model_in_cart_items( $item_name, $cart_item, $cart_item_key ) {

    $product = $cart_item['data'];
    $modell = $product->get_attribute('pa_modell');
    $reparatur = $product->get_attribute('pa_reparatur');

    {
        $item_name = '<class="product-model">' . $item_name . __( " ", "woocommerce") . $modell . __( " - ", "woocommerce") . $reparatur;
    } 

    return $item_name;
}
add_filter( 'woocommerce_cart_item_name', 'show_model_in_cart_items', 99, 3 );

这些代码的某些部分是在互联网上找到的,其他部分是我自己写的。有没有人知道如何组合它,使它在任何地方都可以工作,而不必在购物车中使用相同的名称2次?

共有1个答案

卢和昶
2023-03-14

我找到了一个解决办法。有时候很简单...就像一个简单的如果和其他。

add_filter( 'woocommerce_cart_item_name', 'show_model_in_cart_items', 99, 3 );
function show_model_in_cart_items( $item_name, $cart_item, $cart_item_key ) {

       if ( is_checkout() ) {
       return $item_name;
       }
       else {
    $product = $cart_item['data'];
    $modell = $product->get_attribute('pa_modell');
    $reparatur = $product->get_attribute('pa_reparatur');

    {
        $item_name = '<class="reparatur-beschreibung">' . $item_name . __( " ", "woocommerce") . $modell . __( " - ", "woocommerce") . $reparatur;
    } 
        return $item_name;
}}

现在,浮动购物车插件可以在任何地方使用它,除了结帐,我有其他代码来更正产品标题。

 类似资料:
  • 我是新来的。我想将产品添加到购物车并列出购物车的所有产品。我已经将Co-Cart插件添加到我的服务器,并且我正在使用Co-Cart API实现购物车相关功能。 我面临的问题是,我不能在我的反应本地应用程序中查看购物车产品。以下是我现在使用的API: 1.将产品添加到购物车: 方法:邮寄 URL:https://www.myhost.com/wp-json/wc/v2/cart/add?token=

  • 问题内容: 我有上面的代码。 如果我在cart_item上运行print_r,我将得到一个多维数组: 我如何只获得product_id? 我试过$ test = 没用 问题答案: 要获取 foreach循环中的每个购物车商品(对于简单产品): 如果是可变产品,请获取 : 或在两种情况下 ( Woocommerce 3+中 的 Object在哪里) : 更新: 循环外使用产品ID 1)打破循环 (仅

  • 如何在Woocommerce购物车页面中的购物车项目名称后添加产品ID? 我知道我需要先不返回,因为这样会把我从函数中拉出来,但我很好奇我该如何去做这件事。

  • 我经营一家Woocommerce商店,该商店也提供免费产品(_常规价格=0)。客户必须选择数量并将其添加到购物车中,然后下订单才能收到产品。但这并不是Woocommerce的工作原理,它隐藏了所有价格为0的产品的“添加到购物车”链接。并且不会在购物车页面中显示它们。有没有解决这个问题的办法?非常感谢。

  • 你在为它做什么?我在文件末尾(wp-content/plugins/woocommerce/woocommerce.php)写了这个字符串: 但当我从购物车中删除项目时,它就不起作用了! 但也不起作用