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

Nota editorial: Ganamos una comisión de los enlaces de socios en WPBeginner. Las comisiones no afectan a las opiniones o evaluaciones de nuestros editores. Más información sobre Proceso editorial.

¿Desea mostrar una entrada de WordPress solo si tiene un campo personalizado específico?

Los campos personalizados son una característica muy útil de WordPress que te permite añadir información adicional a tus entradas y páginas de WordPress. Puede filtrar su contenido según sus campos personalizados.

En este artículo, le mostraremos cómo mostrar una entrada de WordPress solo si tiene un campo personalizado específico.

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

¿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, incluyendo el uso del plugin Advanced Custom Fields (ACF).

Encontrará muchos consejos útiles sobre cómo utilizar 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.

Esperamos que este tutorial te haya ayudado a aprender cómo mostrar una entrada de WordPress solo si tiene un campo personalizado específico. Puede que también quieras ver nuestra guía completa de WordPress SEO o comprobar nuestro listado de los mejores plugins de WordPress para hacer crecer tu sitio web.

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

12 comentariosDeja una respuesta

  1. Syed Balkhi says

    Hey WPBeginner readers,
    Did you know you can win exciting prizes by commenting on WPBeginner?
    Every month, our top blog commenters will win HUGE rewards, including premium WordPress plugin licenses and cash prizes.
    You can get more details about the contest from here.
    Start sharing your thoughts below to stand a chance to win!

  2. ahmed says

    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

  3. Dave101 says

    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?

  4. Mario M says

    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’);

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.