Вижу, задачу в багтрекере вы уже нашли 🙂
Можно воспользоваться фильтром posts_orderby:
$args = array(
'posts_per_page' => 500,
'orderby' => 'meta_value_num',
'meta_key' => '_ss_views',
'order' => 'DESC',
'ignore_sticky_posts' => 1,
);
function sort_by_post_title( $orderby ) {
global $wpdb;
return $orderby .= ", {$wpdb->posts}.post_title ASC";
}
add_filter( 'posts_orderby', 'sort_by_post_title' );
$query = new WP_Query( $args );
remove_filter( 'posts_orderby', 'sort_by_post_title' );
Автор
qsz
(@qsz)
А вот если это таксономи категория, и там нету $args, но есть:
<?php
while(have_posts()): the_post();
if(has_post_thumbnail()):
?>
Куда вставлять код: ??
И по моему после ‘ignore_sticky_posts’ => 1, запятая не должна стоять.
Заранее спасибо.
А вот если это таксономи категория, и там нету $args
Тогда менять нужно основной запрос.
Можно добавить подобный фрагмент в functions.php активной темы:
function sort_by_post_title( $orderby ) {
global $wpdb;
remove_filter( 'posts_orderby', __FUNCTION__ );
return $orderby .= ", {$wpdb->posts}.post_title ASC";
}
function filter_taxonomy_query( $query ) {
if ( is_admin() || ! $query->is_main_query() || ! $query->is_tax() ) {
return;
}
add_filter( 'posts_orderby', 'sort_by_post_title' );
$args = array(
'posts_per_page' => 500,
'orderby' => 'meta_value_num',
'meta_key' => '_ss_views',
'order' => 'DESC',
'ignore_sticky_posts' => 1,
);
foreach ( $args as $query_var => $value ) {
$query->set( $query_var, $value );
}
}
add_action( 'pre_get_posts', 'filter_taxonomy_query' );
И по моему после ‘ignore_sticky_posts’ => 1, запятая не должна стоять.
Запятая после последнего элемента массива в PHP не является ошибкой. Наоборот, она помогает избежать ошибки, когда впоследствии добавляется новый элемент, а запятую добавить забывают.