/ Плагины / Сортировка категорий

Сортировка категорий

HIT

21.09.2015

14155

Сортировка категорий частая задача при формировании каталога. Разберемся в тонкостях данного явления.

Сортировка категорий WP

Сортировка категорий на wordpress реализована не очень детально. Сходу категории сортируются по алфавиту, но бывает нужно отсортировать их в произвольном порядке.
Для этих целей подходит плагин Category Order.
После установки в меню Записи появляется раздел с функционалом сортировки категорий, нужно расставить категории как следует. В коде менять ничего не надо.

Если у настраиваемых категорий есть дочерние, то они могут тоже начать выводиться. Для этого в шаблоне вывода категорий

<?php $current_cat = get_query_var('cat');
global $ancestor;
$childcats = get_categories('child_of='.$current_cat.'&hide_empty=0');
foreach ($childcats as $childcat) : ?>

надо заменить child_of на parent.

Category Order and Taxonomy Terms Order

Еще один замечательный плагин для пользовательской сортировки категорий — Category Order and Taxonomy Terms Order (300 000). Также этим плагином можно назначать порядок терминов таксономии.

Одним недостатком является, то, что в автоматическом режиме начинает сортировать все термины, где это и не требуется. Чтобы этого избежать, нужно отключить в настройках автоматическую сортировку и где необходимо прописывать вручную, примеры:

$childcats = get_categories('child_of=3&hide_empty=1&orderby=term_order');
или
$argv = array( 'orderby' => 'term_order' );
get_terms('category', $argv);

Custom Taxonomy Order (40 000)

Еще один отличный плагин. Особенностью является то что он сортирует все имеющиеся таксономии (категории, метки, пользовательские). Категории сортирует по отдельности, можно назначить порядок у родительских, а потом в любой из дочерних категорий. Это удобно если категорий много.

Сортировку, например в метках, нужно прописывать так: ‘orderby’ => ‘term_order’

Сортировка категорий и товаров WC

В woocommerce произвольная сортировка уже реализована. Для изменения порядка категорий достаточно перетащить категорию в нужную позицию. Если категорий много нужно включить отображение бОльшего количества категорий на страницу (сверху справа — Настройки экрана).

Таким же образом можно сортировать и товары WC. В настройках WC (Товары/Отображение/) исходная сортировка товаров должна быть Сортировка по умолчанию (произвольный порядок + имя). В архиве товаров сверху слева нажимаем кнопку Сортировка, с этого момента товары можно перетягивать. Произвольной сортировки без перетягивания можно добиться заполнением у товара поля Порядок (в самом товаре или при быстром редактировании).

Нужно учитывать, что изначально у товара значение Порядок = 0. т.е. они все равны 0 и сортируются по алфавиту. Например, если мы передвинем товар выше другого, который изначально не трогали — не факт, что товар, который мы двигали будет первее при выводе.

Скрываем дочерние категории

Если на сайте заведено множество категорий и подкатегорий, то их уже не удобно сортировать, перетаскивая через множество дочерних категорий. На сайте wp-kama есть отличное решение, создающее в категориях переключатель — Показывать все уровни/Только родители.

// Переключатель уровня категорий в админке
$taxonomy = 'product_cat';
add_action( "{$taxonomy}_add_form", function($taxonomy){
	ob_start();
} );

add_action( "after-{$taxonomy}-table", function($taxonomy){
	$html = ob_get_clean();

	$__preg_replace_callback = function( $match ){
		$val = @ $_GET['parent_only'];
		ob_start();
		?>
		<div class="alignleft actions">
			<select name="parent_only" onchange="window.add_param_to_URL(this)">
				<option value="">Все уровни...</option>
				<option value="yes" <?php selected('yes', $val) ?> >Только родители</option>
			</select>
		</div>
		<script>
		window.add_param_to_URL = function(el){
			var href = window.location.href, sep = /[?]/.test(href) ? "&" : "?", name = el.name.replace(/[^a-z_-]/i,'');
			window.location = (new RegExp(name+'=?')).test(href) ? href.replace( (new RegExp('([?&]'+name+'=?)[^&]*')), (el.value ? "$1"+ el.value : '') ) : (href + sep + name + "="+ el.value);
		}
		</script>
		<?php
		return $match[1] . ob_get_clean();
	};

	echo preg_replace_callback('~(id="doaction[^<]+</div>)~', $__preg_replace_callback, $html );
} );


add_filter('get_terms_args', 'my_terms_filter_handler');
function my_terms_filter_handler( $query ){
	if( empty($_GET['parent_only']) || ! is_admin() ) return $query;
	if( ! ( $query['fields'] == 'count' || isset($query['page'])  ) )
		 return $query;
	$query['parent'] = 0; // только родители
	return $query;
}

Поделиться в соц. сетях:

  • Похожие записи
  • Комментарии
  • Вложения
Сортировка по произвольным полям

Сортировка по произвольным полям

Более продвинутая форма сортировки — сортировка по произвольным полям. Для рассматриваемого функционала сортировки, нет принципиальной разницы: создано поле штатными средствами wordpress или плагином ACF. Метод сортировки по произвольному полю Ранее Читать далее »

Варианты сортировки woocommerce

Варианты сортировки woocommerce

Добавляем свои варианты сортировки в woocommerce, кроме стандартных: по цене, по новизне, по популярности, по рейтингам. Сортировке поддаются только числовые свойства товаров содержащихся у каждого товара. Сортировка по атрибуту относится Читать далее »

/
Доработка сортировки постов

Доработка сортировки постов

В wordpress существуют следующие варианты сортировки записей: author — сортировать по ID авторов content — сортировать по контенту date — сортировать по дате создания записи (по умолчанию) ID — сортировать Читать далее »

Добавить комментарий

Пока нет комментариев. Будь первым!

Сортировка категорий
Экранная лупа для изображения
Рекомендации для васЭкранная лупа для изображенияOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.