Intereting Posts
wp_login не работает из-за сохраненного паролем браузера Customizer выбора цвета и лучшая практика для обновления css скрыть что-то на одной странице, если у текущего автора есть только одно сообщение Фиксирование ожидающих сообщений на дисплее Сортировка пользовательской таксономии вызывает ошибку меню Отсутствует аргумент для функции Скрытие индикаторов карусели, если есть только одна запись Подписчики на сообщения Обновленные данные не попадают в rest-api Изменить виджет, отображающий сообщения из категорий в теги Пользовательский запрос: запрос по пользовательским метаданным Отфильтровать функцию подключения Почему этот запрос не показывает результат на домашней странице wordpress? разрешить предварительный просмотр вне папки WordPress (предварительный просмотр Outsourcing WP) Как закодировать пользовательские поля в шаблоне страницы?

Получите термин id, относящийся к пользовательской таксономии, на пользовательской странице шаблона one-post-type.php

У меня есть специальная пост-типовая «проповедь» с прикрепленным к ней пользовательским таксономии «спикер». Я хотел назначить настраиваемые метазначения для таксономии динамиков, поэтому я использую метаклассу таксономии от Rilwis:

http://www.deluxeblogtips.com/p/taxonomy-meta-script-for-wordpress.html

Я использовал класс для добавления метабокса с идентификатором «bio».

Согласно его указаниям, мне нужно использовать следующий код, чтобы вывести значение «био» мета в мой шаблон:

$meta = get_option('meta_id'); if (empty($meta)) $meta = array(); if (!is_array($meta)) $meta = (array) $meta; $meta = isset($meta['term_id']) ? $meta['term_id'] : array(); $value = $meta['field_id']; echo $value; // if you want to show 

Вот что для меня закончилось:

 $taxmeta = get_option('speaker_meta'); if (empty($taxmeta)) $taxmeta = array(); if (!is_array($taxmeta)) $taxmeta = (array) $meta; $taxmeta = isset($taxmeta['221']) ? $taxmeta['221'] : array(); $value = $taxmeta['bio']; echo $value; // if you want to show 

Вопрос

В приведенном выше коде вы видите номер «221». Это фактический термин-идентификатор таксономии, назначенной на эту должность (жестко запрограммированный для ее проверки). Я не понимаю, как динамически заполнять term_id.

Я не могу запросить URL-адрес, потому что это просто используется на пользовательской одностраничной странице, так что термин-идентификатор там недоступен.

Как мне изменить этот фрагмент, чтобы указать правильный термин-id, принадлежащий к «проповеди», на которую я смотрю?

благодаря

редактировать

Эта функция возвращает мне правильный term_id:

 $terms = wp_get_post_terms($post->ID, "speaker"); foreach ($terms as $termid) { echo $termid->term_id; } 

Использование этого фрагмента в моем цикле на моей странице примера возвращает значение «221». Если я вручную помещаю 221 вместо term_id в функцию, тогда он действительно отлично подходит для выражения meta 'bio'.

Где я все еще застрял

Теперь, когда у меня есть этот небольшой фрагмент, над которым работает, как мне получить его для вывода в term_id, чтобы основная функция работала?

 $meta = isset($meta['term_id']) ? $meta['term_id'] : array(); 

еще раз спасибо

вы можете использовать get_the_terms() чтобы получить условия этого сообщения в определенной таксономии:

 $terms = get_the_terms( $post->ID , 'speaker' ); //change speaker to whatever you call your taxonomy //then you can use just the first term $term_id = $terms[0]->term_id; 

и теперь у вас есть термин id внутри $term_id .

Обновить

Когда у вас есть term_id, вы можете использовать его в своей функции следующим образом:

 $term_id = $termid->term_id; $meta = isset($meta[$term_id]) ? $meta[$term_id] : array(); 

Вы также можете сделать это с wp_get_post_terms() функции wp_get_post_terms() :

 $terms = wp_get_post_terms($post->ID, "speaker"); foreach ($terms as $termid) { echo $termid->term_id; } 

он отобразит все термины таксономии для текущего поста.

ПРИМЕЧАНИЕ: он должен находиться внутри петли

Если вы находитесь на странице archive.php и нуждаетесь в текущем члене:

 var_dump($wp_query->queried_object); var_dump($wp_query->queried_object->name); var_dump($wp_query->queried_object->term_id);