Получение таксономии текущей страницы в WordPress
У меня есть несколько страниц с пользовательской таксономией для каждой страницы, и я пытаюсь получить эту таксономию на странице. Мне нужно что-то вроде the_current_taxonomy()
аналогичное функции the_title()
. Это должно работать вне цикла, так как я буду использовать это в пользовательском WP_Query
сразу после.
Редактирование: Нашел решение, используя другой способ получения нужной информации. Спасибо за помощь, ребята.

Как и Rarst, я не совсем понимаю, что именно вы хотите вывести — таксономию или термины этой таксономии.
Таксономию можно вывести, например, создав файл шаблона с именем этой таксономии: taxonomy-name.php
Заголовок таксономии тогда будет выглядеть так:
<h1 class="page-title"><<?php $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); echo $term->name; ?></h1>
Термины внутри таксономии можно вывести с помощью облака тегов, см. http://codex.wordpress.org/Function_Reference/wp_tag_cloud (но это уже внутри цикла)

Цель — вывести термин из таксономии, назначенной текущей странице. Я попытался вывести термины внутри моей таксономии с помощью wp_tag_cloud(), и это сработало — я вижу нужный мне термин в середине. Затем я попробовал использовать функцию get_term_by(), которую вы мне дали, но без успеха.

Я также попытался изменить второй параметр на $post->ID, как показано в примере на странице кодекса http://codex.wordpress.org/Function_Reference/get_term_by#Examples, но тоже безрезультатно.

Я предполагаю, что taxonomy
остается тем же, и вам нужны terms
(термины) в этой таксономии, назначенные записи?
Базовой функцией для этого является wp_get_object_terms()
. Она требует ID объекта, поэтому если вы сбрасываете данные записи, вам нужно будет сохранить его заранее или извлечь из оригинального запроса (насколько я помню, это $wp_query->get_queried_object_id()
).

Да, как я писал в комментарии выше, мне нужно извлечь термин из таксономии, назначенной странице, чтобы затем использовать его как параметр в моем новом WP_Query(). Проблема функции wp_get_object_terms() в том, что она требует таксономию в качестве параметра.

@kevin Я предполагаю, если это ваша собственная пользовательская таксономия, вы знаете, что использовать в качестве параметра? Или вам нужны все термины во всех таксономиях, назначенных записи? Пожалуйста, уточните.

Да, это моя собственная, но я объяснил себя довольно плохо, я хотел найти термин, относящийся к определенной таксономии, которую я знаю, и который также связан со страницей. Извините за неясность.

@kevin Я всё ещё не понимаю... Пожалуйста, обнови свой вопрос, добавив конкретный пример того, что у тебя есть и что именно ты хочешь получить.

@kevin Если ты не против - не мог бы ты добавить решение, к которому ты пришёл, в качестве ответа, чтобы другие могли воспользоваться им в будущем.

@kevin, пожалуйста, в виде ответа :) Так работает система — вопрос и детали отдельно, конкурирующие ответы отдельно, даже если вы отвечаете на свой собственный вопрос. Так меньше путаницы, если кто-то предложит улучшенную версию кода и тому подобное.

Итак, мне нужно было извлечь термин из известной таксономии, связанной со страницей (например, так:
function register_prod_categoria() {
register_taxonomy(
'prod-categoria',
array( 'produtos', 'page' ),
(produtos — это пользовательский тип записи, просто для справки.)).
Я пробовал разные варианты, среди них этот: get_terms('prod-categoria','')
. Он работает, но возвращает мне всю информацию о таксономии prod-categoria, а это не то, что мне нужно.
Затем, как указано в кодексе, для функции get_terms()
доступны два (интересных для меня) параметра: child_of и parent. Это звучало идеально, поэтому я попробовал: get_terms('prod-categoria','child_of=marca');
, а также get_terms('prod-categoria','parent=marca')
, где marca — это родительский термин (из пользовательской таксономии prod-categoria), из которого я хотел извлечь дочерние термины. Оба варианта не дали результатов. Я также пробовал с названием Marca и слагом marca, но безрезультатно.
В итоге я остановился на таком решении: $tt = the_title('','',false);
. Я получаю заголовок страницы, чтобы использовать его в качестве параметра далее: $posts = posts_search ('produtos',array('prod-categoria'=>$tt,'prod-cols'=>'5-C-P-F-NF-P')); if($posts) { echo "<table class=\"table-marca\">"; foreach($posts as $post) { ... }
Кстати, функция posts_search() (я нашел её на http://wordpress.stackexchange.com или http://stackoverflow.com, если не ошибаюсь, точно не помню) позволяет выполнять запросы по нескольким таксономиям.
Я полностью согласен, что это далеко от идеала — зависимость от совпадения заголовка страницы с именем таксономии, но в моем случае это работает. Большое спасибо Rarst и Piet за попытки помочь.
