【问题标题】:Add a custom cart item value to WooCommerce order item meta data将自定义购物车项目值添加到 WooCommerce 订单项目元数据
【发布时间】:2017-09-07 09:01:39
【问题描述】:

我正在尝试添加订单项元数据,并希望在用户提交订单时在我的 {prefix}woocommerce_order_itemmeta 表中看到它。

我使用woocommerce_add_cart_item_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;
}

这是有效的。当我 var_dump 我的购物车时,肯定存在我的参数。

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

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

【问题讨论】:

    标签: php wordpress woocommerce hook-woocommerce orders


    【解决方案1】:

    您需要将此数据保存在订单商品元数据中:

    // 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 文件或任何插件文件中。

    此代码已经过测试并且可以工作。

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

    【讨论】:

      【解决方案2】:
      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 );
      

      【讨论】:

        猜你喜欢
        • 2018-05-31
        • 2021-01-21
        • 1970-01-01
        • 1970-01-01
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        • 2017-04-21
        • 2021-04-23
        相关资源
        最近更新 更多