Create Custom Menu in WordPress Dashboard
Complete tutorial on create custom menu in wordpress dashboard. Discover practical examples, implementation tips, and expert advice for WordPress and WooCo
Read More โImplement comprehensive role-based pricing using custom WordPress user roles for wholesaler, reseller, and business customer with add_role function. Create custom meta boxes in product editor with add_meta_box for each role storing prices as post meta, display meta box fields with input for price entry, save prices with save_post_product action using update_post_meta, modify product prices dynamically with woocommerce_product_get_price filter checking user roles and retrieving corresponding price from post meta with get_post_meta, provide personalized shopping experience with transparent role-specific pricing visible only to qualified users for B2B commerce.
To tailor your WooCommerce product prices for wholesalers, resellers, and business customers, follow this guide to set up different prices based on user roles.
Step 1: Define User Roles
First, create custom user roles for wholesalers, resellers, and business customers. You can use a plugin like “User Role Editor” or add the code below to your theme's functions.php file:
function add_custom_user_roles() {
add_role( 'wholesaler', 'Wholesaler', array( 'read' => true ) );
add_role( 'reseller', 'Reseller', array( 'read' => true ) );
add_role( 'business_customer', 'Business Customer', array( 'read' => true ) );
}
add_action( 'init', 'add_custom_user_roles' );
</pre
Step 2: Assign Roles to Users
In your WordPress dashboard, assign these roles to the respective users (wholesalers, resellers, and business customers).
Step 3: Set Custom Prices by Role
Now, define different prices based on user roles using the woocommerce_product_get_price filter. Add the following code to your theme's functions.php or in a custom plugin:
function custom_product_price_based_on_user_role( $price, $product ) {
$user = wp_get_current_user();
if ( in_array( 'wholesaler', $user->roles ) ) {
// Set wholesaler price
$wholesaler_price = get_post_meta( $product->get_id(), '_wholesaler_price', true );
if ( $wholesaler_price ) {
return $wholesaler_price;
}
} elseif ( in_array( 'reseller', $user->roles ) ) {
// Set reseller price
$reseller_price = get_post_meta( $product->get_id(), '_reseller_price', true );
if ( $reseller_price ) {
return $reseller_price;
}
} elseif ( in_array( 'business_customer', $user->roles ) ) {
// Set business customer price
$business_customer_price = get_post_meta( $product->get_id(), '_business_customer_price', true );
if ( $business_customer_price ) {
return $business_customer_price;
}
}
return $price; // Return original price if no custom price is set for the user role
}
add_filter( 'woocommerce_product_get_price', 'custom_product_price_based_on_user_role', 10, 2 );
Step 4: Add Meta Boxes for Custom Prices
Next, create meta boxes in the product editing screen to input custom prices for each role. save_post_product action hook to save the corresponding meta box data.
function add_custom_price_meta_boxes() {
add_meta_box( 'wholesaler_price_meta_box', 'Wholesaler Price', 'display_wholesaler_price_meta_box', 'product', 'normal', 'default' );
add_meta_box( 'reseller_price_meta_box', 'Reseller Price', 'display_reseller_price_meta_box', 'product', 'normal', 'default' );
add_meta_box( 'business_customer_price_meta_box', 'Business Customer Price', 'display_business_customer_price_meta_box', 'product', 'normal', 'default' );
}
add_action( 'add_meta_boxes', 'add_custom_price_meta_boxes' );
// Display meta boxes
function display_wholesaler_price_meta_box( $post ) {
$wholesaler_price = get_post_meta( $post->ID, '_wholesaler_price', true );
echo 'Enter Wholesaler Price:';
echo '';
}
function display_reseller_price_meta_box( $post ) {
$reseller_price = get_post_meta( $post->ID, '_reseller_price', true );
echo 'Enter Reseller Price:';
echo '';
}
function display_business_customer_price_meta_box( $post ) {
$business_customer_price = get_post_meta( $post->ID, '_business_customer_price', true );
echo 'Enter Business Customer Price:';
echo '';
}
// Save meta box data
function save_custom_price_meta_box_data( $post_id ) {
if ( isset( $_POST['wholesaler_price'] ) ) {
$wholesaler_price = sanitize_text_field( $_POST['wholesaler_price'] );
update_post_meta( $post_id, '_wholesaler_price', $wholesaler_price );
}
if ( isset( $_POST['reseller_price'] ) ) {
$reseller_price = sanitize_text_field( $_POST['reseller_price'] );
update_post_meta( $post_id, '_reseller_price', $reseller_price );
}
if ( isset( $_POST['business_customer_price'] ) ) {
$business_customer_price = sanitize_text_field( $_POST['business_customer_price'] );
update_post_meta( $post_id, '_business_customer_price', $business_customer_price );
}
}
add_action( 'save_post_product', 'save_custom_price_meta_box_data' );
With these steps, WooCommerce will automatically display prices according to each user’s role, offering a personalized shopping experience for wholesalers, resellers, and business customers. 
Search our archives or reach out to our team for solutions and expert advice.