@PowerFull

Как получить список первых N таксономий на каждую из букв?

Приветствую. Есть простая конструкция

$args=array( 
               'orderby'     =>     'name',
               'taxonomy'    =>     'taxonomy_name',
               'get'         =>     'all',
               'order'       =>     'ASC'
               ); 
$term_query = get_terms( $args );


Суть проблемы: Есть алфавитный указатель по таксономиям, на каждую букву по 5 шт выводится, а дальше ссылка на "смотреть еще". Сейчас приходится, приведенными выше строками, получать все таксы сразу с сортировкой по алфавиту и обрезать до 5 на каждую букву циклами.

Вопрос: как я могла бы просто получить за одно обращение n-ое количество таксономий на букву N?

Пробовала
'name__like' => 'а%'
но ничего не возвращает
  • Вопрос задан
  • 33 просмотра
Пригласить эксперта
Ответы на вопрос 1
mihdan
@mihdan
WordPress-евангелист, ведущий РНР - разработчик
Используйте фильтр terms_clauses и свой произвольный аргумент letter:

function get_terms_fields( $clauses, $taxonomies, $args ) {
    if ( ! empty( $args['letter'] ) ) {
        global $wpdb;

        $letter_like = $wpdb->esc_like( $args['letter'] );

        if ( ! isset( $clauses['where'] ) )
            $clauses['where'] = '1=1';

        $clauses['where'] .= $wpdb->prepare( " AND t.name LIKE %s", "$letter_like%" );
    }

    return $clauses;
}

add_filter( 'terms_clauses', 'get_terms_fields', 10, 3 );


Использовать как-то так:

get_terms( 'my_taxonomy', 'letter=Ё' );
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы