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

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

HIT

21.09.2015

15861

1

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

Сортировка категорий 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;
}
[site-socialshare]
  • Похожие записи
  • Комментарии
  • Вложения
Варианты сортировки woocommerce

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

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

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

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

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

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

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

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

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

1 комментарий

  1. kissmyass

    Форма комментариев выглядит просто нелепо, слишком широко. Спец херовый

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