WooCommerce: defina la configuración del producto mediante programación, por ejemplo, habilite revisiones, se vende individualmente

En WooCommerce, todo es fácil hasta que tienes una docena de productos para administrar. Pero una vez que comienza a escalar, y tal vez necesite importar cientos de elementos, en ese momento es cuando busca atajos.

El problema es que hay configuraciones de un solo producto que debe ingresar manualmente para cada producto (o hacerlo en bloque de todos modos), como estado de impuestos, clase de impuestos, clase de envío, vendido individualmente, habilitar revisiones y más; podría seguir repitiendo sus operaciones de configuración manual o afinar su sistema de edición masiva para hacerlo, pero ¿qué pasaría si hubiera unas pocas líneas de código que simplemente "establecerían" cualquier opción que necesite para TODOS los productos , sin preocuparse si eso específico ? ¿La opción está establecida o no en la página de edición de un solo producto?

Por ejemplo, a un cliente mío le sucedió que olvidamos "habilitar revisiones" en 10 000 productos importados, por lo que nos quedaron dos opciones: volver a ejecutar la importación del producto o encontrar algo más inteligente. Y esto último es lo que cubriremos hoy.

Entonces, ¿cómo "anular" o "forzar" una configuración específica de un solo producto de WooCommerce sin preocuparse por su valor real por producto, para que los productos se comporten de la misma manera? Aquí hay un par de ideas. ¡Disfrutar!

Fragmento de PHP 1: Forzar "Habilitar revisiones" para todos los productos

En este caso, se vuelve un poco complicado, pero una vez que estudia cómo se activan las reseñas en la página de un solo producto, el resultado son solo 7 líneas de PHP. Aquí está la solución:

/**
 * @snippet       Override & Force Enable Reviews @ WooCommerce Products
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_filter( 'comments_open', 'bbloomer_force_enable_reviews', 9999, 2 );
 
function bbloomer_force_enable_reviews( $enable, $post_id ) {
   if ( 'product' === get_post_type( $post_id ) ) {
      $enable = true;
   }
   return $enable;
}

Aquí está el antes:

Y aquí está el después: a pesar de que "Habilitar reseñas" está deshabilitado, nuestro fragmento anula eso y obliga al producto a mostrar la pestaña de reseñas:

Fragmento de PHP 2: Forzar "Vendido individualmente" a todos los productos

Aquí las cosas se vuelven mucho más fáciles ya que WooCommerce nos brinda un enlace de filtro llamado " woocommerce_is_sold_individually " (ya cubrimos algunos escenarios de casos para eso en esta publicación ). ¡Simplemente podemos anular la configuración por producto, en toda la tienda, con un solo forro!

/**
 * @snippet       Override & Force Sold Individually @ WooCommerce Products
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_filter( 'woocommerce_is_sold_individually', '__return_true' );

Aquí está la captura de pantalla de configuración:

Y aquí está el resultado en la interfaz una vez que el fragmento está activo:

Fragmento de PHP 3: Forzar la configuración de cualquier producto

Conozca el filtro ' woocommerce_product_get_WHATEVER ', que puede usar para modificar cualquier configuración que se haya habilitado/asignado a cualquier campo de producto.

Simplemente cambie " LO QUE SEA " en cualquiera de las siguientes teclas (al lado de cada tecla encontrará su valor predeterminado):

$data = array(
      'name'               => '',
      'slug'               => '',
      'date_created'       => null,
      'date_modified'      => null,
      'status'             => false,
      'featured'           => false,
      'catalog_visibility' => 'visible',
      'description'        => '',
      'short_description'  => '',
      'sku'                => '',
      'price'              => '',
      'regular_price'      => '',
      'sale_price'         => '',
      'date_on_sale_from'  => null,
      'date_on_sale_to'    => null,
      'total_sales'        => '0',
      'tax_status'         => 'taxable',
      'tax_class'          => '',
      'manage_stock'       => false,
      'stock_quantity'     => null,
      'stock_status'       => 'instock',
      'backorders'         => 'no',
      'low_stock_amount'   => '',
      'sold_individually'  => false,
      'weight'             => '',
      'length'             => '',
      'width'              => '',
      'height'             => '',
      'upsell_ids'         => array(),
      'cross_sell_ids'     => array(),
      'parent_id'          => 0,
      'reviews_allowed'    => true,
      'purchase_note'      => '',
      'attributes'         => array(),
      'default_attributes' => array(),
      'menu_order'         => 0,
      'post_password'      => '',
      'virtual'            => false,
      'downloadable'       => false,
      'category_ids'       => array(),
      'tag_ids'            => array(),
      'shipping_class_id'  => 0,
      'downloads'          => array(),
      'image_id'           => '',
      'gallery_image_ids'  => array(),
      'download_limit'     => -1,
      'download_expiry'    => -1,
      'rating_counts'      => array(),
      'average_rating'     => 0,
      'review_count'       => 0,
);

Lo que significa que, si desea anular "manage_stock", puede escribir lo siguiente:

/**
 * @snippet       Override a Setting @ WooCommerce Products
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_filter( 'woocommerce_product_get_manage_stock', 'bbloomer_override_product_setting', 9999, 2 );
 
function bbloomer_override_product_setting( $value, $product ) {
   $value = 'yes';
   return $value;
}

Deja una respuesta

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

Subir