0

我试图弄清楚如何实现一个特定的查询来修改我的 WordPress 帖子的搜索结果。我正在尝试通过一个名为“Common Authors”的自定义字段进行搜索。

可能有多个共同作者,这导致我的查询有时会失败。这是我现在所拥有的:

<?php
...
$query->set('meta_key', 'common_authors');
$query->set('meta_value', serialize( array(strval($_GET['common_author'])))); // I get a single ID from the url as a string
$query->set('meta_compare', 'IN');

这是我在 var_dump 查询时看到的:

'meta_key' => string 'common_authors'
'meta_value' => string 'a:1:{i:0;s:5:"17145";}'

如果只有一个 common_author ,这很好用。

但是,一个帖子可以有多个 common_authors。这是数据库中的 meta_value 示例:

a:4:{i:0;s:5:"14409";i:1;s:5:"17145";i:2;s:5:"14407";i:3;s:5:"14406";}

有人可以帮我弄清楚如何调整我的查询,以便它也能返回这个吗?

4

1 回答 1

1

试试这个工作级长!

 $args = array(
        'post_type' => 'post',
        'meta_query' => array(
            array(
                'key' => 'common_authors',
                'value' => array ( 'author1', 'author2', 'author3' ),
                'compare' => 'IN'
            )
        )
    );
$query = new WP_QUERY($args);

如果您需要在 pre_get_posts 中使用它

$meta_query = array(
                array(
                    'key' => 'common_authors',
                    'value' => array ( 'author1', 'author2', 'author3' ),
                    'compare' => 'IN'
                )
            );

$query->set('meta_query', $meta_query);
于 2021-03-16T14:23:54.267 回答