7

In woocommerce, I need get the user ID of each product within the cart, The user ID isn't from the customer, but is the user who created and published the product that is currently in the shopping cart (the author post).

I have this code that I got here: WooCommerce Get Order Product Details Before Payment in Plugin

code shared by: @LoicTheAztec

foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ){
    $product_id = $cart_item['product_id']; // Product ID
    $product_obj = wc_get_product($product_id); // Product Object
    $product_qty = $cart_item['quantity']; // Product quantity
    $product_price = $cart_item['data']->price; // Product price
    $product_total_stock = $cart_item['data']->total_stock; // Product stock
    $product_type = $cart_item['data']->product_type; // Product type
    $product_name = $cart_item['data']->post->post_title; // Product Title (Name)
    $product_slug = $cart_item['data']->post->post_name; // Product Slug
    $product_description = $cart_item['data']->post->post_content; // Product description
    $product_excerpt = $cart_item['data']->post->post_excerpt; // Product short description
    $product_post_type = $cart_item['data']->post->post_type; // Product post type

    $cart_line_total = $cart_item['line_total']; // Cart item line total
    $cart_line_tax = $cart_item['line_tax']; // Cart item line tax total
    $cart_line_subtotal = $cart_item['line_subtotal']; // Cart item line subtotal
    $cart_line_subtotal_tax = $cart_item['line_subtotal_tax']; // Cart item line tax subtotal

    // variable products
    $variation_id = $cart_item['variation_id']; // Product Variation ID
    if($variation_id != 0){
        $product_variation_obj = wc_get_product($variation_id); // Product variation Object
        $variation_array = $cart_item['variation']; // variation attributes + values
    }
}

It is perfect, but I also need to get the post author ID

Any help is appreciated.

Noe_Mares
  • 95
  • 2
  • 9

1 Answers1

8

Try the following, to get the post author from the product (cart item):

// For all Woocommerce versions
foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ){
    $post_obj    = get_post( $cart_item['product_id'] ); // The WP_Post object
    $post_author = $post_obj->post_author; // <=== The post author ID
}

I have made an update on the linked answer in your question (as it was not compatible with Woocommerce versions 3+)

For Woocommerce before version 3 (so 2.6.x for example), you can use:

foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ){
    $authror_id = $cart_item['data']->post->post_author; // <=== The post author ID
}
LoicTheAztec
  • 229,944
  • 23
  • 356
  • 399
  • Woow, you are great! I was looking for Wordpress documentation and could not find anything that would work well. Its works great, thanks for the help. Do you know where I can find documentation that is easier to understand for beginner Wordpress developers? – Noe_Mares May 22 '18 at 17:14
  • 1
    @Noe_Mares For Wordpress is something very huge and it's a bit less for WooCommerce. It's not easy to understand, It's something very progressive. There is many web sites where you can find tutorials and information. For wordpress maybe: http://www.wpbeginner.com/ … For Woocommerce is something different, more difficult and sensible – LoicTheAztec May 22 '18 at 17:33
  • I understand, I will be amazed to gradually understand the Wordpress and Woocommerce code. Thanks again, I send you a big hug :) – Noe_Mares May 22 '18 at 18:13
  • @Noe_Mares We have all started as you. – LoicTheAztec May 22 '18 at 18:15