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!