WooCommerce Change Pricing Based on Custom Field

Here's a little snippet which may be useful if you need to adjust pricing in WooCommerce based on a custom field. In this instance, my client wanted to increase the price of items within a specific category of products for users who were either not signed into the website, or who were not being offered wholesale pricing.

I added this function to the theme's functions.php file. It's called every time WooCommerce generates a product price. I'm sure it can be tidier - let me know on Twitter if you found this helpful or can suggest improvements!

function return_custom_price($price, $product) {
  // set default multiplier
  $multiplier = 1;
  global $post, $blog_id;
  $product = wc_get_product($post_id);
  $post_id = $post->ID;
  // get product categories
  $catrgories = get_the_terms( $post->ID, 'product_cat' );
  // loop through categories
  foreach ($categories as $category) {
    $category_id = $tcategory->term_id;
      // if category is a match
        // get user's ID
        $user = get_current_user_id();
          // get custom field value as $level
          $level = get_field('[custom_field_name]', "user_".$user);
          $level = '[default_level]';
          // change multiplier - in this case adding 10% to the price
          $multiplier = 1.1;
    // calculate price based on multiplier
    $price = ($price*$multiplier);
    // return price
    return $price;
  add_filter('woocommerce_get_price', 'return_custom_price', 10, 2);

You’ve reached the end of this page. Get more ideas delivered to your inbox.

If you’d like ideas straight to your inbox, sign up below. I don’t send out many emails, and you can unsubscribe at any time.