运行自定义查询后,我正在尝试正确显示分页和结果计数。
现在查询结果显示正确,但在我看来,结果计数和分页显示了车间中所有产品。
在深入研究这个问题之后,我发现我创建了单独的查询对象,而不是替换主查询。我试图按照此处的指南解决此问题:How to fix pagination for custom loops?
..但这是一种wordpress方式,我需要改变这一点:
global $loop ;
$args = array(
\'post_type\' => \'product\',
\'posts_per_page\' =>$per_page,
\'meta_query\' => array(
array(
\'key\' => \'_product_brand\',
\'value\' => $val,
)
)
);
$loop = new WP_Query( $args );
// pagination fix
$temp_query = $wp_query;
$wp_query = NULL;
$wp_query = $loop;
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();
$wp_query = NULL;
$wp_query = $temp_query;
。。进入woocommerce功能。到目前为止,我已经尝试更改全局变量
$loop 对于
$woocommerce_loop 但这会产生错误。
我还尝试传递$paged属性,如:
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
$args = array(
\'post_type\' => \'product\',
\'posts_per_page\' =>$per_page,
\'paged\' => $paged,
\'meta_query\' => array(
array(
\'key\' => \'_product_brand\',
\'value\' => $val,
)
)
);
还有:
$args[\'paged\'] = ( get_query_var( \'paged\' ) ) ? get_query_var( \'paged\' ) : 1;
这两种方法都失败了,它们正确地显示了产品,但没有分页,也没有结果计数。
这里有什么问题?我非常感谢您的帮助,谢谢。
#EDIT 1遵循CFX指南后:https://cfxdesign.com/create-a-custom-woocommerce-product-loop-the-right-way/
分页和结果计数最终开始工作。我这里的问题是使用WP\\u Query而不是wc\\u get\\u产品。
遵循wc\\u get\\u products功能的woocommerce文档:https://github.com/woocommerce/woocommerce/wiki/wc_get_products-and-WC_Product_Query
我使用自定义密钥实现了产品的正确显示。但并非所有文档中的论点都对我有效。例如,我不能显示类别中的产品,也不能显示给定价格的产品。
$all_products = wc_get_products(array(
\'category\' => array( \'suspension\' ),
\'price\' => 59.99,
\'regular_price\' => 59,
\'sale_price\' =>159,
));
我试着一个接一个地传递这些参数,所有这些都是根据文档进行的,所以它应该可以工作,但事实并非如此。它产生了以下错误:
警告:array\\u map():参数#2应该是E:\\xampp\\apps\\wordpress\\htdocs\\wp content\\plugins\\woocommerce\\includes\\data stores\\class wc product data store cpt中的数组。php在线1673
警告:array\\u filter()要求参数1为array,在E:\\xampp\\apps\\wordpress\\htdocs\\wp content\\plugins\\woocommerce\\includes\\data stores\\class wc product data store cpt中提供空值。php在线1673
#EDIT2
参数:
$all_products = wc_get_products(array(
\'product_category\' => \'suspension\',
));
处理程序:
if ( ! empty( $query_vars[\'product_category\']) ) {
$query[\'tax_query\'][] = array(
\'taxonomy\' => \'product_cat\',
\'terms\' => esc_attr( $query_vars[\'product_category\'] ),
);
return $query;
}
我想用给定的slug显示父类别中的产品。只有当我传递类别id时,此代码才起作用。如果我传递slug作为参数(如上面的代码),循环将显示商店中的所有产品。