• 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.

Viendo 12 respuestas - de la 1 a la 12 (de un total de 12)
  • Moderador kallookoo

    (@kallookoo)

    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.

    Iniciador del debate ijdl

    (@ijdl)

    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.

    Moderador kallookoo

    (@kallookoo)

    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_stock

    Este 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, 1 mes por kallookoo.
    Iniciador del debate ijdl

    (@ijdl)

    Hola @kallookoo, ¿me sabrías decir exactamente la función?, yo no sé programación.
    Muchas gracias y un saludo.

    Moderador kallookoo

    (@kallookoo)

    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, 1 mes por kallookoo.
    Iniciador del debate ijdl

    (@ijdl)

    Hola @kallookoo te lo agradezco, lo acabo de probar creando un snnipet pero no me funciona,¿tendría que cambiar algo ?

    Moderador kallookoo

    (@kallookoo)

    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, 1 mes por kallookoo.
    Iniciador del debate ijdl

    (@ijdl)

    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 porfavor

    • Esta respuesta fue modificada hace 3 años, 1 mes por ijdl.
    • Esta respuesta fue modificada hace 3 años, 1 mes por ijdl.
    • Esta respuesta fue modificada hace 3 años, 1 mes por ijdl.
    Moderador kallookoo

    (@kallookoo)

    Hola @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

    Iniciador del debate ijdl

    (@ijdl)

    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.

    Moderador kallookoo

    (@kallookoo)

    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.

    Iniciador del debate ijdl

    (@ijdl)

    De acuerdo @kallookoo, te doy mil gracias por tu paciencia y tiempo, todo está perfecto, muchas gracias, un saludo.

Viendo 12 respuestas - de la 1 a la 12 (de un total de 12)
  • El debate ‘Poner el stock de todos los productos a 1’ está cerrado a nuevas respuestas.