Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get WooCommerce featured products in a WP_Query

I updated WooCommerce to version 3.0 but I can't show the featured products on my theme, I googled a while and get WC deleted the _feature and add this in taxonomy. But I don't understand so much how my theme get the featured products.

Here is the code of the wrong featured productcs.

$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
    );

And if you know where is the featured item in the DataBase. Thanks so much.

like image 223
Armando García Avatar asked Sep 15 '17 19:09

Armando García


People also ask

How do I get featured products in WooCommerce?

To add a new product, first, go to Products > Add New from your WooCommerce dashboard. Alternatively, if you are going to update a current product, go to Products > All Products. Then, open the product you want to set as a featured and click Edit.

How do you get featured products on WordPress?

Then hover your mouse over a product and click the Edit option. Next, find the “Publish” panel on the right-hand side of the WordPress editor. From there, click Edit next to the “Catalog Visibility” heading. You can now click the “This is a featured product” checkbox and select OK.


Video Answer


3 Answers

Since Woocommerce 3, you need to use a Tax Query instead as featured products are now handled by product_visibility custom taxonomy for the term featured:

// 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 // <===
) );

References:

  • Official documentation WP_Query Taxonomy Parameters
  • Source code Woocommerce WC_Shortcodes featured_products() function

You could use wc_get_featured_product_ids() function to get the featured product IDs array but using a tax query in a WP_Query is just fine and the right way…

Related:

  • Woocommerce meta_query not working for featured products
  • Show only featured products in Woocommerce shop page
  • Get featured products in Woocommerce 3

It should works.

like image 124
LoicTheAztec Avatar answered Oct 17 '22 22:10

LoicTheAztec


This is an old question, but you can use 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 );

Just discovered it here. I hope it helps!

like image 29
Felipe Elia Avatar answered Oct 17 '22 22:10

Felipe Elia


You can now use wc_get_products with parameter featured set to true. See https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query

$args = array(
    'featured' => true,
);
$products = wc_get_products( $args );

For people looking for getting featured products by category then you can check my notes about this => https://jameshwartlopez.com/plugin/get-featured-products-of-a-category/

like image 10
jameshwart lopez Avatar answered Oct 17 '22 22:10

jameshwart lopez