Poner el stock de todos los productos a 1
-
Buenos días, quería agregar en mi web una opción de que todos lo productos tengan en stock 1 y al comprarlo se quede sin existencias, muchas gracias y un saludo.
-
Hola @ijdl
Diria que este plugin te podria servir; https://es.wordpress.org/plugins/woocommerce-stock-manager/
Y es posible que existan otras mas en el repositorio, aunque no tan sencillos por lo que yo se.
Hola @kallookoo, este plugin ya lo he probado y lo que quería es al crear un producto tenga stock 1 automáticamente, sé que al crear un producto puedes poner stock a uno pero yo no quiero que mis clientes puedan editar el stock sino que siempre sea 1.
Muchas gracias y un saludo.Hola @ijdl
Perfecto, pues entonces deberas crear un sencillo plugin o añadir en el functions de tu child theme algun codigo para forzar el stock a 1 cuando se guarde el producto.
El unico problema que puedes tener es que si alguna vez quieres crear o actualizar x producto y dejarlo sin stock deberas desactivar primero el codigo.Para hacerlo necesitarias utilizar el action save_post y la function wc_update_product_stock.
Mas info:
https://developer.wordpress.org/reference/hooks/save_post/
https://woocommerce.github.io/code-reference/namespaces/default.html#function_wc_update_product_stockEste enlace lo encontre cuando buscaba la info, no he probado su funcionamiento
https://stackoverflow.com/questions/51940338/updating-product-stock-programmatically-in-woocommerce-3- Esta respuesta fue modificada hace 3 años, 9 meses por kallookoo.
Hola @kallookoo, ¿me sabrías decir exactamente la función?, yo no sé programación.
Muchas gracias y un saludo.Hola @ijdl
Normalmente nunca pongo codigos por varios motivos, pero en tu caso hare una excepcion al ser algo relativamente sencillo.
Tambien te comento que lo pruebas bajo tu responsabilidad, ya que ahora mismo no tengo ninguna tienda de pruebas y no lo pude comprobar./** Solo cuando se esta en la administracion. */ if ( is_admin() ) { add_action( 'woocommerce_init', /** Despues de que el WooCommerce se inicie. */ function() { add_action( 'save_post_product', /** Cuando se guarda o actualiza. */ function( $post_id, $post, $update ) { if ( ! wp_is_post_revision( $post ) && ! ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) ) { /** Solo cuando se guarda o actualiza realmente. */ wc_update_product_stock( $post_id, 1 ); } }, 10, 3 ); } ); }
- Esta respuesta fue modificada hace 3 años, 9 meses por kallookoo.
Hola @kallookoo te lo agradezco, lo acabo de probar creando un snnipet pero no me funciona,¿tendría que cambiar algo ?
Hola @ijdl
Lo acabo de probar y efectivamente no funcionaba como esperaba.
He modificado el codigo un poco ya que despues de hacer que funcionase se mostraba una advertencia cuando se modificaba (on fly)./** Solo cuando se esta en la administracion. */ if ( is_admin() ) { add_action( 'woocommerce_init', /** Despues de que el WooCommerce se inicie. */ function() { add_action( 'woocommerce_admin_process_product_object', /** Cuando ya estan procesados los datos pero antes de guardarlo. */ function ( $product ) { $product->set_props( [ 'stock_quantity' => 1 ] ); } ); } ); }
Con este funciona perfectamente, pero como te avise los productos al guardarlos/actualizarlos siempre estaran en 1.
- Esta respuesta fue modificada hace 3 años, 9 meses por kallookoo.
De acuerdo, aunque acabo de crear un plugin con el código que me distes como se puede ver aquí:
Pero sigue sin funcionar, dime que podría hacer porfavorHola @ijdl
Lo lamento pero ya se esta complicando y justamente es por eso que uno de los motivos por lo que no pongo codigos de este tipo, es este, ya que el intento de ayuda se convierte en un servicio personalizado que deberia hacerlo un profesional.
Pero bueno, aclaremos un par de puntos.
1.- Utilizas la gestion del invertario individual?
2.- Cuando creas/actualizas un producto poniendo por ejemplo 50 en el campo «Cantidad del invertario» cuando lo revisas despues que aparece?
3.- Entiendes que ese codigo solo funciona cuando se crear un producto nuevo y o actualizas uno existente que utiliza la gestion individual de existencias?Ya contaras
Hola @kallookoo , te agradezco todo lo que estas haciendo, no había probado en poner el producto como gestión del inventario individual, ahora funciona correctamente, ¿se podría poner todos los productos como gestión del inventario individual al crear uno nuevo? Te lo agradezco, esto es la última función que necesito, muchas gracias, un saludo.
Hola @ijdl
En teoria añadiendo
manage_stock
a true haria lo mismo que con el stock./** Solo cuando se esta en la administracion. */ if ( is_admin() ) { add_action( 'woocommerce_init', /** Despues de que el WooCommerce se inicie. */ function() { add_action( 'woocommerce_admin_process_product_object', /** Cuando ya estan procesados los datos pero antes de guardarlo. */ function ( $product ) { $errors = $product->set_props( [ 'manage_stock' => true, 'stock_quantity' => 1, ] ); /** Se comprueba otra vez si hubo un error, para mostrarlo. */ if ( is_wp_error( $errors ) ) { WC_Admin_Meta_Boxes::add_error( $errors->get_error_message() ); } } ); } ); }
Puedes ver la lista (array) de los campos aqui; https://github.com/woocommerce/woocommerce/blob/trunk/includes/admin/meta-boxes/class-wc-meta-box-product-data.php#L365
En esta nueva version aparte de añadir la gestion del inventario individual he añadido la comprobacion de errores, por si acaso.
Por cierto, no lo he comprobado ya que como te comente es exactamante lo mismo que con la cantidad.De acuerdo @kallookoo, te doy mil gracias por tu paciencia y tiempo, todo está perfecto, muchas gracias, un saludo.
- El debate ‘Poner el stock de todos los productos a 1’ está cerrado a nuevas respuestas.