Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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 将自定义购物车项目值添加到商业订单项目元数据_Php_Wordpress_Woocommerce_Hook Woocommerce_Orders - Fatal编程技术网

Php 将自定义购物车项目值添加到商业订单项目元数据

Php 将自定义购物车项目值添加到商业订单项目元数据,php,wordpress,woocommerce,hook-woocommerce,orders,Php,Wordpress,Woocommerce,Hook Woocommerce,Orders,我正在尝试添加订单项元,并希望在用户提交订单时在我的{prefix}woocmerce\u order\u itemmeta表中看到它 我使用woocommerce\u add\u cart\u item\u data过滤器添加我的值: add_filter( 'woocommerce_add_cart_item_data', 'aa_func_20170206100217', 10, 3 ); function aa_func_20170206100217( $cart_item_data,

我正在尝试添加订单项元,并希望在用户提交订单时在我的{prefix}woocmerce\u order\u itemmeta表中看到它

我使用
woocommerce\u add\u cart\u item\u data
过滤器添加我的值:

add_filter( 'woocommerce_add_cart_item_data', 'aa_func_20170206100217', 10, 3 );
function aa_func_20170206100217( $cart_item_data, $product_id, $variation_id ) {
    $data = $_POST;

    if ( isset( $data[ 'selected_date_event' ] ) ) {
        $selected_date_event = [
            'selected_date_event' => $data[ 'selected_date_event' ]
        ];

        return array_merge( $cart_item_data, $selected_date_event );
    }

    return $cart_item_data;
}
这就是我的作品。当我卸下我的购物车时,我的参数肯定存在

但当用户提交订单时,我在数据库中找不到这个参数


我错过了什么?如何将其存储在订单项元中?哪个钩子适合这个东西?

您需要保存这些数据,以便项目元数据:

// ADD THE INFORMATION AS ORDER ITEM META DATA SO THAT IT CAN BE SEEN AS PART OF THE ORDER
add_action('woocommerce_add_order_item_meta','add_product_custom_field_to_order_item_meta', 9, 3 );
function add_product_custom_field_to_order_item_meta( $item_id, $item_values, $item_key ) {
    // the meta-key is 'Date event' because it's going to be the label too
    if( ! empty( $item_values['selected_date_event'] ) )
        wc_update_order_item_meta( $item_id, 'Date event', sanitize_text_field( $item_values['selected_date_event'] ) );
}
代码位于活动子主题(或主题)的function.php文件或任何插件文件中

此代码经过测试并正常工作

因此,这将显示在收到订单的订单项目数据、我的帐户订单视图和电子邮件通知中

add_filter( 'woocommerce_add_cart_item_data', 'aa_func_20170206100217', 10, 3 );
function aa_func_20170206100217( $cart_item_data, $product_id, $variation_id ) {
    $data = $_POST;

    if ( isset( $data[ 'selected_date_event' ] ) ) {
        $selected_date_event = [
            'selected_date_event' => $data[ 'selected_date_event' ]
        ];

        return array_merge( $cart_item_data, $selected_date_event );
    }

    return $cart_item_data;
}
add_filter( 'woocommerce_get_cart_item_from_session', function ( $cartItemData, $cartItemSessionData, $cartItemKey ) {
    if ( isset( $cartItemSessionData['selected_date_event'] ) ) {
        $cartItemData['selected_date_event'] = $cartItemSessionData['selected_date_event'];
    }

    return $cartItemData;
}, 10, 3 );

add_filter( 'woocommerce_get_item_data', function ( $data, $cartItem ) {
    if ( isset( $cartItem['selected_date_event'] ) ) {
        $data[] = array(
            'name' => 'selected_date_event',
            'value' => $cartItem['selected_date_event']
        );
    }

    return $data;
}, 10, 2 );

add_action( 'woocommerce_add_order_item_meta', function ( $itemId, $values, $key ) {
    if ( isset( $values['myCustomData'] ) ) {
        wc_add_order_item_meta( $itemId, 'selected_date_event', $values['selected_date_event'] );
    }
}, 10, 3 );