✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Guía: Cómo consultar publicaciones en WordPress

29

¿Qué métodos están disponibles para hacer una consulta de publicación personalizada y cuándo es mejor usarlos? Esta publicación tiene como objetivo establecer una comprensión sólida de dos métodos de consulta de publicaciones, cómo acceder a los resultados, cómo construir argumentos y, finalmente, cómo limpiar después de eso. Los dos métodos que veremos son get_posts()y WP_Query.

Cuando se trata de hacer una nueva consulta de publicación, en realidad hay dos opciones (en el momento de escribir este artículo). La elección realmente solo depende de su preferencia (y algún efecto de rendimiento menor). Una opción tiene el potencial de estropear el bucle/consulta global en el que se encuentra actualmente, a menos que lo maneje correctamente. Con una opción maneja objetos y en la otra opción maneja una matriz. Sin embargo, los argumentos para personalizar la consulta posterior son idénticos.

¿Consulta global?

Si no está seguro de lo que quiero decir con "estropear la consulta global", es esto. WordPress siempre realiza una consulta global, dependiendo de la página en la que se encuentre. Si un visitante visita un archivo de categoría, WordPress ha realizado una consulta de publicación para esto. El tema normalmente accedería a las publicaciones en la consulta usando "el bucle". Cuando hacemos una nueva consulta con su propio bucle dentro de este bucle, debemos asegurarnos de que la consulta global de WordPress y nuestra consulta se manejen por separado.

Sin embargo, si desea modificar la consulta de publicación de WordPress, esa es otra historia. Tengo otra publicación que profundiza sobre cómo hacer eso.

Veamos las dos opciones que tenemos y cómo las manejamos. Después de eso, veremos los argumentos para personalizar la consulta. Tenga en cuenta que los argumentos son idénticos para ambos.

Los dos métodos de consulta de publicaciones.

Puede consultar publicaciones con la función get_posts()o creando una nueva instancia de WP_Query.La primera opción devuelve una matriz de publicaciones y en la segunda maneja un objeto. Debido a que get_posts()devuelve una matriz de solo las publicaciones, generalmente es más simple usar esto en cualquier lugar que desee. Sin embargo, si desea paginar su consulta, definitivamente debe crear una WP_Queryinstancia.

La función get_postses una función contenedora, WP_Querylo que significa que acepta los mismos argumentos, pero get_poststiene algunos argumentos de "alias" adicionales. La página de documentación de WordPress para get_posts no enumera los posibles argumentos (excepto los argumentos de alias), pero se refiere a la página de documentación de WP_Query para los argumentos. Veremos más de cerca los argumentos más adelante.

Si el rendimiento es un problema (es decir, el sitio tiene muchas publicaciones), get_postses más rápido que usar WP_Queryporque omite el cálculo de la paginación.

El método de recorrer su consulta de publicación personalizada difiere según el método que elija. Debe estar familiarizado con el bucle común de WordPress que se usa en casi todas las plantillas de temas:

if (have_posts()) { while (have_posts()): the_post(); // Access to each post; you can use template tags here endwhile; }

Bucle usando WP_Query

Repetir los resultados de using WP_Queryes exactamente lo mismo, excepto que nos referimos específicamente al objeto de instancia en el bucle. También debemos recordar "restablecer el estado" después de que terminemos de hacer un bucle para que el objeto de publicación global vuelva a ser como era antes. Para hacer eso usamos wp_reset_postdata().

Si descarga el objeto instanciado por WP_Query( $custom_queryen el ejemplo anterior), encontrará la consulta completa y los argumentos utilizados. Las partes interesantes aquí son las propiedades ‘ found_posts‘ y ‘ posts‘. La postspropiedad ‘ ‘ contiene el resultado de los objetos de publicación por los que se ejecutará el ciclo. El número de publicaciones que coincidieron con su consulta se devuelve en ‘ found_posts‘ y es útil si desea realizar una paginación personalizada. Divida este valor con la configuración de WordPress para el número de publicaciones por página para averiguar cuántas páginas necesita para su consulta, o simplemente consulte la propiedad ‘ max_num_pages‘.

Nota: cuando usa get_postsWordPress, solo devuelve la postspropiedad ‘ ‘ (que es una matriz) del WP_Queryobjeto.

Bucle usando get_posts

Al usar get_postsno usamos el "bucle de WordPress" habitual, sino que usamos un bucle de matriz de PHP normal. Cada elemento de la matriz son objetos de publicación, y no es necesario restablecerlos una vez que haya terminado de realizar el bucle. Tenga en cuenta que las etiquetas de plantilla (como the_title(), the_permalink()etc.) no están disponibles dentro de este bucle. Deberá consultar las propiedades del objeto de la publicación (p. ej $custom_post->ID., ).

Recomiendo que nombre sus objetos de publicación algo diferente a $post. Es posible que encuentre problemas al intentar acceder a las propiedades de la publicación (es posible que se refiera al objeto de la publicación global y no a la publicación en el bucle).

Si desea utilizar etiquetas de plantilla para acceder más fácilmente a la información de la publicación (como the_title()y the_permalink()), puede hacerlo. Haga esto diciéndole a WordPress que configure el objeto de publicación global dentro del ciclo con setup_postdata(). Si hace esto, deberá restablecer el estado wp_reset_postdata()después del bucle.

$custom_query = get_posts([/ Arguments here /]); foreach ($custom_query as $post) { setup_postdata($post); // Template tags are available here, for example: the_title(); } wp_reset_postdata();

¡ Tenga en cuenta que setup_postdatarequiere que se nombren los objetos que está recorriendo (la asparte ” " en el ciclo foreach) $post! En el primer ejemplo, nombré los objetos de publicación $custom_posty esto no funcionaría con setup_postdata().

Sin embargo, si solo necesita acceder a la información básica de la publicación, también puede omitir la configuración del objeto de publicación global y, en su lugar, usar las get_etiquetas de plantilla " " correspondientes y la identificación de la publicación. Por ejemplo, la etiqueta the_permalink()solo funciona correctamente si el objeto de publicación global está configurado, pero puede solicitar el enlace permanente de la publicación sin el objeto de publicación global simplemente usando echo get_the_permalink($custom_post->ID).

Argumentos de consulta

Puede encontrar la lista completa de todos los argumentos posibles en la página de documentación de WP_Query. Ejemplos de parámetros son publicaciones con términos específicos de una taxonomía, metavalores de publicaciones, tipos de publicaciones, inclusión o exclusión de publicaciones específicas y toda una gama de opciones para ordenar los resultados. Hay demasiados para analizar cada uno en detalle, pero aquí hay algunos ejemplos comunes de argumentos para consultar publicaciones.

Ejemplo 1: publicaciones relacionadas de la misma categoría

Supongamos que desea mostrar "publicaciones relacionadas" al final de una sola publicación. Debería mostrar una selección aleatoria de 3 publicaciones que estén en la misma categoría que la publicación actual, y debería excluir la publicación actual del resultado.

Los argumentos son bastante autoexplicativos. Pido solo ‘ post‘ en ‘ post_typey un máximo de 3 publicaciones en ‘ posts_per_page'.

Para consultar publicaciones en categorías, puede crear un tax_query o usar el ‘ category__in‘ más simple (NB: solo funciona para la categoría de publicación). En el ejemplo anterior, utilizo wp_get_post_categories()para obtener una serie de ID de términos asignados a la publicación proporcionada, y uso esto para el argumento ‘ category__in‘.

Puede excluir ID de publicación con ‘ post__not_in‘ mientras que proporcioné la ID de publicación actual. Finalmente, pedí un orden aleatorio de publicaciones configurando ‘ rand‘ en ‘ orderby‘. Puede proporcionar, por ejemplo, ‘ title‘ o ‘ date‘ para ordenarlos de manera diferente. Eche un vistazo a la documentación para realizar pedidos para ver qué es posible.

Ejemplo 2: todas las publicaciones de un tipo de publicación personalizado con múltiples argumentos de orden

En este ejemplo, asumimos que tiene un tipo de publicación personalizada ‘ book‘ y en una plantilla de página personalizada desea mostrar todos los libros publicados. Desea ordenar las publicaciones principalmente por menu_order (el atributo de la página, es un número que puede establecer por publicación) y, en segundo lugar, el título de la publicación.

Una vez más, los argumentos se explican por sí mismos. Solicito el tipo de publicación ‘ book‘ como ‘ post_type‘. Cuando establece ‘ posts_per_page‘ a -1, obtendrá todas las publicaciones (publicadas, a menos que especifique algo diferente en post_statusel argumento ”). Finalmente, proporciono una matriz a ‘ orderby‘ para decirle a WordPress que ordene las publicaciones principalmente por orden de menú en orden ascendente y, en segundo lugar, el título de la publicación en orden descendente.

Ejemplo 3: Publicaciones con metadatos personalizados

Supongamos que tiene un tipo de publicación personalizada ‘ book‘ y desea consultar todos los libros que no están publicados o un libro publicado entre el año 1990 y 2019.

Es mejor crear una consulta mediante el uso de post meta meta_query(para argumentos meta muy simples que puede usar meta_keyy meta_valuedirectamente). El meta_queryargumento ‘ ‘ requiere una matriz, donde cada argumento es una matriz. Puede controlar la relación entre cada argumento con ‘ relation‘, que configuré en ‘ OR‘ en el ejemplo anterior.

Proporciono dos argumentos de metadatos para ‘ meta_query‘. El primero simplemente compara la clave meta ‘ book_status‘ con el texto ‘ unpublished‘, y si es igual, se incluirá. En el segundo argumento, le digo a WordPress que obtenga cualquier valor en la clave meta ‘ year_published‘ que esté entre los números 1990 y 2019.

Conclusión

Ahora debería tener una comprensión básica de los dos métodos para consultar publicaciones. No hay una gran diferencia ya que puede crear la misma consulta usando ambos, pero la forma de manejar los dos es diferente. Los tres ejemplos proporcionados de argumentos de consulta solo tocan la superficie de las consultas que puede crear. Consulte la documentación de WP_Query para obtener una descripción general completa con muchos ejemplos.

Si tiene curiosidad acerca de cómo modificar la consulta global que realiza WordPress, tengo una publicación separada que profundiza al respecto.

Fuente de grabación: awhitepixel.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More