在WP_Query中获取WooCommerce特色产品

2022-08-30 23:57:45

我将WooCommerce更新到3.0版本,但我无法在我的主题上显示特色产品,我用谷歌搜索了一段时间,让WC删除了_feature并在分类中添加它。但是我不明白我的主题是如何获得特色产品的。

这是错误特色产品的代码。

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

如果您知道数据库中的特色项目在哪里。非常感谢。


答案 1

从Woocommerce 3开始,您需要使用税务查询,因为特色产品现在由特色术语的自定义分类处理:product_visibility

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

引用:

您可以使用wc_get_featured_product_ids()函数来获取特色产品ID数组,但是在a中使用税务查询很好,而且方式正确...WP_Query

相关:

它应该有效。


答案 2

这是一个古老的问题,但你也可以使用wc_get_featured_product_ids():

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

只是在这里发现它。我希望它有帮助!


推荐