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

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

HIT

21.09.2015

14080

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

Сортировка категорий 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 существуют следующие варианты сортировки записей: author — сортировать по ID авторов content — сортировать по контенту date — сортировать по дате создания записи (по умолчанию) ID — сортировать Читать далее »

Сортировка постов (по дате, по заголовку, по дате изменений)

Сортировка постов (по дате, по заголовку, по дате изменений)

Создадим для удобства пользователей функционал сортировки постов (по дате, по заголовку, по дате изменений). Сортировка отличается от фильтрации тем, что при сортировке показываются все записи, но в другом порядке, а Читать далее »

Сортировка по меткам

Сортировка по меткам

Делаем функционал сортировки постов по меткам Выводим все метки включенные в данную категорию Добавляем скрипт в header (при добавлении к div post_class()) В скрипте прописываем имеющиеся метки Код в шаблон Читать далее »

/

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

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

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