2015-07-28 5 views
2

Не похоже, чтобы получить это работает независимо от того, что:рода (usort) на WP_Query

$args = array(...); 
$unitsQuery = new WP_Query($args); 

function customCompare($a, $b) 
{ 
    return strcasecmp($a->post_title,$b->post_title); 
} 

$unitsQuery->posts = usort($unitsQuery->posts, 'customCompare'); 

if($unitsQuery->have_posts()) { 
    while($unitsQuery->have_posts()) : $unitsQuery->the_post();?> 

    <div><?php the_title(); ?></div> 

    <?php endwhile; 
} 
wp_reset_postdata(); 

Все работает абсолютно нормально, не вызывая сортировку. Мне действительно нужно запустить пользовательский сортировку после запроса.

ответ

1

Обратите внимание, что usort() возвращает только true или false, так и с этой линии:

$unitsQuery->posts = usort($unitsQuery->posts, 'customCompare'); 

вы переопределение сообщения. Измените его на:

usort($unitsQuery->posts, 'customCompare'); 

Интересно, почему вы должны использовать usort вместо параметра WP_Queryorderby или posts_orderby фильтра.

+0

Спасибо Birgire, теперь я понимаю, почему я получал «1» при печати $ query-> сообщений после его назначения. Причина в том, что данные, которые я хочу использовать в сортировке, не входят в сообщения. У столбцов есть только указатель (id) термина таксономии (пользовательские поля), но я хочу сортировать сообщения по алфавиту. (Я использую сортировку внутри wp_query, когда это возможно, так как это намного проще, но не думайте, что это возможно с этим). Все отсортировано сейчас спасибо! – Afonso

+0

хорошо, приятно слышать, что это сработало для вас @Afonso – birgire

Смежные вопросы