get_post_meta solo devuelve Array
Esto es lo que estoy tratando de hacer:
Estoy intentando que una página en WordPress extraiga datos de campos personalizados de otras páginas. De modo que cuando un usuario crea una página y usa un campo personalizado específico (en este caso multiedit_Info), se mostrará en la página "objetivo".
Este es el código con el que estoy trabajando:
<?php $item = get_post_meta($post->ID, 'multiedit_Info', false); ?>
<div id="info-col">
<?php echo $item; ?>
</div>
Actualmente estoy usando un plugin que crea bloques de contenido utilizando campos personalizados. Y quiero configurarlo para que un usuario pueda simplemente crear una nueva página con los campos personalizados y luego mostrarlos en un array en otra página.
No estoy muy seguro si lo estoy configurando correctamente o no. Esta es la primera vez que lo uso, así que agradezco cualquier ayuda. ¡Gracias!

Cuando estableces el tercer parámetro de get_post_meta()
en false
, devuelve un array con todos los valores asociados a esa clave - si estableces este parámetro en true
, devuelve un único valor.
Así que tu código es correcto. Obtendrías exactamente lo mismo si hicieras algo como esto:
$test = array( "1", "2", "3" );
echo $test; // imprime "Array"
Si quieres ver el contenido de tu array, necesitarás usar print_r()
:
$item = get_post_meta( $post->ID, 'multiedit_Info', false );
echo print_r( $item );
Si hicieras esto con el array $test
de mi ejemplo anterior, verías:
Array
(
[0] => "1"
[1] => "2"
[2] => "3"
)

Ok, si lo cambio a esto:
<?php $item = get_post_meta($post->ID, 'multiedit_Info', false); ?>
<div id="info-col">
<?php print_r( $item ); ?>
</div>
Muestra esto:
Array ( [0] => )

OK, eso significa que tienes un array vacío. No hay nada almacenado en esa meta clave para ese ID de post.

Entonces, ¿esto funcionará para TODOS los campos personalizados dentro de las páginas o solo para ese? Estoy intentando obtener TODOS o CUALQUIERA de los campos personalizados con esa meta información.

get_post_meta()
solo obtiene metadatos para un único post/página. No estoy del todo seguro de lo que estás intentando lograr ahora, y no queda muy claro en tu pregunta. ¿Podrías editar tu pregunta para agregar alguna aclaración? No solo enumeres lo que has intentado, explica en detalle lo que estás tratando de conseguir.

Vale, encontré la solución que estaba buscando aquí:
obteniendo todos los valores para una clave de campo personalizado (cross-post).
Usando la función mencionada en el post anterior y luego recuperando la información en mi plantilla con esto:
<?php $my_info = get_meta_values( 'multiedit_Info', 'page' ); ?>
y luego mostrándolos en un foreach:
<?php foreach ( $my_var as $item) :
echo "<p>$item</p>";
endforeach; ?>
Recopilé todos los campos personalizados dentro de todas las páginas que los están utilizando y luego los mostré en una sola página.
¡Gracias por la ayuda!
