Woocommerce WP_查询与商业

Woocommerce WP_查询与商业,woocommerce,wordpress,Woocommerce,Wordpress,我在(*Wordpress Child Theme)functions.php中有一个函数,它使用全局$wp_查询返回附加的WooCommerce产品类别。get_posts()函数只返回产品第一页的产品数量。(*每页的post_值-在本例中为16) 我试图通过在archive-product.php模板中的函数调用之前添加下面的代码,将post_per_页面临时设置为-1: $wp_query->set('posts_per_page', 999); $wp_query->quer

我在(*Wordpress Child Theme)functions.php中有一个函数,它使用全局$wp_查询返回附加的WooCommerce产品类别。get_posts()函数只返回产品第一页的产品数量。(*每页的post_值-在本例中为16)

我试图通过在archive-product.php模板中的函数调用之前添加下面的代码,将post_per_页面临时设置为-1:

$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;  
}
//基于附加的类别构建动态类别选择菜单
函数dynamic_category_select(){
全局$wp_查询;
$my_posts=$wp_query->get_posts();
$my_post_ID=wp_list_pull($my_posts,'ID');
$categories=wp_get_object_terms($my_post_id,'product_cat');
foreach($categories作为$category){
$options[]='.$category->name';
}
$x='';
$x.='选择类别选项';
foreach($options作为$option){
$x.=$option;
}
$x.='';
返回$x;
}

尝试替换您的
$my\u posts=$wp\u query->get\u 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();