post__not_in不从Wordpress搜索查询中排除ID

时间:2018-10-23 10:58:26

标签: php wordpress

我试图检索具有特定元值的帖子的ID(这很好用),然后尝试通过post__not_in传递它们,并且不将其从wordpress搜索中排除。

我有一个整数数组(来自var_dump):

array(2) { [0]=> int(373) [1]=> int(247) }

但是,我现在需要将该数组转换为373247,以便在post__not_in中使用。有什么想法吗?

remove_action('pre_get_posts','exclude_pages_from_search');

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

$test = $hidePages->posts;

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

        if ( $query->is_main_query() ) {

            if ($query->is_search) {
                $query->set('post__not_in', $test);
            }
        }
    }
} add_action('pre_get_posts','exclude_pages_from_search');

1 个答案:

答案 0 :(得分:0)

我最初遇到的问题是,当需要整数数组时,我将数组内爆并将其转换为字符串。因此,我删除了查询的内向变量,并将其保留为变量,该变量当然成为整数数组,因为post___not_in仅允许整数数组。

然后,如果我在函数内部运行查询,就会遇到内存泄漏的麻烦,因此我不得不弄清楚如何在函数外部运行它,并且仍然能够使用函数内部的变量,因为它将无法定义

通过添加全局$ hidePageIds,我能够访问包含函数内部整数数组的变量,并因此将其传递给post__not_in查询。

remove_action('pre_get_posts','exclude_pages_from_search');

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

$hidePageIds = $hidePages->posts;

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

        if ( $query->is_main_query() ) {

            if ($query->is_search) {

                global $hidePageIds;
                $query->set('post__not_in', $hidePageIds);
            }
        }
    }
} add_action('pre_get_posts','exclude_pages_from_search');