WordPress как на ладони
rgbcode is looking for WordPress developers.

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

есть таксономия "наклейки"
есть таксономия "позиционирование" со значениями 1 и 2 и 3

конструкция вывода

рубрика наклейки
-- запись горизонтальны стикер а - значение термина 3
-- запись вертикальный  стикер б - значение термина 1
-- запись горизонтальны стикер в - значение термина 3
-- запись вертикальный  стикер г - значение термина 1

как просортировать наклейки по термину

на странице архива "наклейки" как отсортировать записи по slug таксономии "позиционирование" ?

не могу найти конструкцию, сейчас юзаю стандартную по произвольному полю

query_posts(array(
		'orderby'        =>  как можно сюда вставить сортировку по значению из  "позиционирование"  //   none, ID, author, title name(slug), type, date, rand

		'cat'            => $cat_id,
		'order'          => 'ASC', // сортировка от первого до последнего 1 2 3
		'meta_key'       => $meta_key,
		'paged'          => $paged
	));
Заметки к вопросу:
kolshix 8 месяцев назад

старая ветка

Почему-то не дошло mosking вот человек пророфлил mosking
'orderby' => 'pax_scale' , тут таксу прописать , но у меня не завелось

query_posts(array(
					'cat'            => $cat_id,    
						'order'          => 'ASC', // сортировка от первого до последнего 1 2 3     
						'meta_key'       => $meta_key,
						'orderby'        => 'pax_scale' , //     none, ID, author, title name(slug), type, date, rand
						'paged'          => $paged,
						'posts_per_page' => $show_ppp
					));

думал о таком, но пока нет сильной необходимости

add_action( 'publish_post', 'save_and_add_meta' );

function save_and_add_meta($post_id){

		//Temporarily remove the action to avoid an infinite loop
		remove_action( 'publish_post', 'save_and_add_meta' );

		// 2            
		$category_slug = get_the_terms($post_id, 'your_taxonomys_name')[0]->slug;

		//3
		add_post_meta($post_id, 'cat_slug', $category_slug);

		//Add the action back in.
		add_action( 'publish_post', 'save_and_add_meta' );
}
0
kolshix
год назад 779
  • 0
    Kama9751

    В ВП невозможно сортировать по таксономии, потому что, если подумать это не имеет смысла.

    Таксономии - это способы группировки постов. Таким образом, цель таксономии заключается в том, чтобы иметь термины в этой таксономии, которые общие для постов. Если в таксономии были термины, которые использовались только в одном сообщении каждый, то это сделало бы таксономию бесполезной. В тоже время если термины общие (как и должны быть), то сортировка не имеет смысла.

    Но тем не менее, ты можешь сортировать по таксономии, создав свой хук и изменив итоговый SQL-запрос WP_Query. Сюда глянь, оно вроде по теме: http://scribu.net/wordpress/sortable-taxonomy-columns.html

    Замечу, если тебе приходится так подходить к решению вопроса, то это означает что структура данных неправильно спроектирована. "Термины" в таксономии не являются фактическими "данными". Они просто являются метками для группировки постов.

    Такая группировка - это цель таксономий. Тут больше подходит post meta. Потому что post meta использует ключи и значения для хранения информации. Таксономии на самом деле хранят только ключи, а их значения - это сообщения, сгруппированные вместе.

    Возможно тебе стоит как-то пересмотреть подход, в будущем более правильная логика упростит поддержку кода. Можно конечно и так сделать, но по-моему так ты просто усложняешь поддержку кода, используя таксономии не по назначению.

    kolshix год назад

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

    Сортировка иногда идет по номерам, иногда по названию, а как в этом случае нужно отсортировать посты сначала горизонтальные потом вертикальные.

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

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация