按自定义分类法和自定义字段ASC排序帖子


Sort posts by custom taxonomy and custom field ASC

我尝试通过自定义分类法对我的帖子进行排序,但它不能正确地进行排序。

我尝试用ACF创建的名为"niveau_academique"的自定义字段对其进行排序。

我试着把它包含在

$clauses['orderby'] = " niveau_academique ";
$clauses['orderby'] .= ( 'ASC' == strtoupper( $wp_query->get('order') ) ) ? 'ASC' : 'DESC';

但是如果它显示没有结果。这是我实际的排序函数

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 );

谢谢你的帮助!

检查上次在wordpress中执行的查询,以查看您修改的查询是否添加到wordpress post子句中。

也检查posts_clauses

http://codex.wordpress.org/Plugin_API/Filter_Reference/posts_clauses

<?php echo $GLOBALS['wp_query']->request; ?>

我用这个答案来解决我的问题。

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" );