Trusted WordPress tutorials, when you need them most.
Beginner’s Guide to WordPress
Copa WPB
25 Million+
Websites using our plugins
16+
Years of WordPress experience
3000+
WordPress tutorials
by experts

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

Tal vez has añadido un campo personalizado a tus entradas de WordPress y quieres mostrar solo entradas con ese campo. O está intentando crear una página especial que enumere entradas con un valor de campo personalizado específico. No es el único.

Uno de nuestros lectores nos preguntó cómo hacerlo, y pensamos que sería útil compartir la respuesta con todos.

Los campos personalizados te permiten añadir información adicional a tus entradas y páginas. Son ideales para organizar y filtrar tu contenido. En este artículo, te mostraremos cómo mostrar entradas de WordPress solo si tienen un campo personalizado específico.

How to Display a WordPress Post Only if It Has a Specific Custom Field

Nota: Este tutorial es para mostrar entradas de WordPress si tienen un valor introducido en un campo personalizado específico. Si desea mostrar campos personalizados en la parte frontal de una entrada de WordPress, puede leer nuestra guía sobre cómo mostrar campos personalizados en temas de WordPress.

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

Cuando creas una entrada en tu sitio web WordPress, puedes utilizar campos personalizados para añadir metadatos adicionales a la entrada. Los metadatos son información acerca de la entrada, como el título, el autor y la fecha de publicación.

Los campos personalizados son un concepto avanzado de WordPress, y hay muchas maneras de añadir campos personalizados en WordPress. Encontrarás muchos consejos útiles sobre cómo usar y mostrar campos personalizados en nuestra entrada, WordPress Custom Fields 101: Tips, Tricks, and Hacks.

You Can Add Metadata to a Post Using Custom Fields

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

Después de responderle con la respuesta, pensamos que sería mejor compartirla con todos los demás para que la comunidad de WordPress.org en general también pueda beneficiarse de ella.

Edición de los archivos de temas de WordPress: Qué debe tener en cuenta

Para poder seguir este tutorial correctamente, aquí tienes 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. Si eres nuevo en esto, entonces necesitarás leer nuestra guía sobre cómo copiar y pegar código en WordPress.
  2. Le recomendamos que haga una copia de seguridad de su sitio web y/o utilice un entorno de prueba para que su sitio activo no se vea afectado cuando se produzca un error. Esto se debe a que estará añadiendo código a los archivos de su tema, lo que puede ser arriesgado.
  3. Le recomendamos que comprenda cómo funciona la jerarquía de plantillas de WordPress para saber dónde añadir el código más adelante.
  4. También tendrá que familiarizarse con el funcionamiento de los bucles de WordPress porque llamaremos a estos parámetros en una consulta de WordPress.

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

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

Mostrar una entrada de WordPress solo si tiene un campo personalizado específico

Antes de mostrarle el código que debe utilizar, debe saber a qué archivo de tema debe añadirlo. Lo más probable es que sea una plantilla de página, como index.php, archive.php o page.php.

Digamos que quieres añadirlo al archivo index.php del tema Twenty Twenty-One. Aquí es lo que el bucle de WordPress parte de ese archivo se parece 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 por defecto de WordPress(have_posts() y the_post()) para mostrar entradas. Este método es adecuado para la mayoría de los temas estándar de WordPress y se utiliza para mostrar entradas sin ningún filtro u ordenación personalizados.

Ahora, digamos que utiliza el campo personalizado ‘color’ como en el ejemplo anterior. Usted tendrá que reemplazar todo el código con el fragmento de código 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, hemos introducido una consulta personalizada($the_query = new WP_Query('meta_key=color');) para obtener entradas basadas en el valor de un campo personalizado específico (en este caso, entradas con un campo personalizado ‘color’).

A continuación, utiliza un bucle personalizado(if ($the_query->have_posts())) para iterar sobre las entradas obtenidas por esta consulta personalizada, mostrando el contenido de cada entrada del mismo modo que el primer fragmento.

También hemos añadido la funciónwp_reset_postdata() para garantizar que WordPress vuelva a mostrar todas las entradas correctamente tras la consulta personalizada. Esto garantiza que el sitio funcione sin problemas y muestre el contenido correcto a los usuarios.

Ahora, si quieres mostrar entradas específicas que tienen un campo personalizado con un valor específico, entonces sólo tienes que cambiar la consulta de la línea 3 de la siguiente manera:

$the_query = new WP_Query( 'meta_value=blue' );

Esto mostrará todas las entradas que tengan un valor ‘azul’ en cualquier campo personalizado.

Si quieres asegurarte de que el campo ‘color’ tiene un valor ‘azul’, entonces tu código de consulta tendrá este aspecto:

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

Puede obtener información acerca de los parámetros adicionales que puede utilizar en su consulta en la página de referencia del código WP_Query de WordPress.

Una vez que haya marcado / comprobado el código en el archivo PHP de la plantilla de página, puede comprobar su sitio WordPress en el front-end para ver su código en acción.

Conozca más formas de personalizar su sitio WordPress

Aquí tienes más formas de personalizar tus páginas de WordPress:

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

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

Descargo: Nuestro contenido está apoyado por los lectores. Esto significa que si hace clic en algunos de nuestros enlaces, podemos ganar una comisión. Vea cómo se financia WPBeginner , por qué es importante, y cómo puede apoyarnos. Aquí está nuestro proceso editorial .

Avatar

Editorial Staff at WPBeginner is a team of WordPress experts led by Syed Balkhi with over 16 years of experience in WordPress, Web Hosting, eCommerce, SEO, and Marketing. Started in 2009, WPBeginner is now the largest free WordPress resource site in the industry and is often referred to as the Wikipedia for WordPress.

El último kit de herramientas de WordPress

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

Reader Interactions

11 comentariosDeja una respuesta

  1. ahmed

    i have a question sir if i want to display single post and custom fields then what i should do.
    i dont want to display the post with specific custom fields. i want to display all custom fields of post

  2. Dave101

    Hi, thank for the useful tutorial. I have a question, in a wordpress website i set a meta value named “meta_country” and then i set every post with the country of the article, like “us”, “uk”, “fr”… Now I’m trying to add somewhere in the home of the blog a link that show list of all post with a specific country and a specific tag. For example all “UK” post tagged “APPLE”.
    I don’t understand how to do that, someone could help me?

  3. Максим Каминский

    great thanks, it help wery well!

  4. Mario M

    I wasnt able to generate any results unless I included “post_type” parameter into the query.

    ie: $the_query = new WP_Query(‘post_type=page&meta_key=color’);

  5. sacha

    Wonderful, just so simple and clean.
    Thank you.

  6. scottlee.me

    @ad Great question! I’m curious too.

  7. ad

    Hi,

    How could I show posts that DON’T have a specific Custom Field? Any idea?

    Thanks!!!

    • tara tin

      as I know from php it must be meta_key!=’your key’

      ;just you need to know that “!” means “not”

  8. brunobruno2

    Beatiful! Many thanks for sharing it. Works like a charm.

Deja tu comentario

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