J'ai mis à jour WooCommerce vers la version 3.0, mais je ne peux pas afficher les produits présentés sur mon thème. J'ai cherché sur Google pendant un certain temps, et WC a supprimé la fonctionnalité _ et ajouté ceci dans la taxonomie. Mais je ne comprends pas tellement comment mon thème obtient les produits présentés.
Voici le code des mauvais produits en vedette.
$meta_query = WC()->query->get_meta_query();
$meta_query[] = array(
'key' => '_featured',
'value' => 'yes'
);
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => $products,
'orderby' => $orderby,
'order' => $order == 'asc' ? 'asc' : 'desc',
'meta_query' => $meta_query
);
Et si vous savez où se trouve l’élément présenté dans la base de données. Merci beaucoup.
Depuis Woocommerce 3, vous devez utiliser un Requête de taxe au lieu de les produits en vedette sont désormais gérés par product_visibility
taxonomie personnalisée pour le termefeatured
:
// The tax query
$tax_query[] = array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'terms' => 'featured',
'operator' => 'IN', // or 'NOT IN' to exclude feature products
);
// The query
$query = new WP_Query( array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => $products,
'orderby' => $orderby,
'order' => $order == 'asc' ? 'asc' : 'desc',
'tax_query' => $tax_query // <===
) );
Références:
WP_Query
Paramètres de taxonomieWC_Shortcodes
featured_products()
fonctionVous pouvez utiliser la fonction
wc_get_featured_product_ids()
pour obtenir le tableau des ID de produit en vedette mais utiliser une requête taxe dans unWP_Query
convient parfaitement et dans le bon sens…
En relation:
Cela devrait fonctionner.
C'est une vieille question, mais vous pouvez utiliser wc_get_featured_product_ids () too:
$args = array(
'post_type' => 'product',
'posts_per_page' => $products,
'orderby' => $orderby,
'order' => $order == 'asc' ? 'asc' : 'desc',
'post__in' => wc_get_featured_product_ids(),
);
$query = new WP_Query( $args );
Je viens de le découvrir ici. J'espère que ça aide!
$args = array(
'post_type' => 'product',
'posts_per_page' => 12,
'tax_query' => array(
array(
'taxonomy' => 'product_visibility',
'field' => 'name',
'terms' => 'featured',
),
),
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
while ( $loop->have_posts() ) : $loop->the_post();
wc_get_template_part( 'content', 'product' );
endwhile;
} else {
echo __( 'No products found' );
}
wp_reset_postdata();