Использование идентификатора пользовательского таксономического термина для настраиваемого поля

Я создал собственный файл шаблона single-sermons.php для своего пользовательского типа сообщения проповеди и хочу включить в это сообщение настраиваемое поле для изображения проповедника проповедника.

Пользовательский идентификатор таксономии: sermon_speaker
Идентификатор настраиваемого поля: sermon_speaker_image

Мне удалось получить идентификатор термина таксономии для отображения в виде числа на странице, используя:

<?php

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

?>

Я пытаюсь понять, как использовать этот термин ID в коде ниже, где я в настоящее время. $ term_id, чтобы добавить идентификатор термина в конец URL-адреса фонового изображения.

<div class="sermon-speaker-image" style="background-image: url('<?php the_field( 'sermon_speaker_image', 'sermon_speaker_' . $term_id ); ?>');"></div>

Обновить: Следующий код является рабочим решением, основанным на ответе ниже:

<?php
global $post;

// load all 'sermon_speaker' terms for the post
$terms = get_the_terms($post->ID, 'sermon_speaker');

// we will use the first term to load ACF data from
if( !empty($terms) )
{
$term = array_pop($terms);

$custom_field = get_field('sermon_speaker_image', $term );

}
?>
<div class="sermon-speaker-image" style="background-image: url('<?php echo $custom_field; ?>');"></div>

5

Решение

Попробуйте этот код, это должно работать для вас

 global $post;

// load all 'sermon_speaker' terms for the post

$terms = get_the_terms($post->ID, 'sermon_speaker');

// we will use the first term to load ACF data from
if( !empty($terms) )
{
$term = array_pop($terms);

$custom_field = get_field('sermon_speaker_image', $term );

// do something with $custom_field
//i.e. echo $custom_field;
//i.e. echo "<img src='$custom_field'/>";
?>
<div class="sermon-speaker-image" style="background-image: url('<?php echo $custom_field; ?>');"></div>
<?
}

Вы можете прочитать больше на официальная документация расширенных пользовательских полей

2

Другие решения

Две мысли:

Первый

<div class="sermon-speaker-image" style="background-image: url('<?php the_field( 'sermon_speaker_image', 'sermon_speaker_' ?> . <?php echo $term_id ?> ); ?>');"></div>

Я использую эхо, чтобы отобразить его.

Второй

Это мой любимый и действительно рабочий.
Вы можете использовать jQuery, чтобы установить атрибут background-image, где вы хотите, и добавить значение из пользовательского типа.

$(document).ready(function() {
var new_link = $(".sermon-speaker-image").attr("background-image");
new_link = x.append('<?php echo $term_id; ?>','');

jQuery(".sermon-speaker-image").attr("background-image", new_link);
}

Конечно, вы должны проверить, что изображение (url = url + id) действительно существует.

0