我使用自定义插件(和meta_key)成功按喜欢(计数)过滤了我所有的Wordpress帖子,这也使我可以过滤类别中最喜欢的帖子。我在自定义页面模板中显示(查询)结果。一切正常。
Like功能也可用于Woocommerce产品。但是到目前为止,我还无法建立一个页面,在该页面中,我对商品(post_type)进行分类的方式与我在帖子中所做的处理方式相同。我最接近的是在页面上显示最喜欢的帖子,但是类别的排序不会过滤帖子-它显示的内容与主页相同。类别列表和类别链接的url调用工作正常。
注: URL查询字符串“产品卡托”是一个自定义-使用至极使用该查询字符串和类别ID的AJAX过滤器插件的IM一样.../?product-cato=6
,请不要混合起来wichtproduct_cat
例如
这是我到目前为止提出的内容-从帖子的代码开始(直到工作正常)。任何想法如何解决这个问题?谢谢
查询(工作正常)
if (isset($_GET['category'])) {
$args = array(
'meta_key' => '_recoed',
'meta_compare' => '>',
'meta_value' => '0',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'category_name' => sanitize_text_field($_GET['category']),
'paged' => $paged
);
}
query_posts($args);
分类列表以过滤每个分类中的帖子(工作正常)
<?php $categories = get_categories();
foreach($categories as $category) { ?>
<li>
<a class="popular-categories" href="<?php echo get_permalink(); ?>?category=<?php echo $category->category_nicename; ?>"><?php echo $category->name; ?></a>
</li>
<?php } ?>
现在,Woocommerce查询和类别部分卡住了
产品查询post_type
if (isset($_GET['product-cato'])) {
$args = array(
'meta_key' => '_recoed',
'meta_compare' => '>',
'meta_value' => '0',
'post_type' => 'product',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'taxonomy' => sanitize_text_field($_GET['product_cat']),
'paged' => $paged
);
query_posts($args);
分类列表以过滤每个商店类别中的职位
<?php
$product_categories = get_terms( 'product_cat' );
$count = count($product_categories);
foreach ( $product_categories as $product_category ) { ?>
<li>
<a class="popular-categories" href="<?php echo get_permalink(); ?>?product-cato=<?php echo $product_category->term_id; ?>"><?php echo $product_category->name; ?></a>
</li>
}
?>
由于“产品类别”是自定义分类法
'product_cat'
,因此请使用tax_query
。
因此,没有错:
'taxonomy' => sanitize_text_field($_GET['product_cat'])
…使用它(正确定义'field'
参数):
'tax_query' => array( // the product category query
array(
'taxonomy' => 'product_cat',
'field' => 'term_id', // (also 'name' or 'slug') <== <== <== <== <==
'terms' => sanitize_text_field($_GET['product-cato']),
),
),
还要检查
sanitize_text_field($_GET['product_cat'])
那'product_cat'
是正确的子弹,因为您也使用product-cato
…如果
sanitize_text_field($_GET['product_cat'])
不是“ slug”产品类别,则您需要'field' => 'term_id',
使用正确的字段类型('name'
或'slug'
)进行更改。
因此,您的代码应该是(正确定义'field'
参数):
if (isset($_GET['product-cato'])) {
query_posts( array(
'meta_key' => '_recoed',
'meta_compare' => '>',
'meta_value' => '0',
'orderby' => 'meta_value_num',
'order' => 'DESC',
'paged' => $paged,
'post_type' => 'product',
//'posts_per_page' => 20,
'post_status' => 'publish',
// The product category query
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id', // (also 'name' or 'slug') <== <== <== <==
'terms' => sanitize_text_field($_GET['product-cato']),
),
),
) );
}
它应该工作……
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句