Imprimir tus campos personalizados fuera de un artículo

Los Campos Personalizados

Vamos a echar hoy un vistazo introductorio a los campos personalizados de WordPress, esto es, aquellas cajas de edición extras que en el Editor de WordPress podemos llenar de información, más allá del artículo que hayamos escrito, y que pueden ser útiles cuando la mayoría de nuestros posts son marcados con fragmentos de información adicionales.

Por ejemplo, si escribimos sobre música, en vez de llenar el cuerpo del post con los detalles del álbum sobre el que hemos escrito, podremos usar los campos personalizados y sistematizar la clasificación extra.

Título del Album :
Año :
Discográfica :
Género :
Puntuación : (5 estrellas, etc).

Cada uno de estos elementos sería un campo personalizado (“nombre”) creado por nosotros y llenado con texto o imágenes (“valor”).

El uso pues de los campos personalizados cobra su interés cuando hay que sistematizar datos añadidos al cuerpo de un post : librerías, reseñas de cine, links recomendados …

Los campos personalizados sin embargo, permite aplicaciones más creativas, en el caso de que, en la ocurrencia, queramos dos, tres o cuatro Extractos y no sólo uno, o querramos rodear el artículo principal con párrafos extra, o si cada uno de nuestros artículos tuviera un botón al que dotar de un link (una url hacia la página de un producto por ejemplo).

Imprimir los campos personalizados

No nos bastará con haberlos creado y rellenado, que tendremos que abrir nuestro single.php (o, en su defecto, index.php, a los que encontraremos en el directorio de nuestro tema), y añadir, dentro del Loop, este código, que nos los traerá de la base de datos :

<?php echo get_post_meta($post->ID, "NOMBREDELCAMPO", true); ?>

En el ejemplo de las reseñas de discos, habría que hacer algo así :

<h2>Título del Album</h2>
<p>
     <?php echo get_post_meta($post->ID, "Album", true); ?>
</p>

Es decir, escribir también en el template el título de la información que vamos a mostrar.

Recordemos que si nos interesa almacenar y recojer imágenes en los campos personalizados tendremos que escribir su ubicación en HTML, o sino simplemente nos saldría impresa su URL !

<img src="http://www.camino.com/ala/imagen.png" alt="">

Y si los requiero fuera del Loop ?

Nos podemos encontrar entonces con que quisiéramos usar los campos personalizados en nuestra barra lateral, o en el header de cada uno de nuestros artículos.

Con este pequeño snippet de código conseguiremos que nuestra base de datos nos proporcione tal o cual campo personalizado en cualquier lugar de nuestro template :

<?php
global $wp_query;
$postid = $wp_query->post->ID;
echo get_post_meta($postid, 'NOMBREDELCAMPO', true);
?>

Aquí, tendréis que sustituir NOMBREDELCAMPO por tal o cual nombre de campo que hayáis creado.

Esperamos vuestros comentarios.

Comentarios
  1. Danisoft

    Gracias por el articulo, me ha venido estupendamente para un tema que tenia pendiente.

    Un saludo

    Escrito el14/10/2009
  2. @Danisoft, gracias, me alegra que te haya sido de utilidad !

    Escrito el14/10/2009
  3. Richard

    Muy bueno, lo estaba buscando amigo…

    Escrito el25/10/2009
  4. Richard

    Hola de nuevo quiero saber si me pueden ayudar con esta duda. Supongamos que tengo un archivo llamado autor.php este archivo tiene toda la información que necesito mostrar. en el Head de mi Post Como puedo insertar este archivo con un campo personalizado?

    Escrito el25/10/2009
  5. Ignacio

    @Richard, si lo que quieres es que en cada artículo salga ‘impreso’ su autor antes del título por ejemplo (como aquí en TodoWP), aquí encontrarás la información : http://codex.wordpress.org/Author_Templates . Tendrás que copiar/pegar en tu single.php o index.php los ‘template tags’ que ahí se listan, y que linkarán a archivos de autor.

    Si autor.php fuera otro tipo de template, lo puedes incluir en single.php o index.php con un ‘include’. Aquí está la info : http://codex.wordpress.org/Include_Tags

    Pero piensa que los campos personalizados tienen su lógica aparte : son básicamente cachos de texto que, por cada artículo, añades con cierta comodidad en la página de la que se trate.

    Escrito el25/10/2009
  6. karen

    muchisimas gracias

    Escrito el01/11/2009
  7. Cristian

    Saludos
    No importa, sea en el sidebar, index, home se puede insetar un campo personalizado de esta manera. ID, “TACTIVIDAD PARA EL CAMPO”, true); ?> bueno, porlomenos en mis páginas funcionan perfectamente.
    saludos…

    Escrito el07/11/2009
  8. Miguel

    Hola, interesante post. Tengo una pregunta, ¿es posible mostar un campo personalizado que pertenezca a otro post distinto mediante la ULR o el permalink?

    Me sería de gran ayuda.

    Un saludo

    Escrito el16/02/2010
  9. Hola Miguel,

    Si eventualmente quieres mostrar campos de un post en particular, siempre puedes ir a la Administración y mirar cuál es su ID numérica (sobrevolando con el cursor su link para ser editados), y ponerla donde en el código tenemos $post->ID.

    Para hacerlo programáticamente, lo tendría que mirar más, espero que esto ayude.

    Escrito el22/02/2010
  10. Hola,
    ¿Alguien sabe como hacer para imprimir estos campos en los post que se muestran en el index, pero solo si no se ha indicado una etiqueta [more]?. Quiero que me salgan al final del contenido de cada post, pero cuando hago un salto, no.

    Escrito el29/06/2010
  11. Shara

    Saludos. Gracias por el artículo. en mi caso hize un formulario , los campos que solicito en ese formulario son para un post type. dicho form tiene un template (form.php), después necesito mostrar un preview de los campos anteriormente capturados y los envío a otro template(preview.php) y de nuevo necesito obtener los datos desde la (BD), que capture en el formulario e intentado colocar lo que explico en este tutorial. global $wp_query;… pero mi pagina se queda en blanco. no muestra nada. Alguién podria orientarme es correcto si yo intento sacar los datos asi?

    Escrito el24/10/2012

DEJA TU COMENTARIO