wordpress 在WP_Query中获取WooCommerce特色产品

pjngdqdw  于 2023-10-16  发布在  WordPress
关注(0)|答案(4)|浏览(164)

我更新了WooCommerce到3.0版本,但我不能在我的主题上显示特色产品,我谷歌了一会儿,让WC删除了_功能,并在分类中添加此功能。但是我不明白我的主题是如何得到特色产品的。
这是错误的特色产品的代码。

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

如果你知道数据库中的特征项在哪里。非常感谢

flmtquvp

flmtquvp1#

从Woocommerce 3开始,您必须使用Tax Query,因为特色产品现在由product_visibility自定义分类法处理术语**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 // <===
) );

参考文献:

  • 官方文档WP_Query分类参数
  • 源代码Woocommerce WC_Shortcodesfeatured_products()函数

您可以使用wc_get_featured_product_ids() function来获取特色产品ID数组,但在WP_Query中使用税务查询就可以了,正确的方法是.
相关信息:

  • Woocommerce Meta_query不适用于特色产品
  • 在Woocommerce商店页面中仅显示特色产品
  • 获取Woocommerce 3中的特色产品

应该可以的

jaxagkaj

jaxagkaj2#

这是一个老问题,但你也可以使用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 );

刚刚发现这里。我希望它有帮助!

htrmnn0y

htrmnn0y3#

您现在可以使用wc_get_products并将参数featured设置为true。参见https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query

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

对于那些想按类别获得特色产品的人来说,你可以查看我的笔记=> https://jameshwartlopez.com/plugin/get-featured-products-of-a-category/

eoigrqb6

eoigrqb64#

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

相关问题