Descargas ilimitadas y Licencias Originales

Suscríbete o Inicia Sesión y descarga todos los recursos que quieras sin coste adicional. Todos los Plugins y Themes de WordPress en un clic. Además podrás acceder a Licencias Originales y API Keys.

Limita la cantidad máxima de unidades de un producto que un cliente puede comprar en un solo pedido

Después de integrar el código, podrás establecer el número máximo de unidades permitidas para un producto desde la página de edición del producto, en “Datos del producto > Inventario > Máximo de unidades permitidas”.

// Limita el número máximo de unidades a nivel de producto que un cliente puede comprar en un mismo pedido
if ( in_array( 'woocommerce/woocommerce.php', get_option( 'active_plugins' ) ) ){
    
    add_action( 'woocommerce_product_options_inventory_product_data', 'enable_option_inventory_product_data_tab' );
    function enable_option_inventory_product_data_tab(){
    
        wp_nonce_field( plugin_basename(__FILE__), 'woocommerce_max_amount_nonce' );
        echo '<div class="options_group show_if_simple show_if_variable">';
    
        woocommerce_wp_text_input( array(
            'id'                => '_max_amount',
            'label'             => __( 'Máximo de unidades permitidas', 'woocommerce' ),
            'placeholder'	    => 0,
            'desc_tip'          => true,
            'description'       => __( 'Indica el número máximo de unidades permitidas que se pueden comprar de este producto en un mismo pedido. Usa el valor 0 para indicar que no hay límite de unidades.', 'woocommerce' ),
            'type'              => 'number',
            'custom_attributes' => array(
                'step' => 'any'
            )
        ) );
    
        echo '</div>';
    }
    
    add_action( 'save_post', 'save_max_amount_meta_data', 99, 2 );
    function save_max_amount_meta_data( $post_id, $post ) {
    
        /* --- security verification --- */
        if ( 'product' !== $post->post_type ) {
            		
            	return $post_id;
        }

        if( !wp_verify_nonce( $_POST['woocommerce_max_amount_nonce'], plugin_basename(__FILE__) ) ) {
            return $post_id;
        	}
    
        	if( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) {
        		return $post_id;
        	}
    
        	if( 'product' == $_POST['post_type'] ) {
        		
        		if( !current_user_can('edit_page', $post_id) ) {
        			return $post_id;
          		}
        } else {
        
            if( !current_user_can( 'edit_page', $post_id ) ) {
                return $post_id;
            	}
        	}
        	/* - end security verification - */
    
        	if( isset( $_POST[ '_max_amount' ] ) ) {
        
        		$max_amount = $_POST[ '_max_amount' ];
        		update_post_meta( $post_id, '_max_amount', $max_amount );
        	}
    }
    
    add_action( 'woocommerce_check_cart_items', 'max_products_units_allowed' );
    function max_products_units_allowed(){
        $cart_content = WC()->cart->get_cart();
        
        foreach ( $cart_content as $key => $product ) {
    
            $max_amount = get_post_meta( $product[ 'data' ]->id, '_max_amount', true );
    
            if ( !empty( $max_amount ) && ( $max_amount < $product[ 'quantity' ] ) ) {
                
                // Resetea el número de unidades del producto al máximo permitido
                WC()->cart->set_quantity( $key, $max_amount );
    
                // Muestra el mensaje de aviso de que ha superado el número máximo de uds permitida
                $message = 'Lo sentimos. Pero el número máximo de unidades del producto "'. $product[ 'data' ]->post->post_title .'" que puedes comprar en un mismo pedido es '. $max_amount .'.<br/><br/>';
                		wc_add_notice( $message, 'error' );
            }
    
        }
    }
}

 

Productos destacados