https://tdestudiodesign.com/wp-content/plugins/whatsapp/style.css

Las operaciones manuales son siempre una pesadilla para los propietarios de tiendas de WooCommerce. Afortunadamente, un poco de código puede ayudar y las acciones que normalmente tomarían horas se pueden ejecutar en unos pocos segundos a través de PHP.

Hoy, echaremos un vistazo a un caso muy borde, pero esto aún puede ser útil para comprender el código y volver a adaptarlo a otros escenarios. Si, como propietario de una tienda, tiende a reemplazar productos o líneas de productos, es posible que necesite reemplazar los productos antiguos con los nuevos dentro de los pedidos existentes, retroactivamente.

Es una operación única que podría tomar horas si tuviera que hacerse manualmente, en función del número de pedidos existentes. Sin embargo, con este fragmento simple, puede editar un número ilimitado de pedidos y dejar que el código reemplace los elementos ordenados. Entonces, veamos cómo se hace esto. ¡Disfrutar!

Iniciar sesión como administrador y agregar «bb-update-orders«A la URL actual. Golpea enter. ¡La función de reemplazo del producto se activará!

Php Snippet: la función para reemplazar a granel en los productos en pedidos existentes, retroactivamente

Nota y descargo de responsabilidad importante: esta función podría estropear toda su base de datos de WordPress. Use solo si sabe lo que está haciendo y también lo pruebe primero en la puesta en escena.

Uso: Simplemente agregue el parámetro de URL «BB-UPDate-Orders» a cualquier URL de administrador de WordPress (por ejemplo https://example.com/wp-admin/index.php?bb-update-orders), presione Entrar en la barra del navegador y la función se activará.

 /**  * @snippet       Bulk Replace Product @ WooCommerce Orders  * @how-to        businessbloomer.com/woocommerce-customization  * @author        Rodolfo Melogli, Business Bloomer  * @compatible    WooCommerce 7  * @community     https://businessbloomer.com/club/  */  add_action( 'admin_init', 'bbloomer_update_old_orders' );  function bbloomer_update_old_orders() {  if ( isset( $_REQUEST['bb-update-orders'] ) ) {  if ( ! current_user_can( 'manage_woocommerce' ) ) { wp_die( esc_html__( 'You do not have permission to bulk update orders', 'woocommerce' ) ); }  $old_product_id = 789; $new_product_id = 123456;       $new_product = wc_get_product( $new_product_id );       $last_order = get_posts( 'post_type=shop_order&numberposts=1&fields=ids' );       $last_order_id = $last_order[0];  for ( $i = 1; $i <= $last_order_id; $i++ ) {  $order = wc_get_order( $i ); if ( ! $order instanceof WC_Order ) continue;          $replaced = false;  foreach ( $order->get_items() as $item_id => $item ) { if ( $item && $item->get_product_id() == $old_product_id ) { wc_delete_order_item( $item_id ); $order->add_product( $new_product, $item->get_quantity(), array( 'order' => $order ) ); $order->add_order_note( 'Replaced product programmatically' );                $replaced = true; }          }  if ( $replaced ) $order->save();  }  }  } 

Deja una respuesta

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