WordPress get_posts fields

WordPress obtener post por id

Contents

Sé que podría hacer el mismo argumento para los joins, where, orderbys, etc., pero yo diría que este es un caso lo suficientemente especial como para que se le preste una atención temprana. Para una consulta en la página de inicio de un sitio de alto tráfico que cambia con la suficiente frecuencia como para no poder ser almacenada en caché, este pequeño cambio podría suponer una gran diferencia en el rendimiento.

Lamentablemente, sigo teniendo problemas para crear parches, aunque lo he hecho varias veces en el pasado, pero cada vez parece que tengo que volver a aprender desde cero. Parece que tengo un bloqueo mental por alguna razón en los parches (»¿puede alguien ayudarme con esto?») así que no he seguido adelante y he escrito un parche pero lo abordaré si consigo bendecir la tarea.

Estoy de acuerdo en que esto sería útil. Estoy continuamente iterando a través de un array de objetos post sólo para rellenar otro array con una sola propiedad de objeto. Esto eliminaría ese trabajo extra en tiempo de ejecución y reduciría el trabajo en la base de datos.

Gracias. No había visto eso en un tiempo (no desde que estaba en Windows) por lo que es útil, pero no aborda mi problema clave. En lugar de ensuciar este hilo con discusiones sobre parches, te enviaré un correo electrónico; responde para decirme si el correo electrónico está bien.

Wp_query

Este artículo demostrará cómo recuperar un array de objetos de posts de la base de datos usando funciones nativas de WP. Hay muchas maneras de consultar las entradas en WP, sin embargo, este artículo hará uso de la función común get_posts, el objeto WP_Query y el filtro pre_get_posts.

Este ejemplo demuestra cómo consultar todos los mensajes y mostrarlos en una lista. Tenga en cuenta que las funciones setup_postdata() y wp_reset_postdata() se utilizan para permitir que funciones como the_permalink() y the_title() funcionen como se espera.

Tanto la función get_posts como el objeto WP_Query aceptan argumentos para consultar los valores de los campos personalizados. Hay una forma básica y otra avanzada de consulta que se explican a continuación. Puedes leer más sobre los parámetros en el codex de WP

En este ejemplo, encontraremos todos los mensajes que tienen un post_type de ‘evento’ donde el campo personalizado ‘ubicación’ es igual a ‘Melbourne’. El campo personalizado ‘location’ en este caso puede ser un campo de texto, un botón de radio o un campo de selección (algo que guarda un único valor de texto)

WordPress obtener todos los puestos de tipo de puesto personalizado

get_posts pasa el trabajo pesado a WP_Query y si miras la fuente de esa clase puedes ver que sólo hay un número limitado de opciones con ese argumento de los campos. Sólo hay tres opciones en ese interruptor – ids, id=>parent, y el caso por defecto, todo.

Puedes usar el filtro posts_fields para alterar los campos que se devuelven, aunque parece que necesitas pasar ‘suppress_filters => false en los argumentos para que ese filtro se ejecute. Debería ser algo así:

Sin embargo, hay un problema mayor. Los objetos post que se devuelven son creados por una llamada a get_post y no respetan los valores pasados en la consulta original y no veo una forma de cambiar lo que se devuelve ni en get_posts ni en la propia clase WP_Post.

Es una función que imita a get_posts pero con la capacidad de obtener los campos que desees. Ojo: esta función no es get_posts y tiene 2 grandes limitaciones: se ejecuta sólo en la tabla posts por lo que no se puede ejecutar la consulta de taxonomía y meta.

Wp_query número de mensajes

El uso más apropiado para get_posts es crear un array de posts basado en un conjunto de parámetros. Recupera una lista de posts recientes o posts que coinciden con este criterio. get_posts también puede ser usado para crear bucles múltiples, aunque en este caso es preferible una referencia más directa a WP_Query usando new WP_Query.

Los parámetros de get_posts son similares a los de get_pages, pero se implementan de forma bastante diferente, y deben utilizarse en los escenarios apropiados. get_posts utiliza WP_Query, mientras que get_pages consulta la base de datos más directamente. Cada uno tiene parámetros que reflejan esta diferencia en la implementación.

query_posts también utiliza WP_Query, pero no se recomienda porque altera directamente el bucle principal cambiando las variables de la variable global $wp_query. get_posts, por otro lado, simplemente hace referencia a un nuevo objeto WP_Query, y por lo tanto no afecta o altera el bucle principal.

Si quiere alterar la consulta principal antes de que se ejecute, puede engancharla usando pre_get_posts. Si sólo quiere llamar a un array de posts basado en un pequeño y simple conjunto de parámetros dentro de una página, entonces get_posts es su mejor opción.