WordPress как на ладони
Мощный и не дорогой хостинг от Fornex.com Хостинг, VPS/VDS и отдельные сервера только на SSD дисках. 7 дней бесплатного тестирования.

get_terms_orderby хук-фильтр . WP 2.8

Фильтруем часть 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);

Где вызывается хук

WP_Term_Query::parse_orderby()
get_terms_orderby
wp-includes/class-wp-term-query.php 860
$orderby = apply_filters( 'get_terms_orderby', $orderby, $this->query_vars, $this->query_vars['taxonomy'] );

Где используется хук (в ядре WP)

Не используется.
Комментариев нет
    Здравствуйте, !     Войти . Зарегистрироваться