Posted on 1 Comment

Changing the backorder message in Woocommerce

A client walks into a bar and asks me “can I change the backorder message in woocommerce?”

I reply: “Of course! 😀”

Setup

The code in this tutorial pre-setup with wordpress & woocommerce installed. I am using a an empty child theme of storefront.

Download this repository: for a quick start bare-bones storefront child theme with minimal configuration.

prettier & prettier-php

I use prettier & prettier-php to automatically make my code prettier and its installed in the theme linked above. (Remember to run: npm install)

Adding the filter

In wordpress, a “adding a filter” is essentially adding function to an array of functions which will be performed at a specific spot of the code.

Add_filter()

Learn more about add_filter() at the official wordpress documentation.

Parameters

add_filter() takes four parameters, a name, a function to perform, a priority and its expected number of parameters.

  1. Name – The name of the action where the functions will execute
  2. Function – The name of the function we are adding to the pipeline
  3. Priority – The order in which the functions run (ASC)
  4. Number of parameters – How many parameters your function is expecting
<?php

add_filter(
  "woocommerce_get_availability_text",
  "gregbastianelli_change_backorder_message",
  10,
  2
);

So above: we are calling the ‘woocommerce_get_availability_text' action, we are adding our ‘gregbastianelli_change_backorder_message‘ function to the pipeline, setting a priority of 10 and expecting 2 parameters.

Change backorder message globally

If we visit the source code for woocommerce_get_availability_text you can see it returns two parameters in the apply_filters function.

Expected Parameters

  • $availability is the text message returned when a product shows its on backorder.
  • $this is the product in question.

Now that we know which data is being passed to us – we can setup our function.

Step-by-step

Setup up the function – write documentation and do stuff.

function gregbastianelli_change_backorder_message($text, $product)
{
  /**
   * Allows developer to change backorder message site-wide
   * @param string $text
   * @param WC_Product $product
   */

   // do stuff

}

First we want to set a backorder message.

  $backorder_message = "Will ship in January 2021";

Next we want to set a condition so our backorder message only shows on products on backorder.

...
 
 if ($product->managing_stock() && 
      $product->is_on_backorder(1)) {
    return $backorder_message;
  }

  return $text;
}

We also include a return under our condition so the work done by the previous functions in the pipeline is passed on if our condition is not met.

The end results (tl;dr)

In a hurry? Here are the end results.

How to change backorder message store wide

<?php

add_filter(
  "woocommerce_get_availability_text",
  "gregbastianelli_change_backorder_message",
  10,
  2
);

function gregbastianelli_change_backorder_message($text, $product)
{
  /**
   * Allows developer to change backorder message site-wide
   * @param string $text
   * @param WC_Product $product
   */

  $backorder_message = "Will ship in January 2021";

  if ($product->managing_stock() && 
      $product->is_on_backorder(1)) {
    return $backorder_message;
  }

  return $text;
}

How to change the backorder message for a specific product

If you want to have different messages for different products, include a check for a specific id as well.

...

  $backorder_message = "Will ship in January 2021";
  $target_id = 272; // include ID

  if (
    $target_id === $product->get_id() && // check for ID
    $product->managing_stock() &&
    $product->is_on_backorder(1)
  ) {
    return $backorder_message;
  }

  return $text;
}

You did it!

Look at you. Changing your very own backorder message in woocommerce like a DEV PRO!

1 thought on “Changing the backorder message in Woocommerce

  1. If you re already supporting personalization for your items, or are considering adding the option to any of your products, the key to success is making customer requests as easy as possible . Enter Product Add-Ons, a WooCommerce extension designed to allow your customers to enter custom text, upload images, check boxes, or simply tell you what they want customized or personalized on your products.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.