相关疑难解决方法(0)

如何从WooCommerce中的订单获取客户详细信息?

我有一个功能,这样做:

$order = new WC_Order($order_id);
$customer = new WC_Customer( $order_id );
Run Code Online (Sandbox Code Playgroud)

如何从中获取客户详细信息?我已经尝试了文档中的所有内容,但不知何故,只是存在一些细节,但其余的不是,例如

$data['Address'] = $customer->get_address() . ' ' . $customer->get_address_2();
$data['ZipCode'] = $customer->get_postcode();
Run Code Online (Sandbox Code Playgroud)

是空的.

var_dump($customer)
Run Code Online (Sandbox Code Playgroud)

生产:

object(WC_Customer)#654(2){["_ data":protected] => array(14){["country"] => string(2)"IT"> ["state"] => string(0) ""["postcode"] => string(0)""["city"] => string(0)""["address"] = >> string(0)""["address_2"] => string (0)""["shipping_country"] => string(2)"IT"["shipping_state"] => string(2)"BG"["shipping_postcode"] => string(0)""["shipping_city" ] = >> string(0)""["shipping_address"] => string(0)""["shipping_address_2"] => string(0)""["is_vat_exempt"] => bool(false)["calculated_shipping "] => bool(false)}?["_changed":"WC_Customer":private] => bool(false)}

正如你所看到的,这个城市是现在的,但其余的都是空的.我已经检查了客户的WP_usermeta和管理面板,所有数据都在那里.

有什么想法吗?

php wordpress woocommerce

23
推荐指数
8
解决办法
11万
查看次数

Woocommerce - 获取订单商品的价格和数量.

使用Woocommerce 2.6.8,我无法获得文档中描述的订单项数据信息,这里也是SO.

我想要的只是得到行项目价格和数量,这应该是这样简单:

$order = new WC_Order( $order_id );
$order_items = $order->get_items();
 foreach ($order_items as $items_key => $items_value) {  
           echo $items_value['name']; //this works
           echo $items_value['qty']; //this doesn't work
           echo $items_value[item_meta][_qty][0]; //also doesn't work
           echo $items_value['line_total']; //this doesn't work
   }
Run Code Online (Sandbox Code Playgroud)

仔细观察返回的内容

Array
(
[1] => Array
    (
        [name] => Sample Product 1
        [type] => line_item
        [item_meta] => 
        [item_meta_array] => Array
            (
                [1] => stdClass Object
                    (
                        [key] => _qty
                        [value] => 1
                    )

                [2] => stdClass Object …
Run Code Online (Sandbox Code Playgroud)

php wordpress items orders woocommerce

18
推荐指数
2
解决办法
5万
查看次数

在Woocommerce 3中获取订单商品和WC_Order_Item_Product

好了,阅读Woocommerce 3.0+的变化,似乎你不能再直接访问这个类了,所以我认为这个代码需要改变,因为它正在吐出一个错误:

$order_item_id = 15;
$order_item = new WC_Order_Item_Product($order_item_id);
$return = $order_item->get_id() ? $order_item : false;
Run Code Online (Sandbox Code Playgroud)

但是,令人尴尬的是,我不确定如何更改此代码以在此类的最新版本中使用正确的新getter和setter函数,该类不再具有构造.怎么做得好?我没有看到任何get关于获得订单项的功能与上述相同.
https://docs.woocommerce.com/wc-apidocs/class-WC_Order_Item_Product.html

也许我在这里忽视一些事情?

php wordpress product orders woocommerce

18
推荐指数
1
解决办法
3万
查看次数

如何获取订单商品ID以获取一些产品元数据?

我试图通过使用以下方法从Woocommerce的订单中提取项目元值:

$data = wc_get_order_item_meta( $item, '_tmcartepo_data', true );
Run Code Online (Sandbox Code Playgroud)

但是,我找不到将order_item_id作为第一个参数的方法(使用get_items)

global $woocommerce, $post, $wpdb;
$order = new WC_Order($post->ID);
$items = $order->get_items(); 

foreach ( $items as $item ) {
    $item_id = $item['order_item_id']; //???
    $data = wc_get_order_item_meta( $item_id, '_tmcartepo_data', true );
    $a = $data[0]['value'];
    $b = $data[1]['value'];
    echo $a;
    echo $b;
}
Run Code Online (Sandbox Code Playgroud)

我的意思是这个订单item_id(1和2)

数据库中的Order_item_id - 图像

我该怎么办?

谢谢.

php wordpress product orders woocommerce

13
推荐指数
2
解决办法
4万
查看次数

成功结账后获取订单数据

在WooCommerce中,我想在客户成功签出后向API发送请求.它基本上是一个网站,客户在那里销售在线课程(像udemy).

当客户退房时,我想发送API请求并为该特定课程注册用户.我尝试了几个WooCommerce钩子,但没有一个对我有效.

这是我正在使用的代码:

add_action('woocommerce_checkout_order_processed', 'enroll_student', 10, 1);

function enroll_student($order_id)
{
    echo $order_id;
    echo "Hooked";
}
Run Code Online (Sandbox Code Playgroud)

我在激活的插件中编写此代码,为了方便起见,我目前正在使用Cash on Delivery方法.

任何人都可以指出我出错的地方,因为当我结账时,我无法看到消息"挂钩"我正在打印也不是$order_id

我带我到成功页面,并没有显示我正在打印的这两件事.

php wordpress checkout orders woocommerce

12
推荐指数
3
解决办法
2万
查看次数

Woocommerce 用于订单状态更改的挂钩

在我的自定义插件中,我需要捕获每次订单状态从 变为 的情况,wc_on_hold因此wc_completed我尝试写下:

function so_status_completed( $order_id, $old_status, $new_status ) {       
    
    // if user is active , then get order amount and do all other personal calculations
    
    global $wpdb;
    $order = wc_get_order( $order_id );
    //$payment_method = $order->get_payment_method(); //returns payment method bacs,cheque,cod etc
    $user_id = $order->get_user_id();
    $total = $order->get_total();
    $order_data = $order->get_data(); 
    //$order_total = $order->get_formatted_order_total();
    $order_total = $order->get_total();
    
    echo '<script>console.log("Debug Objects: Check order_total ' . $order_total. '");</script>';

}
add_action('woocommerce_order_payment_status_changed','so_status_completed',10,1);
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将订单测试从暂停更改为完成时,我无法在 Chrome 控制台上回显给我订单价格......也许使用 add_action 不是将侦听器置于该事件的正确方法?

另外,由于我就在这里,我正在使用 $order-get_total() ,我在网上搜索了它的功能,但没有找到深入的文档,所以我想问你该方法是否是免费检索订单金额的正确方法应用?

谢谢!干杯!!!

wordpress orders woocommerce hook-woocommerce woocommerce-theming

11
推荐指数
1
解决办法
1万
查看次数

获取woocommerce 3中订单商品的元数据

如何获得产品woocommerce的元数据?我有我的产品现场定制,我需要获取这些数据.

{"ID":151,
 "ORDER_ID":251,
 "NAME":"car",
 "PRODUCT_ID":87,
 "VARIATION_ID":0,
 "QUANTITY":1,
 "TAX_CLASS":"",
 "SUBTOTAL":"3",
 "SUBTOTAL_TAX":"0",
 "TOTAL":"3",
 "TOTAL_TAX":"0",
 "TAXES":{"TOTAL":[],
          "SUBTOTAL":[]},
 "META_DATA":[{"ID":1433,
               "KEY":"my_car",
               "VALUE":"red"}]}
Run Code Online (Sandbox Code Playgroud)

但总是结果是一样的,我无法进入现场meta_data.该领域IDname我有权访问.

我用get_data()get_item(),但是当我尝试访问get_data()到外地 meta_data它给我这个错误:

 UNCAUGHT ERROR: CANNOT USE OBJECT OF TYPE WC_DATETIME AS ARRAY IN  
Run Code Online (Sandbox Code Playgroud)

并且get_item(),meta_data由于受到保护,该值为null.

我怎样才能获得这些价值?

php wordpress metadata orders woocommerce

9
推荐指数
1
解决办法
1万
查看次数

在Woocommerce 3中访问订单项受保护的数据

我正在尝试获取订单的订单项.

我这样做:

$order = new WC_Order(147);
foreach ($order->get_items() as $key => $lineItem) {
    print_r('<pre>----');
    print_r($lineItem);
    print_r('----</pre>');
}
Run Code Online (Sandbox Code Playgroud)

我可以看到我需要的所有数据,但数组显示:

[meta_data:protected] => Array
Run Code Online (Sandbox Code Playgroud)

如何访问此数组以获取值?

谢谢.

php wordpress class orders woocommerce

6
推荐指数
1
解决办法
1万
查看次数

如何从 Woocommerce 中的订单商品获取产品 sku

对于页面“woocommerce_thankyou”上的 Api 需要获取 sku。我有:

$order = wc_get_order( $order_id ); 
foreach ($order->get_items() as $item_key => $item_values):
   $product = new WC_Product($item_id);
   $item_sku[] = $product->get_sku();
endforeach;
Run Code Online (Sandbox Code Playgroud)

但行不通。

php wordpress orders woocommerce woocommerce-rest-api

6
推荐指数
1
解决办法
2万
查看次数

如何在WooCommerce 3+中从数组获取订单元

我需要创建一个向我的插件WooCommerce Dymo Print返回值的函数。它要求$order_id$label$object。该$object是场我需要的价值回归。

我创建了以下代码:

add_filter('wc_dymo_order_function', 'wpf_dymo_order_output',10,3);
function wpf_dymo_order_output( $order_id, $label, $object ) {

    if($label=='shipping' && $object='DEL_DATE') {

        //Get order from order ID
        $order=wc_get_order($order_id);
        $del_date='';

        $order_data = $order->get_data(); // The Order data
        $order_del_date = $order_data['delivery_date'];

        //Return a list (string) of all product inside this order, make sure it's well formatted before printing.
        return $order_del_date;
    } else {
        //Return order_id if is not correct label and object
        return '';
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,它似乎不起作用,我认为是因为delivery_date嵌套在数组中,并且我没有正确获取它。 …

php wordpress woocommerce

5
推荐指数
1
解决办法
7501
查看次数