¿Sabes cuándo necesitas mostrar una publicación de WordPress solo si tiene un campo personalizado específico? Nos ha pasado.
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.

💡 Resumen: Puedes mostrar solo las publicaciones de WordPress que tienen un campo personalizado específico utilizando una WP_Query personalizada en los archivos de tu tema (como index.php) para filtrar esas publicaciones.
📌 Nota rápida: Este tutorial es para mostrar publicaciones de WordPress si tienen un valor introducido en un campo personalizado específico. Si deseas mostrar campos personalizados en el frontend de una publicación de WordPress, 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 entrada en tu sitio web de WordPress, puedes usar campos personalizados para agregar metadatos adicionales a la entrada.
Los metadatos son información adicional que puedes agregar a una entrada. Por ejemplo, si estuvieras escribiendo una reseña de un libro, podrías agregar 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 agregarlos en WordPress. Encontrarás muchos consejos útiles sobre cómo usar y mostrar campos personalizados en nuestra entrada, Campos personalizados de WordPress 101: Consejos, trucos y hacks.

Uno de nuestros usuarios nos preguntó cómo mostrar entradas 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 entradas 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
Antes de comenzar, hay algunas cosas importantes que debes tener en cuenta al trabajar con archivos de temas.
Si agregas código directamente a los archivos de tu tema, tus cambios se perderán la próxima vez que actualices tu tema.
Es por eso que recomendamos usar un plugin como WPCode para agregar código PHP personalizado de forma segura sin editar tu tema. Si prefieres editar los archivos del tema, asegúrate de estar usando un tema hijo para que tus cambios se conserven.
Para poder seguir este tutorial correctamente, aquí hay algunas cosas que debes tener en cuenta:
- Este tutorial implica agregar código a tu sitio de WordPress, por lo que no es el más adecuado para principiantes. Si eres nuevo en esto, necesitarás leer nuestra guía sobre cómo copiar y pegar código en WordPress.
- Recomendamos hacer una copia de seguridad de 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 arriesgado.
- Recomendamos entender cómo funciona la jerarquía de plantillas de WordPress para que sepas dónde agregar el código más tarde.
- También necesitarás familiarizarte con el funcionamiento de los bucles de WordPress porque llamaremos a estos parámetros en una consulta de WordPress.
📍Nota importante: Este tutorial solo funciona con temas de WordPress clásicos. Los temas de bloque utilizan el Editor de Sitio y un enfoque diferente para mostrar contenido, por lo que este método de edición de archivos de plantilla no se aplicará.
Dicho esto, veamos cómo mostrar una publicación de WordPress solo si tiene un campo personalizado específico.
- Paso 1: Instalar un plugin de fragmentos de código
- Paso 2: Agregar el código de consulta personalizado
- Paso 3: Filtrar por valor meta específico (Opcional)
- Paso 4: Filtrar por comparación meta (Opcional)
- Paso 5: Filtrar publicaciones por campos personalizados múltiples (meta_query)
- Ejemplo del mundo real: Mostrar solo reseñas de 5 estrellas
- Preguntas Frecuentes Sobre Mostrar una Publicación Si Tiene un Campo Personalizado Específico
- Preguntas Frecuentes Sobre Mostrar una Publicación Si Tiene un Campo Personalizado Específico
- Aprende más formas de personalizar tu sitio de WordPress
Paso 1: Instalar un plugin de fragmentos de código
Algunos tutoriales te dirán que abras el archivo index.php de tu tema y reescribas completamente el bucle de WordPress usando algo llamado WP_Query. No recomendamos hacer esto.
Modificar los archivos de plantilla principales puede romper el diseño de tu sitio, causar consultas de base de datos duplicadas que ralentizan tu sitio y romper por completo tu paginación (los botones "Página siguiente").
En cambio, la forma más segura y eficiente de hacerlo es usando el hook de acción pre_get_posts. Esto le dice a WordPress que filtre las publicaciones *antes* de que cargue el archivo de plantilla de la página.
Para agregar este código personalizado, recomendamos usar un plugin como WPCode. Te permite agregar código PHP de forma segura sin tocar directamente los archivos de tu tema, lo que significa que tu sitio no se romperá si cometes un error y tus cambios no se perderán cuando tu tema se actualice.
Paso 2: Agregar el código de consulta personalizado
Una vez que hayas instalado y activado WPCode, navega a Fragmentos de código » Agregar fragmento en tu panel de WordPress y selecciona 'Agregar tu código personalizado (Nuevo fragmento)'.

Asegúrate de que el "Tipo de código" esté configurado como Fragmento de PHP.
Luego, pega el siguiente código:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_custom_field' );
function wpb_filter_posts_by_custom_field( $query ) {
// Only modify the main query on the front-end homepage
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
// Tell WordPress to only get posts with the custom field key 'color'
$query->set( 'meta_key', 'color' );
}
}
Primero, el código verifica que solo esté alterando la consulta principal en el front-end de tu sitio web (específicamente la página de inicio del blog), dejando tu panel de administración de WordPress completamente intacto.
Luego, usa $query->set para indicarle a WordPress que solo recupere las publicaciones que tienen el campo personalizado 'color' adjunto.
Debido a que este código modifica la consulta antes de que se cargue la página, la paginación predeterminada de tu tema funcionará perfectamente sin código adicional. Simplemente activa el interruptor de WPCode a 'Activo' y haz clic en el botón 'Guardar fragmento' para publicarlo.
Paso 3: Filtrar por valor meta específico (Opcional)
¿Qué pasa si quieres encontrar publicaciones donde el campo personalizado 'color' tenga un valor específico, como 'blue'? Para hacer eso, solo necesitas agregar una regla meta_value a tu código.
Tu fragmento actualizado se verá así:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_custom_field_value' );
function wpb_filter_posts_by_custom_field_value( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'color' );
$query->set( 'meta_value', 'blue' );
}
}
Paso 4: Filtrar por comparación meta (Opcional)
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í:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_meta_compare' );
function wpb_filter_posts_by_meta_compare( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'color' );
$query->set( 'meta_value', 'blue' );
$query->set( '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.
Paso 5: Filtrar publicaciones por campos personalizados múltiples (meta_query)
Para escenarios más complejos donde necesites filtrar publicaciones basándote en múltiples campos personalizados o combinar condiciones (como Y/O), usarás el array meta_query.
Esto te permite definir un array de condiciones, cada una apuntando a un campo o valor personalizado diferente.
Por ejemplo, para mostrar publicaciones con el color 'blue' y el tamaño 'large', tu código se vería así:
<?php
add_action( 'pre_get_posts', 'wpb_filter_posts_by_multiple_fields' );
function wpb_filter_posts_by_multiple_fields( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$meta_query = array(
'relation' => 'AND', // or 'OR'
array(
'key' => 'color',
'value' => 'blue',
'compare' => '=',
),
array(
'key' => 'size',
'value' => 'large',
'compare' => '=',
),
);
$query->set( 'meta_query', $meta_query );
}
}
Esta consulta recuperará las publicaciones que tengan tanto el campo personalizado 'color' establecido en 'blue' COMO el campo personalizado 'size' establecido en 'large'.
Puedes ajustar el parámetro 'relation' a 'OR' para encontrar publicaciones que coincidan con al menos una de las condiciones.
Ejemplo del mundo real: Mostrar solo reseñas de 5 estrellas
Digamos que tienes un sitio de reseñas de libros de WordPress y usas un campo personalizado llamado star_rating para almacenar las puntuaciones de las reseñas.
Puedes mostrar fácilmente solo las publicaciones que tengan una calificación de 5 estrellas en la página de inicio de tu blog usando esta consulta:
<?php
add_action( 'pre_get_posts', 'wpb_show_only_five_star_reviews' );
function wpb_show_only_five_star_reviews( $query ) {
if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) {
$query->set( 'meta_key', 'star_rating' );
$query->set( 'meta_value', '5' );
}
}
Esto es extremadamente útil si quieres asegurarte de que tu feed principal solo muestre tu contenido mejor calificado.
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:
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í! De hecho, el método pre_get_posts que describimos en este tutorial está diseñado específicamente para que no tengas que editar los archivos de tu tema. Al usar un plugin de fragmentos como WPCode, puedes aplicar este filtro de forma segura a tu sitio sin tocar una sola línea del código principal de tu tema.
¿Puedo filtrar publicaciones por múltiples campos personalizados?
Puedes hacerlo. El hook pre_get_posts acepta argumentos complejos. Usarías un array 'meta_query', que te permite construir una lista de condiciones para que coincidan múltiples campos personalizados a la vez.
¿Este método funciona con temas de bloques?
Si bien el hook pre_get_posts puede interactuar técnicamente con temas de bloques, el bloque Query Loop nativo de WordPress no tiene una interfaz incorporada para filtrar campos personalizados de fábrica. Si estás utilizando un tema de bloques de Edición Completa del Sitio, el enfoque más fácil es usar un plugin que agregue filtrado de campos personalizados al bloque Query Loop, en lugar de escribir PHP 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 adjunto, mientras que usar el valor lo filtra para encontrar solo publicaciones 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:
- Cómo dar estilo a categorías individuales de forma diferente en WordPress
- Cómo Agregar una Barra de Desplazamiento Personalizada en WordPress
- Cómo agregar estilos personalizados a los widgets de WordPress
- Cómo dar estilo a cada publicación de WordPress de manera diferente
- Cómo usar códigos cortos en tus temas de WordPress
- Cómo resaltar publicaciones nuevas para visitantes recurrentes en WordPress
- Cómo cambiar el lado de 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 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 ver tutoriales en video de WordPress. También puedes encontrarnos en Twitter y Facebook.


ahmed
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.
Dave101
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?
Максим Каминский
¡Muchas gracias, ayuda muy bien!
pjhooker
¡Gracias!
Eduard Unruh
¡Dios mío, por fin GRACIAS!
Mario M
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’);
sacha
Maravilloso, simplemente tan simple y limpio.
Gracias.
scottlee.me
@ad ¡Gran pregunta! Yo también tengo curiosidad.
ad
Hola,
¿Cómo podría mostrar publicaciones que NO tienen un campo personalizado específico? ¿Alguna idea?
¡¡¡Gracias!!!
tara tin
según lo que sé de php, debería ser meta_key!=’tu clave’
;solo necesitas saber que “!” significa “no”
brunobruno2
¡Hermoso! Muchas gracias por compartirlo. Funciona a la perfección.