Come ottenere tutti i prodotti senza peso in un Woocommerce
In un ecommerce piuttosto grande, non sapevo come fare per ottenere tutti i prodotti senza il relativo peso.
Il peso era necessario per effettuare il calcolo delle spese di spedizione e quindi ogni prodotto e variante di prodotto acquistabile doveva avere il peso per poter completare il checkout.
Non era pensabile di passare prodotto per prodotto perchè erano veramente tanti e il tempo per scorrerli tutti sarebbe stato troppo.
Quindi ho trovato questa soluzione che permette nel listato prodotto da backend di ottenere la lista prodotti che non hanno il peso e anche il dettaglio della variazione senza questa informazione.
A me è stato molto utile… e a voi?
add_action( 'admin_notices', 'nn_products_no_weight_admin' ); function nn_products_no_weight_admin(){ global $pagenow, $typenow; if ( 'edit.php' === $pagenow && 'product' === $typenow ) { $i=0; $args = array( 'status' => 'publish', 'visibility' => 'visible', 'limit' => -1 ); $products = wc_get_products( $args ); foreach ( $products as $product ) { if ( ! $product->get_weight()) { if( $product->is_type( 'variable' ) ){ foreach ( $product->get_available_variations() as $key => $variation_data ) { $weight = $variation_data['weight']; // Get weight from variation if ( ! $weight ) { if (!$i) { echo '<div class="notice notice-warning is-dismissible"><h3>Questi prodotti sono acquistabili e non hanno peso</h3><ul>'; $i++; } echo '<li><a href="' . esc_url( get_edit_post_link( $product->get_id() ) ) . '">' . $product->get_name() . ' Variation sku :' .$variation_data['sku'] .' Variation ID #:'.$variation_data['variation_id'].'</a></li>'; } } } else { if (!$i) { echo '<div class="notice notice-warning is-dismissible"><h3>Questi prodotti sono acquistabili e non hanno peso</h3><ul>'; $i++; } echo '<li><a href="' . esc_url( get_edit_post_link( $product->get_id() ) ) . '">' . $product->get_name() . '</a></li>'; } } } if($i){ echo '</ul></div>'; } } }
Lascia un Commento
Vuoi partecipare alla discussione?Sentitevi liberi di contribuire!