Tutoriales de WordPress de Confianza, cuando más los necesitas.
Guía para Principiantes de WordPress
Copa WPB
25 Millones+
Sitios web que usan nuestros plugins
16+
Años de experiencia en WordPress
3000+
Tutoriales de WordPress de expertos

Cómo mostrar una publicación de WordPress solo si tiene un campo personalizado específico

Sabes cuándo necesitas mostrar ciertas publicaciones de WordPress basándote en campos personalizados. Nosotros hemos pasado por eso.

Cuando empezamos con WordPress, ver cualquier fragmento de código nos intimidaba, especialmente cuando lo único que queríamos era mostrar publicaciones con información específica.

Pero aquí están las buenas noticias: después de ayudar a miles de principiantes de WordPress, hemos descubierto que incluso algo que suena técnico, como el filtrado por campos personalizados, no tiene por qué dar miedo.

De hecho, te guiaremos a través de un método de código sencillo para hacerlo.

Esta solución funciona perfectamente tanto si publicas entradas de blog regulares como tipos de publicaciones personalizadas basadas en criterios específicos.

Cómo mostrar una publicación de WordPress solo si tiene un campo personalizado específico

📌 Nota rápida: Este tutorial es para mostrar publicaciones de WordPress si tienen un valor introducido en un campo personalizado específico.

Si quieres mostrar campos personalizados en el front-end de una publicación de WordPress, entonces puedes leer nuestra guía sobre cómo mostrar campos personalizados en temas de WordPress.

¿Por qué mostrar publicaciones de WordPress con un campo personalizado específico?

Cuando creas una publicación en tu sitio web de WordPress, puedes usar campos personalizados para añadir metadatos adicionales a la publicación.

Los metadatos son información adicional que puedes añadir a una publicación. Por ejemplo, si estuvieras escribiendo una reseña de un libro, podrías añadir campos personalizados para 'Nombre del autor' o 'Calificación con estrellas'.

Los campos personalizados son un concepto avanzado de WordPress, y hay muchas maneras de agregar campos personalizados en WordPress. Encontrarás muchos consejos útiles sobre cómo usar y mostrar campos personalizados en nuestra publicación, Campos personalizados de WordPress 101: Consejos, trucos y hacks.

Puedes agregar metadatos a una publicación usando campos personalizados

Uno de nuestros usuarios nos preguntó cómo mostrar publicaciones de WordPress solo si estaba presente un campo personalizado específico. Esto puede ser útil si buscas crear una página personalizada que liste todas las publicaciones que contienen un campo y/o valor personalizado específico.

Después de responder con la solución, pensamos que sería mejor compartirla con todos para que la comunidad más grande de WordPress.org también se beneficie de ella.

Edición de los archivos de tu tema de WordPress: Qué tener en cuenta

Para poder seguir este tutorial correctamente, aquí hay algunas cosas que debes tener en cuenta:

  1. Este tutorial implica editar los archivos de tu tema de WordPress con código, por lo que no es el más adecuado para principiantes absolutos. Si eres nuevo en esto, entonces necesitarás leer nuestra guía sobre cómo copiar y pegar código en WordPress.
  2. Recomendamos respaldar tu sitio web y/o usar un entorno de staging para que tu sitio en vivo no se vea afectado cuando ocurra un error. Esto se debe a que agregarás código a los archivos de tu tema, lo cual puede ser riesgoso.
  3. Recomendamos entender cómo funciona la jerarquía de plantillas de WordPress para que sepas dónde agregar el código más tarde.
  4. También necesitarás familiarizarte con cómo funcionan los loops de WordPress porque llamaremos a estos parámetros en una consulta de WordPress.

Además, ten en cuenta que este tutorial solo funciona con temas de WordPress clásicos, ya que los temas de bloques tienen un conjunto diferente de archivos de tema.

Dicho esto, veamos cómo mostrar una publicación de WordPress solo si tiene un campo personalizado específico.

Cómo filtrar tus publicaciones según campos personalizados específicos

Antes de mostrarte el código que necesitas usar, debes saber a qué archivo de tema necesitas agregarlo. Lo más probable es que sea una plantilla de página, como index.php, archive.php o page.php.

Digamos que quieres agregarlo al archivo index.php del tema Twenty Twenty-One. Así es como se ve la parte del bucle de WordPress de ese archivo en este momento:

<?php
if ( have_posts() ) {

// Load posts loop.
	while ( have_posts() ) {
		the_post();

		get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
	}

	// Previous/next page navigation.
	twenty_twenty_one_the_posts_navigation();

} else {

	// If no content, include the "No posts found" template.
	get_template_part( 'template-parts/content/content-none' );

}

get_footer();

Este código utiliza el bucle predeterminado de WordPress (have_posts() y the_post()) para mostrar las publicaciones. Este método es adecuado para la mayoría de los temas estándar de WordPress y se utiliza para mostrar publicaciones sin ningún filtrado o ordenación personalizada.

Ahora, digamos que usas el campo personalizado 'color' como en el ejemplo anterior. Necesitarás reemplazar todo ese código con el fragmento a continuación:

<?php
// The Query to show a specific Custom Field
$the_query = new WP_Query('meta_key=color');

// Load posts loop.
if ( $the_query->have_posts() ) {
    while ( $the_query->have_posts() ) {
        $the_query->the_post();

        get_template_part( 'template-parts/content/content', get_theme_mod( 'display_excerpt_or_full_post', 'excerpt' ) );
    }

    // Previous/next page navigation.
    twenty_twenty_one_the_posts_navigation();

} else {

    // If no content, include the "No posts found" template.
    get_template_part( 'template-parts/content/content-none' );

}

// Reset Post Data
wp_reset_postdata();

get_footer();

En este nuevo código, introdujimos una consulta personalizada para obtener las publicaciones que tienen un campo personalizado específico (en este caso, cualquier publicación con el campo personalizado 'color').

Luego, utiliza un bucle personalizado (if ($the_query->have_posts())) para iterar sobre las publicaciones obtenidas por esta consulta personalizada, mostrando el contenido de cada publicación de la misma manera que el primer fragmento.

También agregamos la función wp_reset_postdata() para asegurar que WordPress regrese a mostrar todas las publicaciones correctamente después de la consulta personalizada. Esto garantiza que el sitio funcione sin problemas y muestre el contenido correcto a los usuarios.

Ahora, ¿qué pasa si quieres encontrar publicaciones donde el campo personalizado 'color' tiene un valor específico, como 'blue'? Para hacer eso, solo necesitas agregar un parámetro 'meta_value' a tu consulta.

Tu código de consulta actualizado se verá así:

$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue' ) );

💡Consejo Pro: Puedes llevar tu filtrado aún más lejos con el parámetro meta_compare. Esto te permite encontrar publicaciones que no coinciden con un valor.

Por ejemplo, para mostrar todas las publicaciones donde el color no es 'blue', tu consulta se vería así:

$the_query = new WP_Query( array( 'meta_key' => 'color', 'meta_value' => 'blue', 'meta_compare' => '!=' ) );

El != le dice a WordPress que encuentre todas las publicaciones donde el campo 'color' existe pero no es igual a 'blue'.

Hay muchos otros operadores de comparación que puedes usar, los cuales puedes encontrar en la documentación oficial para desarrolladores de WordPress.

Una vez que hayas guardado el código en el archivo PHP de la plantilla de página, puedes revisar tu sitio de WordPress en el front-end para ver tu código en acción.

Preguntas Frecuentes Sobre Mostrar una Publicación Si Tiene un Campo Personalizado Específico

Aquí hay algunas preguntas que nuestros lectores hacen frecuentemente sobre cómo mostrar una publicación si solo tiene un campo personalizado específico:

¿Hay alguna forma de hacer esto sin editar los archivos del tema?

Sí, y es el método que recomendamos para la mayoría de los usuarios. Un plugin como WPCode te permite agregar de forma segura fragmentos de PHP personalizados como este sin tocar directamente los archivos de tu tema.

Esto protege tu sitio de errores y asegura que tus personalizaciones no se pierdan cuando actualices tu tema.

¿Puedo filtrar publicaciones por múltiples campos personalizados?

Puedes. La función WP_Query es muy potente y acepta argumentos más complejos. Usarías un parámetro 'meta_query', que te permite construir un array de condiciones para que coincidan múltiples campos personalizados a la vez.

¿Este método funciona con temas de bloques?

Este tutorial específico se enfoca en temas clásicos editando archivos como index.php o archive.php. Los temas de bloques usan el Editor de Sitio y no dependen de estos archivos.

Para lograr un resultado similar en un tema de bloques, usarías el bloque Bucle de Consulta y sus opciones de filtrado integradas, que no requieren código personalizado.

¿Cuál es la diferencia entre 'meta_key' y 'meta_value'?

Piensa en 'meta_key' como el nombre de la etiqueta, como 'Color' o 'Estado'. El 'meta_value' son los datos reales ingresados en ese campo, como 'Azul' o 'Publicado'.

Usar la clave encuentra cualquier publicación con ese campo personalizado, mientras que usar el valor encuentra cualquier publicación con esa información específica.

Aprende más formas de personalizar tu sitio de WordPress

Aquí hay más formas en que puedes personalizar tus páginas de WordPress:

Esperamos que este tutorial te haya ayudado a aprender cómo mostrar una publicación de WordPress solo si tiene un campo personalizado específico. También te puede interesar consultar nuestra guía completa sobre cómo editar un sitio web de WordPress y nuestras selecciones expertas de los mejores plugins de Figma para WordPress.

Si te gustó este artículo, suscríbete a nuestro canal de YouTube para obtener tutoriales en video de WordPress. También puedes encontrarnos en Twitter y Facebook.

Descargo de responsabilidad: Nuestro contenido es compatible con el lector. Esto significa que si haces clic en algunos de nuestros enlaces, podemos ganar una comisión. Consulta cómo se financia WPBeginner, por qué es importante y cómo puedes apoyarnos. Aquí está nuestro proceso editorial.

El Kit de herramientas definitivo para WordPress

Obtén acceso GRATUITO a nuestro kit de herramientas: ¡una colección de productos y recursos relacionados con WordPress que todo profesional debería tener!

Interacciones del lector

11 CommentsLeave a Reply

  1. Tengo una pregunta, señor, si quiero mostrar una sola publicación y campos personalizados, ¿qué debo hacer?.
    No quiero mostrar la publicación con campos personalizados específicos. Quiero mostrar todos los campos personalizados de la publicación.

  2. Hola, gracias por el útil tutorial. Tengo una pregunta, en un sitio web de WordPress establecí un valor meta llamado "meta_country" y luego establecí cada publicación con el país del artículo, como "us", "uk", "fr"... Ahora estoy intentando agregar en algún lugar de la página principal del blog un enlace que muestre una lista de todas las publicaciones con un país específico y una etiqueta específica. Por ejemplo, todas las publicaciones de "UK" etiquetadas como "APPLE".
    No entiendo cómo hacer eso, ¿alguien podría ayudarme?

  3. No pude generar ningún resultado a menos que incluyera el parámetro “post_type” en la consulta.

    es decir, $the_query = new WP_Query(‘post_type=page&meta_key=color’);

Deja una respuesta

Gracias por elegir dejar un comentario. Ten en cuenta que todos los comentarios son moderados de acuerdo con nuestra política de comentarios, y tu dirección de correo electrónico NO será publicada. Por favor, NO uses palabras clave en el campo del nombre. Tengamos una conversación personal y significativa.