WP_Query未返回要在搜索查询中使用的ID

时间:2018-10-22 15:26:30

标签: php wordpress

我正在尝试根据WP_Query从检索查询中删除ID列表。不管出于什么原因,即使我知道帖子ID 373具有正确的查询条件,WP_Query也不显示ID数组。

{{1}}

1 个答案:

答案 0 :(得分:0)

经过一番调查,我发现默认情况下post循环仅使用post类型的“ post”。我必须定义我要搜索的所有帖子类型,以使其带回与值匹配的页面/自定义帖子类型的ID:

remove_action('pre_get_posts','exclude_pages_from_search');

$hidePages = new WP_Query( array (
    'post_type' => array( 'post', 'page', 'offer', 'review', 'project' ),
    'meta_key' => 'edit_screen_sitemap',
    'meta_value' => 'hide',
    'fields' => 'ids'
)); 

$hidePageIds = array($hidePages->posts);
$hidePageIdss = array($hidePages);

var_dump($hidePageIds); // array(1) { [0]=> array(0) { } }
var_dump($hidePageIdss); // displays query array

add_action('pre_get_posts','exclude_pages_from_search');

function exclude_pages_from_search($query) {
    if ( !is_admin() ) {

        if ( $query->is_main_query() ) {

            if ($query->is_search) {
                $query->set('post__not_in', array($hidePages->posts));
            }
        }
    }
}

请注意,这只能解决获取页面ID的问题,不能使搜索功能正常工作,我在这里还有另一个问题可以在其中找到固定查询:post__not_in is not excluding IDs from Wordpress Search Query