Pregunta sobre WooCommerce Stock Manager de Wordpress:

Un producto con 0 inventario no cambia automáticamente a «agotado»

Un usuario preguntó 👇

Importé con éxito 14.000 productos. Sin embargo, más de 2000 tienen 0 inventarios pero aún se muestran como En stock. Si voy al producto único y simplemente hago clic en Guardar, cambia a Agotado. Sin embargo, no voy a sacar 2000 productos y hacer esto. Supongo que esto es un problema de WooCommerce. Estoy probando su plugin para ver si puedo obtener un producto de inventario 0 para mostrar como Agotado, pero no tengo suerte. Veo algunos otros hilos sobre esto y no, no tengo un pedido pendiente ni una notificación al respecto. ¿Alguna sugerencia?

(@bauralex)

Hace 2 años, 7 meses

Aquí hay un script, tuviste el mismo problema y lo hice yo mismo … Pero estaría feliz si este error se pudiera solucionar …

$args = array(
	'posts_per_page'   	=> -1,
//	'offset'			=> 1100,
	'post_type'        	=> 'product',
	'suppress_filters' 	=> false,
);
$products = get_posts($args);
foreach($products as $product) :
	$wcPost = wc_get_product($product->ID);
	if($wcPost->get_type() == 'simple') :

		if($wcPost->get_stock_quantity() != 0) :
			update_post_meta($wcPost->get_ID(), '_stock_status', 'instock');
		endif;

	elseif($wcPost->get_type() == 'variable') :
		$variationsID = $wcPost->get_children();

		foreach($variationsID as $variation) :
			$varProd = wc_get_product($variation);
			if($varProd->get_stock_quantity() != 0) :
				update_post_meta($varProd->get_ID(), '_stock_status', 'instock');
			endif;

		endforeach;
	endif;	
endforeach;

(@ getyler3)

Hace 2 años, 7 meses

¡Muchas gracias Bauralex! ¿Entra esto en las funciones de .php así? Lo agregué con Snippets y rompí el sitio con un error 500. Simplemente renombré la carpeta de fragmentos de código y se realizó una copia de seguridad. ¡Espero ver este trabajo! Gracias de nuevo !!

(@bauralex)

Hace 2 años, 7 meses

Hola, getyler3, envolví el código anterior y lo llamé en mi pie de página y el error probablemente sea 500 ist porque hay muchos productos y el servidor tiene un límite de tiempo … Solo tengo 1100 productos, así que lo arreglé post_per_page a 100 e incrementar el desplazamiento de 0 a 1100 en el paso 100

1 llamada:


'posts_per_page'   	=> 100,
'offset'		=> 0,

2.llamada

'posts_per_page'   	=> 100,
'offset'		=> 100,

3.llama

'posts_per_page'   	=> 100,
'offset'		=> 200,

Sé que no es una manera perfecta de establecer el estado del stock y tienes que aumentar manualmente el desplazamiento, pero lo hice una vez después de llenar todo el stock y ahora estoy cambiando el stock a través de la función principal de woocommerce.

function abSetStockStatus($offset) {
$args = array(
	'posts_per_page'   	=> -1,
//	'offset'			=> $offset,
	'post_type'        	=> 'product',
	'suppress_filters' 	=> false,
);
$products = get_posts($args);
foreach($products as $product) :
	$wcPost = wc_get_product($product->ID);
	if($wcPost->get_type() == 'simple') :

		if($wcPost->get_stock_quantity() != 0) :
			update_post_meta($wcPost->get_ID(), '_stock_status', 'instock');
		endif;

	elseif($wcPost->get_type() == 'variable') :
		$variationsID = $wcPost->get_children();

		foreach($variationsID as $variation) :
			$varProd = wc_get_product($variation);
			if($varProd->get_stock_quantity() != 0) :
				update_post_meta($varProd->get_ID(), '_stock_status', 'instock');
			endif;

		endforeach;
	endif;	
endforeach;
}

y en mi pie de página solo llamo abSetStockStatus (0), abSetStockStatus (100) – dentro de los paréntesis para ingresar el desplazamiento

Esta respuesta fue modificada hace 2 años, 7 meses.

¿Solucionó tu problema??

0 / 0

Deja una respuesta 1

Tu dirección de correo electrónico no será publicada.


Silvana Ubriaco

Silvana Ubriaco

Hola buenos dias!

Esta funcion la puedo ejecutar como un fragmento de codigo?

Mi idea es que se ejecute en el administrador de productos. Con que hook funcionaria?