在Woocommerce中,我目前正在尝试更改默认的orderby
,以显示按其品牌和标题排序的产品。
通过完美的Woocommerce品牌完成品牌。我设法根据品牌子弹获得订单(因为这就是我设置他们的订单的方式)。 我还使用WOOF(Woocommerce产品过滤器)插件按类别/品牌进行过滤。
我正在按分类 wpb-brand
对产品进行分类,我正在寻找一种对产品标题进行次级分类的方法,但我不知道该怎么做。
这是我的代码:
add_filter('posts_clauses', 'posts_clauses_with_tax', 10, 2);
function posts_clauses_with_tax( $clauses, $wp_query ) {
global $wpdb;
$taxonomies = array('pwb-brand');
$orderBy['field'] = "pwb-brand";
$orderBy['direction'] = "ASC";
if( in_array($orderBy['field'], $taxonomies) ) {
$clauses['join'] .= "
LEFT OUTER JOIN {$wpdb->term_relationships} AS rel2 ON {$wpdb->posts}.ID = rel2.object_id
LEFT OUTER JOIN {$wpdb->term_taxonomy} AS tax2 ON rel2.term_taxonomy_id = tax2.term_taxonomy_id
LEFT OUTER JOIN {$wpdb->terms} USING (term_id)
";
$clauses['where'] .= " AND (taxonomy = '".$orderBy['field']."' OR taxonomy IS NULL)";
$clauses['groupby'] = "rel2.object_id";
$clauses['orderby'] = "GROUP_CONCAT({$wpdb->terms}.slug ORDER BY slug ASC) ";
$clauses['orderby'] .= ( 'ASC' == strtoupper( $orderBy['direction'] ) ) ? 'ASC' : 'DESC';
return $clauses;
}
else {
return $clauses;
}
}
有什么办法可以使产品对象添加第二个 orderby
子句?
答案 0 :(得分:1)
能够解决问题。
就像注释掉最后一个“ orderby”行一样简单,因为它有点多余,可以通过数据库对象获取posts表。
//$clauses['orderby'] .= ( 'ASC' == strtoupper( $orderBy['direction'] ) ) ? 'ASC' : 'DESC';
$clauses['orderby'] .= ", {$wpdb->posts}.post_title ASC";