Я как раз на сайте использую плагин Advanced Custom Fields, только он у меня для других целей немного используется… и про функцию «Взаимоотношение», что в указанном вами сообщении, ничего не могу найти. Возможно, что функционал плагина изменился?
Тип поля -> отношение -> объект записи.
В общем нужно создать 2 типа записей — фильмы и люди.
Затем для фильмов нужно создать 2 поля — актеры и режиссеры, в плагине выбираете Тип поля -> отношение -> объект записи
Возвращаемый формат -> ID
А разделить людей на актеры и режиссеры можно с помощь дополнительной таксономии типа меток. Т.е. одному человеку можно присвоить и актер и режиссер.
вот у меня в базе более 1000 актёров, которые находятся в таксономии «Актёры»
а если просто создать 2 записи «актёры» и «режиссёры», а затем указывать в «тип поля» > «отношение» > «таксономия» ту таксономию «Актёры», что у меня уже существует, при попытке вывода я получаю вместо меток сообщение «Array»
-
Ответ изменён 5 лет, 4 месяца назад пользователем there4.
При выборе в Тип поля -> отношение -> объект записи Возвращаемый формат -> ID
тоже вылазит array
Данные поля с именем actors я вывожу следующим образом:
<?php $actors = get_field('actors');?>
<?php echo '<h2>Актёры</h2>'.$actors; ?>
И на выходе получаю Array
Посмотрите что там.
<?php
$actors = get_field('actors');
print_r($actors);
?>
Если массив id записей, то нужно еще по ним получить название связных записей
я через <?php var_dump($actors); ?>
уже посмотрел
выходит что-то похожее на массив данных:
array(2) { [0]=> object(WP_Term)#10512 (11) { ["term_id"]=> int(4035) ["name"]=> string(27)...
не могу понять, как вывести теперь данные из массива
пробовал как здесь в примерах, на выходе пусто получается
Модератор
Юрій
(@yube)
$tmp = array();
foreach ($actors as $actor ) {
$tmp[] = $actor->name;
}
echo implode(", ", $tmp);
unset($tmp);
foreach($actors as $value)
{
echo '<li>' . $value->name . '</li>';
}
-
Ответ изменён 5 лет, 4 месяца назад пользователем qwert555.
Круто, спасибо!
вот эта часть особенно понравилась: unset($tmp);
Осталось ссылку теперь вернуть на метку, чтобы вывести что-то типа такого:
echo '<a href="' . здесьСсылка . '">' . $value->name . '</a>';
ок, со ссылкой разобрался, спасибо:
foreach ($actors as $actor ) {
$lnk = '<a href="'.get_term_link((int)$actor->term_id, $actor->taxonomy).'">'.$actor->name.'</a>';
$tmp[] = $lnk;}
теперь такая ситуация:
термин во втором поле создаётся, но запись к нему не привязывается.
Если же в настройках поля ACF выставить Сохранение терминов >> Связать выбранные термины с записью, то при сохранении записи термы из второго поля записываются в первое, и получаются 2 поля с одинаковыми значениями.