WP_Query和Woocommerce

时间:2015-05-31 22:50:18

标签: wordpress woocommerce wp-query

我有一个函数(* Wordpress Child Theme)functions.php,它使用全局$ wp_query返回附加的WooCommerce产品类别。 get_posts()函数只返回第一页产品的产品数量。 (* post_per_page值 - 在这种情况下为16)。

我尝试暂时将post_per_page设置为-1,方法是在我的函数调用之前添加以下代码:archive-product.php模板:

$wp_query->set('posts_per_page', 999);
$wp_query->query($wp_query->query_vars);

然后在archive-product.php模板中的函数调用之后重置值

$wp_query->set('posts_per_page', 16);
$wp_query->query($wp_query->query_vars);

这几乎可行,但会弄乱pre_get_posts功能(*对产品进行分类),如果超过500种产品,也会导致产品结果列表出现问题?

请提出任何建议,我们将不胜感激。感谢。

//build dynamic category select menu based on attached categories
function dynamic_category_select() {    
    global $wp_query;                                   
    $my_posts = $wp_query->get_posts(); 
    $my_post_ids = wp_list_pluck($my_posts, 'ID');
    $categories = wp_get_object_terms($my_post_ids, 'product_cat');

    foreach($categories as $category) {
        $options[] = '<option value="' . $category->slug . '">' . $category->name . '</option>';            
    }

    $x = '<select id="category-options" name="category-options">';
    $x .= '<option value="">Select Category Options</option>';

    foreach($options as $option) {
        $x .= $option;
    }

    $x .= '</select>';
    return $x;  
}

1 个答案:

答案 0 :(得分:0)

尝试使用以下内容替换$my_posts = $wp_query->get_posts();

// Get current query vars
$my_query_args = $wp_query->query_vars;
// Disable paging - return all results
$my_query_args['nopaging'] = true;
// Create a new query with the modified query vars
$my_query = new WP_Query($my_query_args);
$my_posts = $my_query->get_posts();