I have a multivendor Woocommerce shop using Dokan plugin and I'm trying to split out the shopping cart into sections based on who the vendor is. For example:
- Vendor 1
- Product C
- Product B
- Vendor 2
- Product A
Dokan uses a custom role 'vendor' to extend the user class, so to get the ID of the vendors, I should be able to use something like:
$post_data = get_post( $cart_item['product_id'] );
$vendor_id = $post_data->post_author;
This does work, but it will only get the first vendor ID and simply repeats that for all remaining products in the cart. I know this is because I'm not retrieving an array but I can't really find anything in the WP documentation on how to get an array of author IDs (other than wp_list_authors, but that doesn't work well).
As an experiment, I managed to get the splitting + sorting working so long as I'm sorting by categories, since I can use wp_get_post_terms(). I can't replicate this for author data, though...
Current (relevant) code is below:
<?php
$cat_sort = array();
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
$product_id = $cart_item['product_id'];
$cat_ids = wp_get_post_terms( $product_id, 'product_cat', array( 'fields' => 'ids' ) );
foreach ( $cat_ids as $id ) {
$cat_sort[$id][$cart_item_key] = $cart_item;
}
}
ksort( $cat_sort );
$grouped_cart_items = array();
foreach ( $cat_sort as $cat_id => $cart_items ) {
$term = get_term( $cat_id, 'product_cat' );
?>
<tr>
<td colspan="6" class=""><strong><?php echo $term->name; ?></strong></td>
</tr>
(After this is the actual product loop which shouldn't be important here because their sort ordering happens in the above code)
Any ideas on how I can get author info for the cart products the same way I can get the categories? I'm pretty stumped...
Thanks in advance for any and all assistance!