get_post_meta возвращает только Array
Вот что я пытаюсь сделать:
Я пытаюсь сделать так, чтобы одна страница в WordPress получала данные из произвольных полей других страниц. Таким образом, когда пользователь создает страницу и использует определенное произвольное поле (в данном случае multiedit_Info), оно будет отображаться на "целевой" странице.
Вот код, с которым я работаю:
<?php $item = get_post_meta($post->ID, 'multiedit_Info', false); ?>
<div id="info-col">
<?php echo $item; ?>
</div>
В настоящее время я использую плагин, который создает блоки контента с помощью произвольных полей. И я хочу сделать так, чтобы пользователь мог просто создать новую страницу с произвольными полями, и затем эти данные отображались в массиве на другой странице.
Не уверен, правильно ли я всё настроил или нет. Я использую это впервые, поэтому буду благодарен за любую помощь. Спасибо!

Когда вы устанавливаете третий параметр функции get_post_meta()
в значение false
, она возвращает массив всех значений, связанных с этим ключом. Установка этого параметра в true
возвращает единственное значение.
Таким образом, ваш код верен. Вы получите точно такой же результат, если сделаете что-то вроде этого:
$test = array( "1", "2", "3" );
echo $test; // выведет "Array"
Если вы хотите увидеть содержимое вашего массива, вам нужно использовать print_r()
:
$item = get_post_meta( $post->ID, 'multiedit_Info', false );
echo print_r( $item );
Если бы вы применили это к массиву $test
из моего предыдущего примера, вы бы увидели:
Array
(
[0] => "1"
[1] => "2"
[2] => "3"
)

Хорошо, если я изменю на это:
<?php $item = get_post_meta($post->ID, 'multiedit_Info', false); ?>
<div id="info-col">
<?php print_r( $item ); ?>
</div>
Выводится следующее:
Array ( [0] => )

OK, это означает, что у вас пустой массив. В этом мета-ключе для данного ID записи ничего не сохранено.

Значит, это будет работать для ВСЕХ пользовательских полей на страницах или только для этого одного? Я пытаюсь получить ВСЕ или ЛЮБЫЕ пользовательские поля с этой мета-информацией.

get_post_meta()
получает метаданные только для отдельного поста/страницы. Я не совсем понимаю, что вы пытаетесь сделать сейчас, и в вашем вопросе это не очень понятно. Не могли бы вы отредактировать свой вопрос, чтобы добавить некоторые уточнения? Не просто перечисляйте, что вы пробовали, а объясните подробно, чего вы пытаетесь достичь.

Отлично, я нашел решение, которое искал, здесь:
получение всех значений для пользовательского ключа поля (перекрестная публикация).
Используя функцию из указанного выше поста и затем вызывая информацию в моем шаблоне с помощью этого кода:
<?php $my_info = get_meta_values( 'multiedit_Info', 'page' ); ?>
и затем выводя их в цикле foreach:
<?php foreach ( $my_var as $item) :
echo "<p>$item</p>";
endforeach; ?>
Я собрал все пользовательские поля со всех страниц, которые их используют, и вывел их на одной странице.
Спасибо за помощь!
