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 0

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *