get_terms_orderby
Фильтруем часть SQL запроса отвечающую за колонку сортировки в функции get_terms(), get_categories(), wp_list_categories().
Использование
function filter_function_name_11( $orderby, $args, $taxonomies ) { // Фильтр... return $orderby; } add_filter( 'get_terms_orderby', 'filter_function_name_11' );
- $orderby(строка)
- Часть запроса, выглядит так при сортировке по колонке name:
t.name
илие.slug
. - $args(массив)
- Массив аргументов переданный в функцию get_terms().
- $taxonomies(строка/массив)
- Название таксономий переданных в get_terms()
Примеры
#1 Сортировка категорий
Предположим, что мы для сортировки категорий указывает в начало слага (альтернативного названия) каждой категории цифру. Теперь, если мы укажем параметр orderby=slug в функции get_terms(), то получим такую сортировку 1, 10, 2, 3..., а надо 1, 2, 3...9, 10. Чтобы это исправить можно изменить часть SQL запроса:
// устанавливаем фильтр add_filter('get_terms_orderby', 'sort_terms_clause', 10, 3); function sort_terms_clause( $orderby, $args, $taxonomies ){ return 't.slug+0'; } // получаем рубрики $terms = get_terms('category', array('hide_empty=0') ); foreach( $terms as $term ){ // выводим рубрики, здесь будет нужная нам сортировка } // удаляем фильтр remove_filter('get_terms_orderby', 'sort_terms_clause', 10);
Список изменений
С версии 2.8.0 | Введена. |
Где вызывается хук
get_terms_orderby
wp-includes/class-wp-term-query.php 957
$orderby = apply_filters( 'get_terms_orderby', $orderby, $this->query_vars, $this->query_vars['taxonomy'] );