web-dev-qa-db-fra.com

Comment puis-je faire en sorte que WP_Query retourne une image post et des catégories?

J'ai un widget de la barre latérale qui affiche les messages associés en fonction d'un champ méta personnalisé. La requête fonctionne, mais c'est très inutile. Tout ce dont j'ai besoin, c'est le titre du message, l'image sélectionnée et les catégories du message. Actuellement, la requête suivante renvoie tout le contenu de l'article avec une quantité énorme de données dont je n'ai pas besoin. Je ne veux pas tuer mon serveur en extrayant d'énormes quantités de données de la base de données dont je n'ai pas besoin

$myquery = new WP_Query( "post_type=post&meta_key=nb_gameids_key&meta_value=14&order=ASC" );

Pour mieux expliquer les données que je veux, je vais utiliser une requête SQL qui me donnerait les données que je veux. Je sais que la base de données n'est pas structurée de cette façon, ce n'est qu'un exemple.

SELECT title,image,category FROM posts WHERE nb_gameids_key = 14 ORDER BY datecreated LIMIT 6
2
Dan Hastings

Vous n'avez pas à vous soucier de votre requête car vous ne pouvez rien y faire. Malheureusement, vous ne pouvez pas uniquement interroger des catégories, publier des titres et des images de manière native à l'aide de WP_Query. Les catégories de publication doivent être appelées séparément dans la boucle, tout comme les images en vedette.

Si vous creusez plus profondément dans le noyau, vous verrez que tous les termes postdata et post sont mis en cache, donc lorsque vous pensez faire des appels de base de données supplémentaires, vous ne l'êtes pas. Le cache est d'abord vérifié pour les données requises. Si c'est le cas, les données sont extraites du cache, sinon la base de données est interrogée et les données sont mises en cache pour les requêtes ultérieures.

Vous pouvez ajouter 'no_found_rows' => true, à vos arguments si vous n'allez pas paginer votre requête. Cela accélère la requête car elle ignore la pagination. Alternativement, vous pouvez utiliser get_posts qui a déjà cela intégré

En outre, vous pouvez utiliser des transitoires pour stocker le résultat d'une requête et vider le transitoire uniquement lorsqu'un nouveau message est ajouté à une catégorie ou à une personnalisation particulière. champ

3
Pieter Goosen