我有wp_query请求提供所有产品,需要为2个字段排序: 按类别&按menu_order。 不同!我需要按" menu_order"排序。在每个类别中。
简单查询:
$args = array(
'orderby' =. 'product_cat menu_order'
'posts_per_page' => -1,
'post_type' => 'product',
);
$loop = new WP_Query($args);
在全球$ product中,存在字段" menu_order",但不存在字段" product_cat"。
我可以使用wp_query吗?或者可能存在另一种方式来做到这一点?
答案 0 :(得分:0)
我是成立的正确方法,代码吼叫,这个例子为
/* Products Loop */
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'posts_per_page' => $prod_per_page,
'paged' => $paged,
'post_type' => 'product',
'product_cat' => $product_cat,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'term_id',
'terms' => $subcats_ar,
'operator' => 'NOT IN'
),
),
'orderby' => array('menu_order' => 'ASC', 'title' => 'ASC')
);
$loop = new WP_Query($args);
更简单的方法,没有分页和排除子类别:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'posts_per_page' => -1,
'post_type' => 'product',
'product_cat' => $product_cat,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'term_id'
),
),
'orderby' => array('menu_order' => 'ASC', 'title' => 'ASC')
);
$loop = new WP_Query($args);
魔术线是:
'orderby' => array('menu_order' => 'ASC', 'title' => 'ASC')
答案 1 :(得分:-1)
在尝试和搜索时,我找到了一个解决方案,使用两个查询来实现此目的,下面的示例可能会帮助您实现目标。
<?php
$catargs = array(
'orderby' => 'name',
'order' => 'ASC',
);
$categories = get_categories( $catargs );
foreach ($categories as $category) {?>
<h3><?php echo $category->name;
// Category title ?></h3>
<?php
// WP_Query arguments
$args = array (
'post_type' => 'resources',
'cat' => $category->cat_ID,
'posts_per_page' => '-1',
'order' => 'ASC',
'orderby' => 'title',
);
// The Query
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
?>
<h5><?php the_title(); // Post title ?></h5>
<?php
// You can all phone/ email here
}
} else {
// no posts found
}
// Restore original Post Data
wp_reset_postdata();
}
?>
如果方法适合您,请告诉我。