按自定义分类和自定义字段ASC对帖子进行排序

时间:2014-08-14 15:50:48

标签: php wordpress sorting wp-query

我试图通过自定义分类法对帖子进行排序,但它没有正确执行。

我尝试使用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 );

感谢您的帮助!

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