Если я понимаю вопрос, вы хотели бы получить таксономию и термины, применимые к продуктам, перечисленным на определенной странице, например страницу категории или таксономии.
Предположим, у вас есть массив идентификаторов продуктов $ product_id, например идентификаторы продуктов, отображаемых в данный момент. У вас должна быть возможность получить таксономию и термины, применимые к этим продуктам, следующим образом:
global $wpdb;
$ids = implode(',', $product_id);
$query = "SELECT x.taxonomy, t.name FROM wp_term_taxonomy AS x
JOIN wp_term AS t on t.term_id = x.term_id
JOIN wp_terms_relationships AS r on r.term_taxonomy_id = x.term_taxonomy_id
WHERE r.object_id IN ($ids)
GROUP BY x.taxonomy, t.name";
$taxonomies = $wpdb->get_results( $query );
В вышеприведенном:
SELECT x.taxonomy, t.name FROM wp_term_taxonomy AS x
это базовая таблица таксономий (имен) и term_ids их терминов.
JOIN wp_terms AS t on t.term_id = x.term_id
сопоставляет каждый из term_id из wp_term_taxonomy с его именем термина.
JOIN wp_term_relationships AS r on r.term_taxonomy_id = x.term_taxonomy_id
затем сопоставляет это с записями в wp_term_relationships, которые показывают, какие продукты (пользовательские идентификаторы сообщений) используют эти термины.
WHERE r.object_id IN ($ids)
ограничивает список только теми терминами, которые относятся к продуктам в вашем списке.
Поскольку в этом примере мы запрашиваем x.taxonomy и t.name,
GROUP BY x.taxonomy, t.name
следит за тем, чтобы у вас не было дубликатов. При необходимости вы можете получить дополнительные поля, изменив SELECT.
Итак, как только вы запустите get_results (), у вас должен быть массив объектов, каждый из которых имеет имя таксономии и имя термина. Общая схема будет такой:
+-----------+-------+
| taxonomy1 | term1 |
+-----------+-------+
| taxonomy1 | term2 |
+-----------+-------+
| taxonomy1 | term1 |
+-----------+-------+
| taxonomy2 | term1 |
+-----------+-------+
| taxonomy3 | term1 |
+-----------+-------+
...
Теперь вы можете использовать это, чтобы посетители могли выбрать дополнительное подмножество, например путем создания раскрывающегося списка терминов для каждой таксономии.
person
Community
schedule
04.03.2015