从WooCommerce中的订单项目中获取自定义变化值



我正在尝试使客户在结帐时从订单(通过ID或其他方式)选出的变异值映射到变量$存储和用于构建API URL的变量。

我尝试了多种方法将数据获取到变量上,但是API URL失败了,这使我相信我没有变量上的缩进值。

我当前的代码如下(摘录):

add_action( 'woocommerce_order_status_processing', 'my_function' );
    function my_function( $order_id ) {
    $order = wc_get_order( $order_id );
    $items = $order->get_items();
        foreach ( $items as $key => $item ) {
                $storage = get_post_meta( $key, 'attribute_addon-storage' );
                $tier = get_post_meta( $key, 'attribute_subscription-type' );

有人知道我如何抓住这两个变量addon-storage和订阅类型的值?

我可以看到我想在woocommerce_order_itemmeta表中获得数据库的值。

我可以从那里获得值吗?

编辑:

也可以根据Loictheaztec的建议,正确的方法是获取我在Woocommerce_order_itemmeta表中看到的数据的值,如$ meta_key是:

add_action( 'woocommerce_order_status_processing', 'my_function', 10, 1 );
    function my_function( $order_id ) {
    $order = wc_get_order( $order_id );
    $items = $order->get_items();
        foreach ( $items as $key => $item ) {
                $storage = wc_get_order_item_meta( $key, 'addon-storage', true );
                $tier = wc_get_order_item_meta( $key, 'subscription-type', true );
                $anyMetaValue = wc_get_order_item_meta( $key, '$meta_key', true );
// Then I can create the variable I need in the the API url with:
$package = "$tier$storage";

更新:您正在混淆订单元元数据和订购项目元数据,它们是非常不同的内容,并且位于不同的数据库表中。

您的代码也不完整,您不会使用 get_post_meta() 使用$key(这是项目ID)...

  • get_post_meta( $order_id, 'meta_key', true )功能将寻找订单元数据数据(与订单项目无关),并将订单ID用作参数。
  • wc_get_order_item_meta( $item_id, 'meta_key', true )函数将寻找实现的订单项元数据,并将项目ID用作参数(您的代码中的$key)…
    因此,该功能应在foreach循环中使用,在此获取订单项目数据。

然后2种方法:

  1. 您应该在数据库中查看wp_postmetawp_woocommerce_order_itemmeta表中的最后一个订单ID(通过phpmyadmin),以查看位于位置的数据…
  2. 或者,您可以使用以下代码(仅用于测试),以输出订单项目原始数据所在的位置。
    此原始数据将在商店中输出 Archive 产品页面,仅可见用于登录中。您将需要来定义其中的订单ID。

这是此测试功能

add_action( 'woocommerce_before_main_content', 'my_testing_order_function' );
function my_testing_order_function() {
    // Define an Order ID
    $order_id = 724;
    // Only for admin user role
    if( ! current_user_can('edit_products')) return;
    $order = wc_get_order( $order_id ); // The order object
    foreach ( $order->get_items() as $item_id => $item ) {
        // Order item meta data Raw output
        echo "<pre>ORDER ITEM META DATA - (Item_id $item_id):"; print_r($item->get_data()); echo'</pre>';
        echo "<pre>ORDER ITEM META META DATA - (Item_id $item_id):"; print_r($item->get_meta_data()); echo'</pre>';
    }
}

现在,您拥有找到和获取数据所需的一切。下面的代码通常适用于您,使您可以从变体中获取数据:

add_action( 'woocommerce_order_status_processing', 'my_function', 10, 1 );
function my_function( $order_id ) {
    $order = wc_get_order( $order_id );
    foreach ( $order->get_items() as $key => $item ) {
        // get the data
        $storage = wc_get_order_item_meta( $item_id, 'attribute_addon-storage', true );
        $tier = wc_get_order_item_meta( $item_id, 'attribute_subscription-type', true );
    }
}

相关内容

  • 没有找到相关文章

最新更新