我尝试通过自定义分类法对我的帖子进行排序,但它不能正确地进行排序。
我尝试用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" );