[英]Sort Woocommerce Products from a product category and custom meta_key
我使用自定義插件(和meta_key)成功按喜歡(計數)過濾了我所有的Wordpress帖子,這也使我可以過濾類別中最喜歡的帖子。 我在自定義頁面模板中顯示(查詢)結果。 一切正常。
Like功能在Woocommerce產品上也適用。 但是到目前為止,我還無法建立一個頁面,在該頁面中,我對商品(post_type)進行分類的方式與我對帖子所做的處理方式相同。 我最接近的是在頁面上顯示最喜歡的帖子,但是類別的排序不會過濾帖子-它顯示的內容與主頁相同。 類別列表和類別鏈接的url調用工作正常。
注意: url查詢字符串“ product-cato”是自定義的-使用ajax過濾器插件的即時消息將使用此查詢字符串和類別ID,例如.../?product-cato=6
請不要混淆例如wicht product_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
同時還要使用product-cato
…如果
sanitize_text_field($_GET['product_cat'])
不是產品類別“ slug” ,則您需要使用正確的字段類型('name'
或'slug'
)更改'field' => 'term_id',
。
因此,您的代碼應該是(正確定義'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']),
),
),
) );
}
它應該工作……
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.