Actualiza los productos en stock después de un orden WooCommerce

Si tu sitio de e-commerce utiliza WooCommerce y has notado que el stock de productos no se actualiza correctamente, puedes usar este (MU) Plugin para limpiar la caché WP Rocket cada vez que se complete un nuevo orden.

El código siguiente está pensado para los sitios web que usan una forma instantánea de pago, como las tarjetas de crédito. Se basa sobre el gancho WooCommerce:  woocommerce_payment_complete

Si al contrario tu sitio web accepta formas de pago no instantáneas, como las transferencias bancarias etc., deberás usar un gancho distinto en la última línea de código, como este: woocommerce_order_status_on-hold

Limpiar la caché a través de un MU Plugin personalizado:

Sigue las instrucciones generales de este artículo:
¿Cómo hacer un MU-plugin personalizado?

1

Crea una carpeta llamada  mu-plugins dentro de  wp-content. 
 En caso de que la carpeta mu-plugins exista ya, no es necesario crearla otra vez, usa la existente.

2

Usando un editor de texto básico crea un nuevo fichero e introduce algunas lineas de código.

<?php
defined( 'ABSPATH' ) or die( 'No direct access here, kiddo.' );
/**
 * Plugin Name: WP Rocket | Clean Post Cache after WooCommerce Order
 * Description: Cleans the cache for each product ordered after a WooCommerce order has been completed.
 * Plugin URI:  http://docs.wp-rocket.me/article/881-update-products-on-stock-after-new-woocommerce-orders
 * Author:      WP Rocket Support Team
 * Author URI:  http://wp-rocket.me/
 * License:     GNU General Public License v3 or later
 * License URI: http://www.gnu.org/licenses/gpl-3.0.html
 */


/**
 * Clean post cache after order has been completed.
 * 
 * @param  int $order_id Order ID
 * @return void
 */
function wp_rocket_wc_clean_product_cache_after_order( $order_id ) {

	$order  = new WC_Order( $order_id );
	$items  = $order->get_items();

	foreach ( $items as $item ) {
		$post_id = absint( $item['product_id'] );
		rocket_clean_post( $post_id );
	}
}
add_action( 'woocommerce_payment_complete', 'wp_rocket_wc_clean_product_cache_after_order', 10 );
	
3
Guarda el archivo como  wp-rocket-wc-clean-product-cache.php
4
Sube este fichero a la carpeta  mu-plugins creada al punto 1.
5

Finalmente, asegúrate de  desactivar y re-activar WP Rocket.