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
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?