使用WP_Query获取产品

时间:2019-10-23 21:06:52

标签: wordpress woocommerce

好吧,我正在尝试使用WP_Query以及一些参数来获取WooCommerce产品

它给我结果,但是按产品标题排序不起作用,而且当我尝试在参数中添加类别时也不起作用。

这是我正在尝试的:

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$params = array(
    'post_type' => 'product',
    'post_status' => 'publish',
    'posts_per_page' => 20,
//    'category__in' => array(22),
    'paged' => $paged,
    'orderby' => 'title',
    'order' => 'ASC'
);

$query = new WP_Query( $params );


$total_found_posts = $query->found_posts;
$total_page = ceil($total_found_posts / 20);

任何帮助表示赞赏

谢谢

2 个答案:

答案 0 :(得分:0)

您的查询对我有用。也许问题在于您如何提取产品并展示它们?

我在自己的一个网站上实现了以下功能,并按字母顺序列出了前20种产品:

add_action('astra_header_before', 'entreprenerds_callback');
function entreprenerds_callback() {
    $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
    $params = array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'posts_per_page' => 20,
        // 'category__in' => array(22),
        'paged' => $paged,
        'orderby' => 'title',
        'order' => 'ASC'
    );
    $query = new WP_Query( $params );
    $total_found_posts = $query->found_posts;
    $total_page = ceil($total_found_posts / 20);

    echo "## " . $total_found_posts . " ##"; // shows me 51

    while($query->have_posts()) {
        $query->the_post();
        echo get_the_title() . '<br />';
    }
}

您是否在循环中使用了正确的查询对象?

答案 1 :(得分:0)

好吧,我的查询工作正常,问题出在我的“ Post Types Order”插件,它为orderby子句添加了额外条件。

我将我的参数更改为此:

$params = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => 20,
'ignore_custom_sort' => true,
'paged' => $paged,
'orderby' => 'title',
'order' => 'ASC'

);

它按我的意愿工作。