Php 我的购物车项目数据为';I don’我没有按顺序出现

Php 我的购物车项目数据为';I don’我没有按顺序出现,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我在一个网站上工作,该网站允许用户从表单中输入数据并将其附加到产品上。我最初使用的是: $cart_item_data ['Entry Link'] = $formUrl; $woocommerce->cart->add_to_cart($productID,$quantity,0,$cart_item_data); $formUrl是指向表单数据的链接。每当用户下订单时,产品下都会有带有url的“入口链接” 后来,我们不得不在产品中添加变体,使产品线看起来像: $woocomm

我在一个网站上工作,该网站允许用户从表单中输入数据并将其附加到产品上。我最初使用的是:

$cart_item_data ['Entry Link'] = $formUrl;
$woocommerce->cart->add_to_cart($productID,$quantity,0,$cart_item_data);
$formUrl是指向表单数据的链接。每当用户下订单时,产品下都会有带有url的“入口链接”

后来,我们不得不在产品中添加变体,使产品线看起来像:

$woocommerce->cart->add_to_cart($productID,$quantity,$typeID,$cart_item_data);
$typeID是变体ID。一旦我添加了$typeID,只有变体显示在后端的订单上,而不是“条目链接”

如果我将$typeID重置为“0”,则在下订单时会显示输入链接。我还尝试使用变体id代替产品id,但仍然遇到同样的问题。我查看了文档,它应该可以工作了

我需要同时输入变体和“输入链接”,并从后端可见


这是Vincenzo Di Gaetano在评论中要求的部分

$formUrl = $_SERVER['SERVER_NAME'].'/wp-admin/admin.php?page=gf_entries&view=entry&id='.$formID.'&lid='.$entryID;
$cart_item_data['Entry Link'] = $formUrl;
$variationAttributes['Per'] = 1000;
$woocommerce->cart->add_to_cart($productID,$quantity,$typeID,$variationAttributes,$cart_item_data);

我添加了variationAttributes,其中“Per”与属性名对齐,“1000”表示该属性的值。我把它硬编码在测试中。当我只回显$formUrl时,它确实返回了正确的url对于
WC\u cart
类的
add\u to\u cart
方法,您只设置了4个参数

尝试替换此:

$woocommerce->cart->add_to_cart( $productID, $quantity, $typeID, $cart_item_data );
与:

以下是如何向购物车添加变体的示例:

这不足以将购物车项目数据显示为订单项目的元数据

基于此问题您需要将值保存为订单项元数据

// save the cart item data as custom order item meta data
add_action( 'woocommerce_checkout_create_order_line_item', 'save_cart_item_data_as_order_item_meta_data', 20, 4 );
function save_cart_item_data_as_order_item_meta_data( $item, $cart_item_key, $values, $order ) {
    if ( isset( $values['Entry Link'] ) ) {
        $item->update_meta_data( __( 'Entry Link'), $values['Entry Link'] );
    }
}
该代码已经过测试,可以正常工作。将其添加到活动主题的functions.php中

结果如下:


我之前尝试过(我应该提到),但结果仍然相同。在将产品变体添加到购物车时,您能否显示完整代码?我将其添加到我的原始帖子末尾。我已更新了我的答案。耶!这很好用!非常感谢:)这整个星期都是个大问题!你是个救生员
// save the cart item data as custom order item meta data
add_action( 'woocommerce_checkout_create_order_line_item', 'save_cart_item_data_as_order_item_meta_data', 20, 4 );
function save_cart_item_data_as_order_item_meta_data( $item, $cart_item_key, $values, $order ) {
    if ( isset( $values['Entry Link'] ) ) {
        $item->update_meta_data( __( 'Entry Link'), $values['Entry Link'] );
    }
}