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.
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.
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:
- 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.
- 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.
- 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.
- 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:
- Cómo cambiar el estilo de las categorías individuales en WordPress
- Cómo añadir una barra de desplazamiento personalizada en WordPress
- Cómo añadir estilos personalizados a los widgets de WordPress
- Cómo dar un estilo diferente a cada entrada de WordPress
- Cómo utilizar shortcodes en sus temas de WordPress
- Cómo destacar nuevas entradas para los visitantes que regresan en WordPress
- Cómo cambiar la barra lateral en 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.
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
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?
Максим Каминский
great thanks, it help wery well!
pjhooker
Thx!
Eduard Unruh
omg finally THANKS!
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’);
sacha
Wonderful, just so simple and clean.
Thank you.
scottlee.me
@ad Great question! I’m curious too.
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”
brunobruno2
Beatiful! Many thanks for sharing it. Works like a charm.