Arguments WP_Query Auteur, Recherche, Mot de passe et autorisations

Jusqu'à présent, dans cette série, vous avez appris une sélection d'arguments que vous pouvez utiliser avec le WP_Query classe, pour sélectionner les articles par type, catégorie, tag, métadonnées, date, statut et bien plus encore.

Dans ce dernier tutoriel sur WP_Query arguments, je vais passer en revue certains paramètres moins fréquemment utilisés qui peuvent donner à vos requêtes encore plus de flexibilité.

Les paramètres que nous allons couvrir ici sont pour:

  • auteur
  • chercher
  • mot de passe
  • autorisations
  • mise en cache
  • champs de retour

Avant de commencer, rappelons brièvement comment vous codez vos arguments avec WP_Query.

Récapitulation du fonctionnement des arguments dans WP_Query

Quand vous codez WP_Query Dans vos thèmes ou plugins, vous devez inclure quatre éléments principaux:

  • les arguments de la requête, en utilisant des paramètres qui seront abordés dans ce tutoriel
  • la requête elle-même
  • la boucle
  • terminer: fermer les balises if et while et réinitialiser les données post

En pratique, cela ressemblera à quelque chose comme ceci:

have_posts ()) // Commence à boucler sur les résultats de la requête. while ($ query-> have_posts ()) $ query-> the_post (); // Le contenu des résultats postés interrogés est disponible ici.  // Restaure les données de publication d'origine. wp_reset_postdata (); ?>

Les arguments sont ce qui indique à WordPress quelles données extraire de la base de données et ce sont celles que je vais couvrir ici. Nous nous concentrons donc sur la première partie du code:

$ args = array (// Arguments pour votre requête.);

Comme vous pouvez le constater, les arguments sont contenus dans un tableau. Vous apprendrez à les coder au fil de ce didacticiel..

Coder vos arguments

Il existe un moyen spécifique de coder les arguments du tableau, comme suit:

$ args = array ('paramètre1' => 'valeur', 'paramètre2' => 'valeur', 'paramètre3' => 'valeur');

Vous devez mettre les paramètres et leurs valeurs entre guillemets simples, utilisez => entre eux, et séparez-les avec une virgule. Si vous vous trompez, WordPress peut ne pas ajouter tous vos arguments à la requête ou vous pouvez obtenir un écran blanc..

Paramètres de l'auteur

Il existe quatre paramètres que vous pouvez utiliser pour interroger par auteur:

  • auteur (int): utiliser l'identifiant de l'auteur
  • nom de l'auteur (chaîne): utilisez 'user_nicename' (NOT name)
  • auteur__in (tableau): utiliser l'identifiant de l'auteur
  • auteur__not_in (tableau)

Le premier, auteur, vous permet d'interroger les publications d'un ou de plusieurs auteurs en fournissant l'ID de l'auteur:

$ args = array ('author' => '2');

Le code ci-dessus interroge tous les messages de l'auteur dont l'identifiant est 2.

Vous pouvez également utiliser une chaîne pour interroger les publications de plusieurs auteurs:

$ args = array ('author' => '1, 2');

Si vous voulez interroger par nom, vous utiliserez le nom de l'auteur paramètre:

$ args = array ('author_name' => 'rachelmccollin'); 

Ce paramètre prend la valeur de la user_nicename champ de la base de données en tant qu'argument, qui s'affiche sous le pseudonyme dans l'écran d'administrateur des utilisateurs:

Notez que ceci étant modifiable par les utilisateurs, vous serez plus sûr d’utiliser le auteur paramètre si vous pensez que vos utilisateurs pourraient le changer.

Vous pouvez également rechercher les publications d'un tableau d'auteurs:

$ args = array ('author__in' => array ('1', '2'));

Ce qui précède interrogera les auteurs de deux articles: ceux qui ont un identifiant. 1 et 2, vous donnant les mêmes résultats que la chaîne que j'ai utilisée avec le auteur paramètre ci-dessus.

Enfin, vous pouvez exclure les publications d’un ou plusieurs auteurs à l’aide de la touche auteur__not_in paramètre. L'argument ci-dessous pour toutes les publications sauf celles de l'auteur 1:

$ args = array ('author__not_in' => array ('1'));

Ou vous pouvez exclure plusieurs auteurs:

$ args = array ('author__not_in' => array ('1', '2'));

Sinon, vous pouvez utiliser le auteur paramètre et utilisez un signe moins devant l'ID de l'auteur pour exclure un auteur:

$ args = array ('author' => '-2'); 

Paramètre de recherche

Il y a juste un paramètre pour la recherche, qui est s. Utilisez-le pour rechercher des publications qui correspondent à un terme de recherche. Ainsi, par exemple, pour rechercher des publications contenant les mots clés "mon aliment préféré", vous utiliseriez ceci:

$ args = array ('s' => 'mon plat préféré');

Vous trouverez peut-être cela utile pour rechercher des publications associées avec des mots clés similaires, par exemple.

Paramètres de mot de passe

Vous pouvez utiliser les deux paramètres de mot de passe pour interroger les publications avec et sans protection par mot de passe:

  • has_password (bool)
  • post_password (chaîne)

Le premier paramètre, has_password, vous permet de rechercher des publications avec ou sans protection par mot de passe. Donc, pour rechercher des publications protégées par mot de passe:

$ args = array ('has_password' => true);

Et pour les publications qui n'ont pas de mots de passe:

$ args = array ('has_password' => false);

Vous pouvez également interroger par le mot de passe lui-même, en utilisant le post_password paramètre:

$ args = array ('post_password' => 'mypassword');

Paramètre d'autorisations

Un seul paramètre est disponible pour les autorisations., permanente, que vous utilisez pour interroger les publications que l’utilisateur actuel est autorisé à lire. Il prend la 'lisible' valeur et est conçu pour être combiné avec d'autres arguments.

Donc, pour interroger les publications protégées par mot de passe et les afficher uniquement si l'utilisateur dispose des autorisations appropriées, utilisez ceci:

$ args = array ('has_password' => true, 'perm' => 'lisible');

Ou pour afficher les brouillons si l'utilisateur actuel a la permission de les voir, utilisez ceci:

$ args = array ('post_status' => 'brouillon', 'perm' => 'lisible');

Mise en cache des paramètres

Il existe trois paramètres de mise en cache, qui empêchent l'ajout au cache des données extraites par la requête:

  • cache_results (booléen): cache d'informations post
  • update_post_meta_cache (booléen): cache de méta-informations
  • update_post_term_cache (booléen): cache d'informations post-terme

La valeur par défaut des trois est vrai: vous n'avez pas besoin de les utiliser si vous souhaitez que les données soient ajoutées au cache.

Donc, pour afficher tous les messages de la produit poste tapez mais pas ajouter des informations de poste dans le cache, vous utiliseriez ceci:

$ args = array ('post_type' => 'product', 'cache_results' => false);

Normalement, vous ne devriez pas utiliser ces paramètres, car il est recommandé d’ajouter des données de publication au cache. Cependant, vous pouvez parfois souhaiter récupérer des publications afin que vous puissiez simplement utiliser certaines données de publication, auquel cas vous n'avez pas besoin du reste des données de publication dans le cache. Un exemple pourrait être lorsque vous souhaitez simplement générer une liste de titres d'articles avec des liens, auquel cas vous n'avez pas besoin que les données ou les métadonnées de post-terme soient ajoutées au cache:

$ args = array ('post_type' => 'product', 'update_post_meta_cache' => false, 'update_post_term_cache' => false);

Paramètre de champs de retour

Vous pouvez utiliser le des champs paramètre pour spécifier les champs à renvoyer de votre requête. Cela permet d’enregistrer les données de retour des champs de la base de données inutiles lors de la sortie des données dans votre boucle..

La valeur par défaut est de retourner tous les champs, mais vous avez deux options avec des champs paramètre pour limiter cela. Premièrement le 'ids' argument:

$ args = array ('fields' => 'ids');

Cela renverrait simplement un tableau d'identifiants de publication et aucun autre champ. Si vous voulez sortir quelque chose dans votre boucle (comme le titre du post), vous devrez alors utiliser des fonctions telles que get_the_title ($ post-> ID); pour sortir le titre, ce qui serait une longue façon de faire les choses.

L'autre argument que vous pouvez utiliser récupère un tableau associatif d'ID de publication avec des ID de publication enfants:

$ args = array ('fields' => 'id => parent');

Vous l'utiliserez pour rechercher des publications en fonction de vos autres arguments et de leurs enfants..

Résumé

Cette partie de la série sur WP_Query introduit le dernier ensemble de paramètres pour la WP_Query classe. Vous pouvez les utiliser pour interroger des publications par auteur, par statut protégé par mot de passe ou par le mot de passe lui-même et les termes de recherche, et pour définir si les résultats de la requête sont ajoutés au cache et quels champs sont renvoyés par la requête..

Dans la suite de cette série, vous verrez quelques exemples concrets d’utilisation de WP_Query dans vos thèmes ou plugins.