我试图通过自定义分类法对帖子进行排序,但它没有正确执行。
我尝试使用ACF创建的名为“niveau_academique”的自定义字段对其进行排序。
我试图用
简单地包含它$clauses['orderby'] = " niveau_academique ";
$clauses['orderby'] .= ( 'ASC' == strtoupper( $wp_query->get('order') ) ) ? 'ASC' : 'DESC';
但我没有显示任何结果。 Theres,我的实际排序功能。
function projets_clauses( $clauses, $wp_query ) {
global $wpdb;
if ( isset( $wp_query->query['orderby'] ) && 'degres' == $wp_query->query['orderby'] ) {
$clauses['join'] .= " LEFT JOIN (
SELECT object_id, GROUP_CONCAT(name ORDER BY name ASC) AS degres
FROM $wpdb->term_relationships
INNER JOIN $wpdb->term_taxonomy USING (term_taxonomy_id)
INNER JOIN $wpdb->terms USING (term_id)
WHERE taxonomy = 'degres'
GROUP BY object_id
) AS degres_terms ON ($wpdb->posts.ID = degres_terms.object_id)";
$clauses['orderby'] = " degres_terms.degres ";
$clauses['orderby'] .= ( 'ASC' == strtoupper( $wp_query->get('order') ) ) ? 'ASC' : 'DESC';
}
return $clauses;
}
add_filter( 'posts_clauses', 'projets_clauses', 10, 2 );
感谢您的帮助!
答案 0 :(得分:0)
检查wordpress中最后执行的查询,看是否在wordpress post子句中添加了修改后的查询。
同时检查posts_clauses
http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_clauses
<?php echo $GLOBALS['wp_query']->request; ?>
答案 1 :(得分:0)
我用这个答案解决了我的问题。
function orderby( $a, $b ) {
global $posts;
$apos = get_field('niveau_academique', $a->ID);
$bpos = get_field('niveau_academique', $b->ID);
return ( $apos < $bpos ) ? -1 : 1;
}
usort( $projets->posts, "orderby" );