Do you want to know how to make WooCommerce plugin high performance order storage compatible?

WooCommerce is the widely used eCommerce platform for WordPress, offering various plugins and extention to enhance its functionality. As your online store expands and take more orders, its essential to maintain fast performance and efficient order storage.

In this article, we will discuss how to ensure your WooCommerce plugin can handle large amount of orders without making your website slowing down.

What is High Performance Order Storage

High performance order storage is a new feature in WooCommerce that enhance the performance of the online store with large order volume. HPOS stored order data in the dedicated table separate from other WordPress data. This makes it faster to access and query.

To make your WooCommerce plugin high performance order storage compatible, first you need to do these:

  • Optimize Database Table – The orders you receive through WooCommerce are saved in the WordPress database, and it is essential to optimize the database table that store order data. You can use database optimization plugins, like WP-Optimize or WP-Sweep to get rid of unnessesary data. By maintaining a clean and well-organised database, you can significantly improve the effiency of your order storage system.
  • Use Caching – Caching is a technique that can significantly improve the speed of your WooCommerce store. It saves often-used information, which means your server doesn’t have to work as hard to get orders quickly. You can do this by using plugins like W3 Total Cache oe WP Super Cache, or by using server-level caching solutions. These caching techniques help your store show orders faster on your site.
  • Use Indexing – Adding the right indexes to your database tables can make your queries work better. Make sure that the order table have the right indexes to speed up searching and finding stuff. Index columns that are frequently used in your queries, such as order ID, customer ID, and product ID.
  • Use a High Performance Hosting Service – Choose a hosting provider that’s great in handling WooCommerce and make sure they have a server that works really well for online store. If possible, you can also consider using a dedicated or VPS server because they give your website more resources.
  • Use of Custom Fields – Custom fields in WooCommerce can help store special data, but their excessive use can make things slower. So it is essential to use them when you really need it, to ensure optimal system performance.

How to Make WooCommerce Plugin High Performance Order Storage Compatible

For making your WooCommerce plugin high performance order storage compatible, you nedd to follow these steps:

  • Declare your plugin’s compatibility with HPOS- To declare your plugin’s compatibility with HPOS, you can add the following code to your plugin’s main file.
add_action('before_woocommerce_init', 'before_woocommerce_hpos');

function before_woocommerce_hpos (){ 

        if ( class_exists( \Automattic\WooCommerce\Utilities\FeaturesUtil::class ) ) { 

                \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true ); 


  • Use the WooCommerce API for getting/setting order & order meta- You can use the wc_get_order() function instead of the get_post() function to retrieve order data.
// Instead of
$order = get_post( $order_id ); // returns WP_Post object.
// use
$order = wc_get_order( $order_id ); // returns WC_Order object.

To work with metadata, use the update_/add_/delete_metadata methods on the order object, and then save it. WooCommerce will handle where to store the data automatically.

// Instead of following update/add/delete methods, use:
update_post_meta( $post_id, $meta_key_1, $meta_value_1 );
add_post_meta( $post_id, $meta_key_2, $meta_value_2 );
delete_post_meta( $post_id, $meta_key_3, $meta_value_3 );
get_post_meta( $post_id, $meta_key_4, true);
// use
$order = wc_get_order( $post_id );
$order->update_meta_data( $meta_key_1, $meta_value_1 );
$order->add_meta_data( $meta_key_2, $meta_value_2 );
$order->delete_meta_data( $meta_key_3, $meta_value_3 );
$order->get_meta( $meta_key_4, true );

Calling the save() method is a relatively expensive operation, so you may wish to avoid calling it more times than necessary. (for example, if you know it will be called later in the same flow, you may wish to avoid additional earlier calls when operating on the same object).

  • Verify if the post is WooCommerce Order- You can verify if the post is a WooCommerce order using this code:
if ( ! function_exists( 'wkwc_is_wc_order' ) ) {
     * Check is post WooCommerce order.
     * @param int $post_id Post id.
     * @return bool $bool True|false.
    function wkwc_is_wc_order( $post_id = 0 ) {
        $bool = false;
        if ( 'shop_order' === OrderUtil::get_order_type( $post_id ) ) {
            $bool = true;

        return $bool;


Q: Why should I make my WooCommerce plugin compatible with HPOS?

Ans: If you are running your WooCOmmerce store with a large number of orders or you are planning to expand it, its essential to make sure your WooCommerce plugins are compatible with HPOS. This way, you can ensure your WooCommerce store can maintain top performance even as it gets bigger.

Q: What are the benefits of using HPOS?

Ans: The main benefits of using HPOS including improve the of your WooCommerce store, improve the scalability of your store, and reduce the size of WooCommerce database.


Ensuring high performance order storage is crucial for success of your WooCommerce store. By following the above steps you can make your WooCommerce plugin higher performance order storage(HPOS) compatible. This will help to improve the performance of your WooCommerce store.

That’s it! Now you have learned how to make WooCommerce plugin high performance order storage compatible.

If you find this article helpful, do share it with your friends. If you have any questions regarding anything, do not hesitate to comment down below, we will help you to solve your problem. Thanks for reading this blog.

Please Subscribe to our YouTube Channel, We also upload great content there, and also Do Follow us on Facebook and Twitter.