Получить значение произвольного поля для таксономии
У меня есть произвольное поле my_cf
для Таксономии/Термина. Как я могу получить и вывести значение произвольного поля для таксономии/термина?
Я пробовал использовать:
$variable = get_field('my_cf', 'basic');
echo $variable;
где basic - название моей таксономии. Но это не работает.
Есть предложения?
Я не могу объяснить это лучше, чем страница документации ACF, которую я разместил в комментариях:
Все API-функции могут использоваться с термином таксономии, однако требуется второй параметр для указания ID термина. Это аналогично передаче post_id для указания конкретного объекта записи.
Необходимый $post_id — это строка, содержащая название таксономии + ID термина в следующем формате: $TaxonomyName_$TermID
Таким образом, если ваше произвольное поле называется my_cf
, название вашей таксономии — basic
(не название термина), а ID термина в вашей таксономии — 42, то вам нужно:
$variable = get_field( 'my_cf', 'basic_42' );

ок, мой url: edit-tags.php?taxonomy=basic&post_type=products как я могу получить id таксономии? в basic custom field - my_cf, '$variable = get_field( 'my_cf', 'basic_42' ); - не работает

Когда я отвечал на этот вопрос, я не заметил, что вы используете плагин для создания пользовательских терминов. Возможно, лучше придерживаться того, как работает ACF. Если это по какой-то причине не работает, вы можете получить id термина с помощью get_term_by(). Документация: http://codex.wordpress.org/Function_Reference/get_term_by

Я использую CMB2 для настройки пользовательских полей, и логика во многих случаях не сильно отличается от ACF. Для моего конкретного случая я создал очень простую, но гибкую функцию, чтобы выполнить несколько проверок для таксономии перед отображением значения пользовательского поля.
Предположим, что вы создали пользовательское поле с именем my_cf
для, скажем, таксономии с именем basic, как в вашем примере. Следующая функция может помочь ответить на ваш вопрос и, возможно, расширить использование вашего пользовательского поля.
function get_taxonomy_terms_custom_fields( $taxonomy = '' ) {
global $post;
$terms = get_the_terms( $post->ID, $taxonomy );
// Проверяем, есть ли таксономия и является ли она валидной. Если нет, возвращаем false
if ( !$taxonomy )
return false;
// Санитизируем ввод таксономии
$taxonomy = filter_var( $taxonomy, FILTER_SANITIZE_STRING );
// продолжаем играть безопасно
if ( !taxonomy_exists( $taxonomy ) )
return false;
foreach ( $terms as $term ) {
// Устанавливаем переменную для term_id таксономии
$tax_term_id = $term->term_id;
$my_field = get_term_meta( $tax_term_id, 'my_cf', true );
// Убеждаемся, что у нас нет объекта WP_Error, не совсем необходимо, но лучше перестраховаться
if ( is_wp_error( $term ) )
continue;
// экранируем возвращаемое значение // esc_html(), esc_url(), esc_attr()
return esc_html($my_field);
}
}
Просто используйте <?php get_taxonomy_terms_custom_fields ('basic'); ?>
, заменив basic
на имя вашей таксономии.
Функция get_taxonomy_terms_custom_fields ()
проверит указанную таксономию и вроде как пройдётся по всем категориям, назначенным записи, типу записи, а затем вернёт значение пользовательского поля, если оно есть, избегая ошибок, если его нет. Её также можно расширить для проверки поля, которое возвращает array(), например, повторяемое поле.
Надеюсь, это поможет - Удачи!
