Jusqu'à présent dans cette série, vous avez découvert les sélections de paramètres que vous pouvez utiliser avec la classe WP_Query
pour sélectionner les publications par type de publication, catégorie, balises, métadonnées, date, statut, etc.
Dans ce dernier tutoriel sur les paramètres WP_Query
, j'aborderai certains paramètres moins couramment utilisés qui peuvent offrir plus de flexibilité dans vos requêtes.
Les paramètres que nous introduisons ici sont utilisés pour :
Avant de commencer, voyons rapidement comment écrire des paramètres à l'aide de WP_Query
.
Lorsque vous écrivez WP_Query
dans un thème ou un plugin, vous devez inclure quatre éléments principaux :
En pratique, cela ressemblera à ceci :
<?php $args = array( // Arguments for your query. ); // Custom query. $query = new WP_Query( $args ); // Check that we have query results. if ( $query->have_posts() ) { // Start looping over the query results. while ( $query->have_posts() ) { $query->the_post(); // Contents of the queried post results go here. } } // Restore original post data. wp_reset_postdata(); ?>
Ces paramètres indiquent à WordPress quelles données obtenir de la base de données, que je couvrirai ici. Nous nous concentrons donc ici sur la première partie du code :
$args = array( // Arguments for your query. );
Comme vous pouvez le voir, les paramètres sont contenus dans un tableau. En suivant ce tutoriel, vous apprendrez à les coder.
Les paramètres du tableau ont une méthode d'encodage spécifique, comme suit :
$args = array( 'parameter1' => 'value', 'parameter2' => 'value', 'parameter3' => 'value' );
Vous devez placer les paramètres et leurs valeurs entre guillemets simples, utiliser =>
entre eux et les séparer par des virgules. Si vous faites cette erreur, WordPress risque de ne pas ajouter tous les paramètres à la requête, sinon vous risquez de voir un écran blanc.
Il existe quatre paramètres qui peuvent être utilisés pour interroger par auteur :
author
(int) : Utiliser l'identifiant de l'auteurauthor_name
(String) : utilisez "user_nicename" (pas un nom) author__in
(array) : utilisez l'identifiant de l'auteurauthor__not_in
(tableau)Le premier author
vous permet d'interroger les articles d'un ou plusieurs auteurs en fournissant l'identifiant de l'auteur :
$args = array( 'author' => '2' );
Le code ci-dessus interroge tous les messages de l'auteur avec un identifiant 2
.
Vous pouvez également utiliser des chaînes pour interroger les publications de plusieurs auteurs :
$args = array( 'author' => '1, 2' );
Si vous souhaitez effectuer une requête par nom, vous pouvez utiliser le paramètre author_name
:
$args = array( 'author_name' => 'rachelmccollin' );
Ce paramètre prend comme paramètre la valeur du champ user_nicename
dans la base de données, qui s'affiche sous forme de pseudo dans l'écran de gestion des utilisateurs :
Veuillez noter que puisque les utilisateurs peuvent modifier ceci, il est plus sûr d'utiliser le paramètre author
(si vous pensez que vos utilisateurs pourraient le modifier).
Vous pouvez également consulter les articles d'une série d'auteurs :
$args = array( 'author__in' => array( '1', '2' ) );
Ce qui précède interrogera les publications de deux auteurs : les auteurs avec les identifiants 1
et 1
和 2
的作者,给出的结果与我在 author
donneront le même résultat que la chaîne que j'ai utilisée dans author
ci-dessus.
Enfin, vous pouvez exclure les publications d'un ou plusieurs auteurs à l'aide du paramètre author__not_in
参数排除一位或多位作者的帖子。下面的参数查询除作者 1
. Les paramètres suivants interrogent toutes les publications sauf l'auteur 1
:
$args = array( 'author__not_in' => array( '1' ) );
Ou vous pouvez exclure plusieurs auteurs :
$args = array( 'author__not_in' => array( '1', '2' ) );
Vous pouvez également utiliser le paramètre author
et exclure les auteurs en utilisant un signe moins devant l'identifiant de l'auteur :
$args = array( 'author' => '-2' );
Il n'y a qu'un seul paramètre de recherche, qui est s
. Utilisez-le pour rechercher des publications correspondant à vos termes de recherche. Par exemple, pour rechercher des publications contenant le mot-clé « mon plat préféré », vous utiliserez :
$args = array( 's' => 'my favorite food' );
Par exemple, cela pourrait vous être utile pour rechercher des articles connexes avec des mots-clés similaires.
Vous pouvez utiliser deux paramètres de mot de passe pour interroger les publications avec ou 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 interroger les publications protégées par mot de passe :
$args = array( 'has_password' => true );
Pour les publications sans mot de passe :
$args = array( 'has_password' => false );
Vous pouvez également interroger par le mot de passe lui-même, en utilisant le paramètre post_password
:
$args = array( 'post_password' => 'mypassword' );
Les autorisations n'ont qu'un seul paramètre, la valeur perm
,用于查询当前用户有权限阅读的帖子。它采用 'readable'
, qui est destinée à être utilisée conjointement avec d'autres paramètres.
因此,要查询受密码保护的帖子并仅在用户具有适当权限时才显示它们,您可以使用以下命令:
$args = array( 'has_password' => true, 'perm' => 'readable' );
或者,如果当前用户有权查看草稿帖子,则可以使用以下命令:
$args = array( 'post_status' => 'draft', 'perm' => 'readable' );
共有三个缓存参数,它们会阻止查询检索到的数据添加到缓存中:
cache_results
(boolean):帖子信息缓存update_post_meta_cache
(boolean):发布元信息缓存update_post_term_cache
(boolean):帖子术语信息缓存这三个选项的默认值都是 true
:如果您希望将数据添加到缓存中,则不需要使用它们。
因此,要显示 product
帖子类型的所有帖子,但不将帖子信息添加到缓存中,您可以使用以下命令:
$args = array( 'post_type' => 'product', 'cache_results' => false );
通常您不应该使用这些参数,因为将发布数据添加到缓存是一个很好的做法。但是,您有时可能希望检索帖子,以便只使用一些帖子数据,在这种情况下,您不需要缓存中的其余帖子数据。例如,当您只想输出带有链接的帖子标题列表时,在这种情况下,您不需要将帖子术语数据或元数据添加到缓存中:
$args = array( 'post_type' => 'product', 'update_post_meta_cache' => false, 'update_post_term_cache' => false );
您可以使用 fields
参数来指定从查询中返回哪些字段。这可以节省从数据库中的字段返回的数据,而在循环中输出数据时不需要这些数据。
默认情况下是返回所有字段,但是您有两个选项可以使用 fields
参数来限制这一点。首先,'ids'
参数:
$args = array( 'fields' => 'ids' );
这只会返回帖子 ID 数组,不会返回其他字段。如果您想在循环中输出任何内容(例如帖子标题),则必须使用 get_the_title ($post->ID);
等函数来输出标题,这将处理事情的方式很冗长。
您可以使用的另一个参数获取帖子 ID 与子帖子 ID 的关联数组:
$args = array( 'fields' => 'id=>parent' );
您可以使用它根据您的其他参数及其子参数查询帖子。
WP_Query
系列的这一部分介绍了 WP_Query
类的最终参数集。您可以使用它们按作者、密码保护状态或密码本身和搜索词查询帖子,并设置是否将查询结果添加到缓存以及查询返回哪些字段。
在本系列的下一部分中,您将看到一些在主题或插件中使用 WP_Query
的有效示例。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!