Cómo mostrar el valor de campos personalizados en la página

13 sept 2013, 19:14:43
Vistas: 149K
Votos: 27

Tengo un tipo de entrada personalizada llamada 'software', que contiene varios campos personalizados como subtítulo, precio, capturas de pantalla, enlace de descarga, etc. Creé una función para permitir el uso de la ventana de edición tinyMCE para algunos de estos campos personalizados. He estado tratando de mostrar estos campos en la página pero sin éxito.

El método que estoy usando es este:

<h1><?php the_title();?></h1>
<h3><?php echo get_post_meta(get_the_ID(), 'subtitle', TRUE); ?></h3>

Aquí hay un enlace a la página.

Debajo del <hr/> en la página hay una lista de todos los meta creados. Por alguna extraña razón, el ÚNICO de los campos que se mostrará es 'price'.

¿Alguien tiene idea de qué me estoy perdiendo?

2
Comentarios

efectivamente es la función get_post_meta(), y si la estás llamando dentro del bucle, debería funcionar... A menos que no estés usando el nombre correcto del campo personalizado. A menudo vienen con un prefijo si se implementan mediante un plugin como meta-box. ¿Puedes publicar el código de cómo declaras tus campos personalizados? Una solución sería abrir la tabla wp_postmeta en PhpMyAdmin y buscar en la columna meta_key con LIKE %...% y especificar "subtitle" como valor de meta_key. Verás exactamente bajo qué nombre Wordpress está almacenando tu campo personalizado.

pixeline pixeline
13 sept 2013 19:37:39

Sé que esto es antiguo, pero uso este sql para obtener una lista de todos los campos meta en phpmyadmin: SELECT m.meta_key FROM wp_postmeta m GROUP BY m.meta_key

ssaltman ssaltman
10 nov 2015 17:31:26
Todas las respuestas a la pregunta 2
2
30

Bien, estás usando:

get_post_meta(get_the_ID(), 'subtitle', TRUE);

Entonces, le estás diciendo a WordPress que obtenga el valor meta del campo 'subtítulo' y que el valor devuelto esté en formato de cadena. Consulta la documentación de get_post_meta().

Para obtener todos los metadatos de una publicación deberías usar la función get_post_custom() en su lugar. Por ejemplo, si estás dentro del loop:

$custom = get_post_custom();
foreach($custom as $key => $value) {
     echo $key.': '.$value.'<br />';
}

Esto devolverá todos los metadatos de la publicación. Si quieres comprobar, por ejemplo, el campo meta "precio":

if(isset($custom['price'])) {
    echo 'Precio: '.$custom['price'][0];
}
13 sept 2013 19:41:29
Comentarios

Al último bloque de código le falta un )

Dan Hennion Dan Hennion
29 abr 2018 02:37:31

parece que $custom['price'] devuelve un array por lo que quizás necesites hacer $custom['price'][0]

wal wal
25 jun 2019 17:41:15
0

usa este código para resolver tu problema.

$key_name = get_post_custom_values($key = 'Key Name');
echo $key_name[0];
30 jul 2015 10:15:27