我试图检索具有特定元值的帖子的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');
答案 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');