📅  最后修改于: 2023-12-03 15:40:03.056000             🧑  作者: Mango
在 WordPress 中,我们可以使用 get_post_meta()
函数来获取一个帖子的元数据。但是,如果我们需要查询多个帖子的元数据,或者希望在一个查询中检索多个键和/或元值时,这种方法就不够方便了。在这种情况下,我们可以使用 WP_Query 类来处理帖子文本和元数据的查询。
WP_Query 是一个非常强大的 WordPress 类,可以用于处理帖子/页面的查询,以及帖子/页面的自定义类型。您可以在 WP 官方文档中查找关于 WP_Query 的完整文档。
下面是一个查询所有帖子的 WP_Query 示例:
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// 输出帖子标题等信息
the_title();
the_content();
}
wp_reset_postdata();
}
在上面的代码中,我们使用 WP_Query 类来获取所有 post
类型的帖子,然后循环输出每个帖子的标题和内容。
有时,我们需要获取帖子的特定元数据,例如帖子的作者,发布时间等。为了获取这些元数据,我们可以在 WP_Query 的参数数组中添加 meta_key
和 meta_value
来告诉 WP_Query 我们要查询的元数据。
例如,下面的代码将查询发布时间在 2019-01-01
之后的所有帖子:
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'meta_key' => 'post_date',
'meta_value' => '2019-01-01',
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// 输出帖子标题等信息
the_title();
the_content();
}
wp_reset_postdata();
}
在上面的代码中,我们向 WP_Query 添加了 meta_key
和 meta_value
来告诉它我们要查询的元数据是 post_date
,它的值应该是 2019-01-01
。
有时候,我们需要在一个查询中查询多个元数据,例如查询发布时间在 2019-01-01
之后,同时还要查询帖子的作者是 admin
的所有帖子。为了实现这一点,我们可以向 WP_Query 添加多个 meta_query
,如下所示:
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'post_date',
'value' => '2019-01-01',
'compare' => '>',
'type' => 'DATE',
),
array(
'key' => 'author',
'value' => 1,
'compare' => '=',
'type' => 'NUMERIC',
),
),
);
$query = new WP_Query( $args );
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// 输出帖子标题等信息
the_title();
the_content();
}
wp_reset_postdata();
}
在上面的代码中,我们向 WP_Query 添加了一个 meta_query
数组,其中包含两个元素。第一个元素查找发布日期在 2019-01-01
之后的帖子,而第二个元素查找帖子的作者是 1
(即管理员)的帖子。我们还将 relation
设置为 AND
,以便只返回同时满足两个查询的帖子。
在本文中,我们介绍了如何使用 WP_Query 类来使用多个键和/或元值查询帖子的元数据。这是一种非常强大的工具,可以帮助我们更有效地查询和处理帖子文本和元数据。如果您想了解 WP_Query 的更多功能,请参阅 WP 官方文档。