If you are using Tickets for Woocommerce with The Event Calendar to “sell events”, and you want to apply discounts according to the user role ( Woocommerce Role Pricing), now this is possible.
You need to add this code to your functions.php theme file:
add_filter( 'tribe_get_event_meta', 'my_tribe_get_event_meta', 10, 4 );
function my_tribe_get_event_meta ( $output, $postID, $meta, $single ) {
if ( $meta == "_EventCost" ) {
if ( is_array( $output ) ) {
$type = get_option( "wrp-method", "rate" );
$result = $output[0];
$user = wp_get_current_user();
$user_roles = $user->roles;
$user_role = array_shift($user_roles);
$discount = 0;
if ( $user_role !== null ) {
if ( get_option( "wrp-" . $user_role, "-1" ) !== "-1" ) {
$discount = get_option( "wrp-" . $user_role );
}
}
if ( $discount ) {
$method = get_option( "wrp-method", "rate" );
if ( $method == "rate" ) {
$discount = WooRolePricing::bcsub ( 1, $discount, WOO_ROLE_PRICING_DECIMALS );
// for security reasons, set 0
if ( $discount < 0 ) {
$discount = 0;
}
}
}
if ($type == "rate") {
$result = WooRolePricing::bcmul($result, $discount, WOO_ROLE_PRICING_DECIMALS);
} else {
$result = WooRolePricing::bcsub($result, $discount, WOO_ROLE_PRICING_DECIMALS);
}
$output[0] = $result;
}
}
return $output;
}