Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php WooCommerce:将输入添加到购物车,然后将数据添加到购物车项目_Php_Wordpress_Woocommerce_Hook Woocommerce - Fatal编程技术网

Php WooCommerce:将输入添加到购物车,然后将数据添加到购物车项目

Php WooCommerce:将输入添加到购物车,然后将数据添加到购物车项目,php,wordpress,woocommerce,hook-woocommerce,Php,Wordpress,Woocommerce,Hook Woocommerce,我一直在尝试在购物车上添加一个选项,以便客户可以重命名产品。这用于他们跟踪将发送给不同人员的同一类型的不同产品(制作篮系统) 我使用了woocommerce\u cart\u item\u name过滤器将输入字段添加到购物车项目中。当用户单击输入框旁边的“添加”按钮时,我正在使用javascript中的答案并触发wc\u update\u cart,但它似乎根本不起作用 在添加产品后,是否有其他方法可以将此自定义名称数据添加到相应的购物车项目中?我知道我可以在将产品添加到购物车时完成这项工作(

我一直在尝试在购物车上添加一个选项,以便客户可以重命名产品。这用于他们跟踪将发送给不同人员的同一类型的不同产品(制作篮系统)

我使用了
woocommerce\u cart\u item\u name
过滤器将输入字段添加到购物车项目中。当用户单击输入框旁边的“添加”按钮时,我正在使用javascript中的答案并触发
wc\u update\u cart
,但它似乎根本不起作用

在添加产品后,是否有其他方法可以将此自定义名称数据添加到相应的购物车项目中?我知道我可以在将产品添加到购物车时完成这项工作(或者是一种解决方法,即删除该产品并将其添加到新字段中。但我不想这样做)

提前感谢您的帮助。

发现了问题

我在输入框旁边的“添加”按钮,用来触发
wc\u update\u cart
jQuery(document.trigger('wc\u update\u cart')
没有验证我在php端对
$\u POST['update\u cart']
的值所做的检查。当我意识到我将我的
woocommerce\u cart\u item\u name
过滤器更改为仅添加输入框,并使用
Update Basket
按钮更新名称。因此,我的代码更改为:

<?php
    add_filter('woocommerce_cart_item_name','custom_naming_front',10,3);

    function custom_naming_front($product_title,$cart_item,$cart_item_key){
        if(isset($cart_item['custom_name']) && !empty($cart_item['custom_name'])){
            $product_title=$cart_item['custom_name'];
        }
        $product_title .= '<div class="custom-name-form-wrapper" id="custom-name'.$cart_item_key.'">
                                    <input type="text" name="cart['.$cart_item_key.'][custom_name]" id="custom_name_text'.$cart_item_key.'" value="" placeholder="enter the name you want to give this product" />
                                </div>
                            </div>';

        return $product_title;

    }
?>

显示更新名称的函数如下所示:

<?php

    function custom_name_save_to_cart(){
        if ( ( ! empty( $_POST['apply_coupon'] ) || ! empty( $_POST['update_cart'] ) || ! empty( $_POST['proceed'] ) ) && isset( $_POST['_wpnonce'] ) && wp_verify_nonce( $_POST['_wpnonce'], 'woocommerce-cart' ) ) {
                $cart_totals  = isset( $_POST['cart'] ) ? $_POST['cart'] : '';
            if ( ! WC()->cart->is_empty()) {
                foreach ( WC()->cart->cart_contents as $cart_item_key => $values ) {
                    if ( ! isset( $cart_totals[ $cart_item_key ] ) || ! isset( $cart_totals[ $cart_item_key ]['custom_name'] ) ) {
                        continue;
                    }
                    WC()->cart->cart_contents[ $cart_item_key ]['custom_name'] = $cart_totals[ $cart_item_key ]['custom_name'];

                }
            }

        }

     }
    add_action( 'wp_loaded', 'custom_name_save_to_cart', 25);
?>