In this article, we’ve noted down the very common problems that our users face. These can be easily solved using 2-3 lines of code. Simply, open your theme’s functions.php and paste the corresponding code.
Redirect to site’s shop page instead of vendor shop page
If you are among those, who do not want anyone to visit the vendor’s shop page, can redirect all possible links leading to vendor shop page to the site’s shop page. Paste the following code, and you are good to go!
function my_page_template_redirect() { if( is_tax( 'dc_vendor_shop' ) ) { $shop_page_url = get_permalink( woocommerce_get_page_id( 'shop' ) ); wp_safe_redirect( $shop_page_url ); exit(); } } add_action( 'template_redirect', 'my_page_template_redirect', 999 );
Copy
Remove sidebar widget from vendor shop page
If you are among those, who do not want to have sidebar widgets displaying on the vendor shop page, can easily remove the entire sidebar. Paste the following code, and you are good to go!
function remove_sidebar_in_wcmp_vendor_shop() { if( is_tax( 'dc_vendor_shop' ) ) { remove_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 ); } } add_action( 'template_redirect', 'remove_sidebar_in_wcmp_vendor_shop', 999 );
Copy
Trigger track shipping email to admin
If you are among those, who want to trigger the track shipping email to both vendor and admin which now is only sent to the vendor, can easily do so with this piece of code.
function callback_wcmp_vendors_vendor_ship( $order_id, $vendor_id ) { $mails = WC()->mailer()->emails['WC_Email_Notify_Shipped']; if (!empty($mails)) { $admin_email = get_option( 'admin_email' ); $mails->trigger( $order_id, $admin_email, $vendor_id, array() ); } } add_action( 'wcmp_vendors_vendor_ship', 'callback_wcmp_vendors_vendor_ship', 99, 2 );
Copy
Admin mistakenly lost access of administration
Oh! Fret not! You can easily fix this by carefully following these steps.
Add the following code to your active theme’s functions.php.
function set_user_to_admin(){ $user = get_user_by( 'ID', 1 ); $user->set_role( 'administrator' ); } add_action( 'init', 'set_user_to_admin', 99 );
Copy
Then, access your site once and access the first user (admin) you created. It will gain the admin access.
Once this is done, remove these codes from your theme’s functions.php.
Display vendor name when admin manually adds order
There are times when you need to add orders manually and the vendor name is not displayed against the products, this is the time you’ll need the following piece of code.
function add_order_item_meta( $item_id, $item, $product ){ $vendor = get_wcmp_product_vendors( $product->get_id() ); if ($vendor) { $general_cap = apply_filters( 'wcmp_sold_by_text', __( 'Sold By', 'dc-woocommerce-multi-vendor' ) ); wc_add_order_item_meta( $item_id, $general_cap, $vendor->user_data->display_name ); wc_add_order_item_meta( $item_id, '_vendor_id', $vendor->id ); } } add_action( 'woocommerce_before_order_itemmeta', 'add_order_item_meta', 10, 3 );
Copy
Remove Password Strength
On registration pages, the user is required to enter a strong password. This may be a good practice but sometimes you may feel a need to remove the password strength meter for a reason you think better.
function remove_wc_password_strength_meterscript(){ wp_dequeue_script('wc-password-strength-meter'); } add_action( 'wp_footer', 'remove_wc_password_strength_meterscript' );
Copy
Allow vendor to add more coupon types
WCMp by default lets vendor add Fixed Product Discount coupon type. In order, to let your vendor add Percentage Discount or a Fixed Basket Discount coupon type, add the following piece of code and you are good to go!
function allow_vendor_coupon_types ( $types ) { $new_types = array( 'percent' => __( 'Percentage discount', 'dc-woocommerce-multi-vendor' ), 'fixed_cart' => __( 'Fixed cart discount', 'dc-woocommerce-multi-vendor' ), ); $types = array_merge( $types, $new_types ); return $types; } add_filter( 'wcmp_vendor_frontend_add_coupon_types', 'allow_vendor_coupon_types' );
Copy
Add default user role as vendor
In order to provide all your users with vendor role just as soon as they register, select “Vendor” from the “New User Default Role” dropdown in General under Settings and then paste the following code in your active theme’s functions.php.
function woocommerce_new_customer_data_callback($data){ $data['role'] = 'dc_vendor'; return $data; } add_filter('woocommerce_new_customer_data', 'woocommerce_new_customer_data_callback');
Copy
Notify admin when vendor ships order
In order to be notified whenever vendor ships an order paste the following code.
function sent_admin_too($recipient){ $recipient = ','.'add_admin_email_here'; return $recipient; } add_filter('woocommerce_email_recipient_notify_shipped', 'sent_admin_too');
Copy
Rearrange Vendor Dashboard Menus
The example below shows how to change the knowledgebase menu position from second last to the top. However, you can rearrange any menu according to your need. Follow, the code below and it shall help you.
function reorder_wcmp_dash_nav( $nav ) { /* * $nav is an array set of dashboard menu. * Default Dashboard nav position is 0, others are positioned at a difference of 10 priority. * Available menus and their positions: * dashboard - 0 * store-settings - 10 * vendor-products - 20 * vendor-promte - 30 * vendor-report - 40 * vendor-orders - 50 * vendor-payments - 60 * vendor-knowledgebase - 70 * vendor-tools - 80 */ if(isset($nav['vendor-knowledgebase'])){ $nav['vendor-knowledgebase']['position'] = -1; // or set it according to your need. -1 will set it at the top, while any number between 11-19 will set it below Store Settings and 1-9 below Dashboard but above Store Settings. } return $nav; } add_filter('wcmp_vendor_dashboard_nav', 'reorder_wcmp_dash_nav');
Copy
Remove third party plugin content from vendor backend
If you have numerous plugins installed on your website there are chances for a possible conflict and it might happen those plugins add menus or links to pages in the vendor’s backend that you wouldn’t want them to access. To remove them, following is a structure which might be useful to help you get an idea of the same.
// Remove Dashboard menu function remove_menus(){ remove_menu_page( 'jetpack' ); //Jetpack remove_menu_page( 'edit.php?post_type=ticket-meta-fieldset' ); //Events remove_menu_page( 'edit.php?post_type=yith_popup' ); //YITH Popup remove_menu_page( 'edit.php?post_type=shop_coupon' ); //Coupons remove_menu_page( 'admin.php?page=vc-welcome' ); //WPBakery Page Builder } add_action( 'admin_menu', 'remove_menus' ); // remove links from Admin bar as well function remove_admin_bar_menu( $wp_admin_bar ) { $wp_admin_bar->remove_node( 'tribe-events' ); //Events } add_action( 'admin_bar_menu', 'remove_admin_bar_menu', 999 );
Copy
Display the sold by vendor name before product title
The sold by vendor name normally shows after the product title, if you want to show it before the product title paste the following code.
function add_wcmp_vendor_name(){ global $product; if($product && class_exists('WCMp')){ $vendor = get_wcmp_product_vendors($product->get_id()); if($vendor){ $sold_by_text = apply_filters('wcmp_sold_by_text', __('Sold By', 'dc-woocommerce-multi-vendor'), $product->get_id()); echo '<a class="by-vendor-name-link" style="display: block;" href="' . $vendor->permalink . '">' . $sold_by_text . ' ' . $vendor->user_data->display_name . ''; } } } add_action('woocommerce_shop_loop_item_title', 'add_wcmp_vendor_name', 5);
Copy
Display vendor image after sold by vendor name in the shop page
If you are among those, who want to display the vendor’s image after the sold by text in the shop page, then the following is for you to check out!
function show_image_callback( $vendor ){ echo '<img src="'.$vendor->image.'" style="height:30px !important;"/>'; } add_action('after_sold_by_text_shop_page', 'show_image_callback');
Copy
Display order status on the orders page in the vendors backend
By default WCMp displays the Order ID, Customer Name and Address, Products ordered, Order Total, Order Date and Shipping Status in the orders page. However, you would want to display the Order Status as well, in order to do that or add any other columns, you could do that by adding these lines of code. The following lines can be plainly copied and pasted if you want to display Order Status, however, if you want to display something else, you might need to add your custom code.
function add_column( $columns ) { $new_column = array( 'order_status' => __( 'Order Status', 'dc-woocommerce-multi-vendor' ), ); $columns = array_merge( $columns, $new_column ); return $columns; } add_filter( "wcmp_manage_dc-vendor-orders_columns", 'add_column' ); function add_column_data( $item, $column_name ) { if( $column_name == 'order_status') { $order = new WC_Order( $item->order_id ); $status = $order->get_status(); $item->order_status = $status; echo $item->order_status; } } add_action( "wcmp_manage_dc-vendor-orders_column_data", 'add_column_data', 10, 2 );
Copy
P.S. Have more ideas to share or facing a hard to explain issue? Our quick support will definitely help you in the right direction… that’s a word you can trust.