WP_Query: сортировка по числовому значению таксономии в WordPress
У меня есть такой запрос...
<?php
$press = new WP_Query(array(
'posts_per_page' => -1,
'post_type' => 'individual',
'post_status' => 'private'
));
if ($press->have_posts()) : while ($press->have_posts()) : $press->the_post();
?>
Но мои пользовательские типы записей используют пользовательскую таксономию с числовым значением термина.
Мой вопрос: есть ли возможность отсортировать этот запрос по значению термина?
Таксономия называется 'individual-group'
Любая помощь будет очень признательна. Спасибо.
Джош

Нет, в стандартном ядре WordPress такой возможности нет. @heathenJesus говорит о метаданных, а не о таксономиях. Правильное решение можно найти здесь: http://scribu.net/wordpress/sortable-taxonomy-columns.html.
Более подробное объяснение, почему это не встроено в ядро: Using wp_query is it possible to orderby taxonomy?

Вот сложный запрос, который я использовал для числовой сортировки и фильтрации запроса записей по слагам таксономии.
$my_post_type = 'some_post_type'; // Тип записи
$my_term_slug_to_be_used_for_Ordering = 'some_slug'; // Слаг таксономии для сортировки
$my_term_slug_to_be_used_for_Filtering = 'some_other_slug'; // Слаг таксономии для фильтрации
$querystr = "
SELECT
$wpdb->posts.*, $wpdb->term_relationships.object_id,
(SELECT wpt.slug
FROM $wpdb->term_taxonomy wptt
INNER JOIN $wpdb->term_relationships wptr ON wptt.term_taxonomy_id = wptr.term_taxonomy_id
INNER JOIN $wpdb->terms wpt ON wpt.term_id = wptt.term_id
WHERE
wptr.object_id = $wpdb->term_relationships.object_id AND
wptt.taxonomy = 'my_term_slug_to_be_used_for_Ordering') AS numeric_column_value
FROM $wpdb->term_taxonomy INNER JOIN $wpdb->term_relationships ON $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
INNER JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->term_relationships.object_id
INNER JOIN $wpdb->terms ON $wpdb->terms.term_id = $wpdb->term_taxonomy.term_id
WHERE
$wpdb->terms.slug = '{$my_term_slug_to_be_used_for_Filtering}' AND
$wpdb->posts.post_type = '$my_post_type' AND $wpdb->posts.post_status = 'publish'
ORDER BY numeric_column_value * 1 DESC"; // На самом деле это строка, поэтому * 1 для числового преобразования
$r = $wpdb->get_results($querystr, OBJECT);

Конечно, в параметре orderby
есть опция под названием meta_value_num
, которая должна делать именно то, что вам нужно.
http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters
$press = new WP_Query(array(
'posts_per_page' => -1,
'post_type' => 'individual',
'post_status' => 'private',
'orderby' => 'meta_value_num',
'meta_key' => 'individual-group'
));

... при условии, что meta_value действительно является числом. Здесь есть немало постов, где люди пытаются численно сортировать то, что не является числами :) @heathenJesus, не могли бы вы предоставить пример кода. Ответы только со ссылками не приветствуются.

Вопрос конкретно указывал "пользовательская таксономия с числовым значением термина."
Добавлена демонстрация использования 'meta_value_num'.

О, я понимаю. Это никоим образом не критика вашего ответа. Просто я, в целом, не доверяю людям, когда они говорят "числовой". Иногда это означает что-то вроде "$100" или "123-04". В разговорной речи это числа, но для программного обеспечения они не являются числовыми. И я работаю в офисе, полном таких людей, поэтому научился уточнять очень внимательно.

@heathenJesus то есть ты говоришь, что я могу запрашивать термины таксономии так же, как пользовательские поля? Я думал, что мета-ключи и зарегистрированные термины таксономии - это разные вещи... Например, можно ли запросить через твой метод термин категории, используя 'meta_key'? Я не думал, что так можно сделать...
