5
votes

With woocommerce I am using Dokan plugin and I am trying to display the vendor name, rating and vendor location on single product pages.

I tried this code to display vendor name but no luck:

//show store name
add_action( 'woocommerce_single_product_summary', 'show_store_name', 20 );
function show_store_name() {
    printf( '<b>Seller Name:</b> <a href="%s">%s</a>', dokan_get_store_url( $author->ID ), $store_info['store_name'] );
}

Any help is appreciated.

2

2 Answers

5
votes

I don't use dokan plugin. Here is the way to get the (post) author ID and to make your code work:

add_action( 'woocommerce_single_product_summary', 'display_author_name', 20 );
function display_author_name() {
    // Get the author ID (the vendor ID)
    $vendor_id = get_post_field( 'post_author', get_the_id() );
    // Get the WP_User object (the vendor) from author ID
    $vendor = new WP_User($vendor_id);

    $store_info  = dokan_get_store_info( $vendor_id ); // Get the store data
    $store_name  = $store_info['store_name'];          // Get the store name
    $store_url   = dokan_get_store_url( $vendor_id );  // Get the store URL

    $vendor_name = $vendor->display_name;              // Get the vendor name
    $address     = $vendor->billing_address_1;           // Get the vendor address
    $postcode    = $vendor->billing_postcode;          // Get the vendor postcode
    $city        = $vendor->billing_city;              // Get the vendor city
    $state       = $vendor->billing_state;             // Get the vendor state
    $country     = $vendor->billing_country;           // Get the vendor country

    // Display the seller name linked to the store
    printf( '<b>Seller Name:</b> <a href="%s">%s</a>', $store_url, $store_name );
}

Code goes in function.php file of your active child theme (or active theme). This should work now.

But I don't know how to get vendor rating and location. You should better ask Dokan support.

The code is based on this related thread.

0
votes

This should do it:

$vendor_id = dokan_get_seller_id_by_order( $order->ID );
$vendor_data = get_user_meta( $vendor_id );
echo $vendor_data["first_name"][0]." ".$vendor_data["last_name"][0];