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

17

Tengo un tipo de publicación personalizado llamado 'software', que contiene varios campos personalizados como subtítulos, 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 de <hr/>en la página hay una lista de todos los meta creados. El ÚNICO de los campos que se mostrará es 'precio' por alguna extraña razón.

Alguien tiene alguna idea de lo que me estoy perdiendo?

dvmac01
fuente
de hecho, es la get_post_meta()función, y si lo está llamando dentro del bucle, debería funcionar ... A menos que no esté usando el nombre de campo personalizado correcto. A menudo vienen con un prefijo si se implementan a través de un complemento 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_keyLIKE% ...% y especificar "subtítulo" como valor de meta_key. Verá exactamente bajo qué nombre Wordpress está almacenando su campo personalizado.
pixeline
Sé que esto es antiguo, pero uso este sql para obtener una lista de todos los metacampos en phpmyadmin: SELECCIONE m.meta_key DESDE wp_postmeta m GROUP BY m.meta_key
ssaltman

Respuestas:

17

Bueno, estás usando:

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

Entonces, le está diciendo a Wordpress que obtenga el metavalor del campo 'subtítulo' y que el valor devuelto esté en formato de cadena. Ver get_post_meta () docu .

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

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

Esto devolverá todos los metadatos de la publicación. Si desea verificar, por ejemplo, el metacampo "precio":

if(isset($custom['price'])) {
    echo 'Price: '.$custom['price'][0];
}
cybmeta
fuente
Falta el último bloque de código a)
carburo20
1
parece que los $custom['price']devuelve una matriz por lo que puede que tenga que hacer$custom['price'][0]
Wal
3

usa este código para resolver tu problema.

$key_name = get_post_custom_values($key = 'Key Name');
echo $key_name[0];
Sharma prempal
fuente