📜  数组中的 wp 查询元数据 - PHP (1)

📅  最后修改于: 2023-12-03 15:40:03.056000             🧑  作者: Mango

数组中的 WP 查询元数据 - PHP

在 WordPress 中,我们可以使用 get_post_meta() 函数来获取一个帖子的元数据。但是,如果我们需要查询多个帖子的元数据,或者希望在一个查询中检索多个键和/或元值时,这种方法就不够方便了。在这种情况下,我们可以使用 WP_Query 类来处理帖子文本和元数据的查询。

1. 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 类型的帖子,然后循环输出每个帖子的标题和内容。

2. 获取帖子的元数据

有时,我们需要获取帖子的特定元数据,例如帖子的作者,发布时间等。为了获取这些元数据,我们可以在 WP_Query 的参数数组中添加 meta_keymeta_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_keymeta_value 来告诉它我们要查询的元数据是 post_date,它的值应该是 2019-01-01

3. 查询多个元数据

有时候,我们需要在一个查询中查询多个元数据,例如查询发布时间在 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,以便只返回同时满足两个查询的帖子。

4. 结论

在本文中,我们介绍了如何使用 WP_Query 类来使用多个键和/或元值查询帖子的元数据。这是一种非常强大的工具,可以帮助我们更有效地查询和处理帖子文本和元数据。如果您想了解 WP_Query 的更多功能,请参阅 WP 官方文档。