搜索查询->显示除特定模板外的所有页面

时间:2016-06-28 作者:Maarten Wolfsen

以下是我的搜索查询参数:

$args = array(
 \'s\' =>$s,
 \'post_type\' => array( \'post\', \'p24_cases\', \'page\')
);
使用这些参数,搜索结果将显示包含搜索词的所有页面。我想显示所有页面,除了名为“bedankt”的页面模板(感谢荷兰语)。

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

修改答案以回答问题

为了排除具有特定模板的所有页面,只需运行meta_query 排除带有自定义字段的所有页面_wp_page_template 设置为bedankt. 记住,WordPress将分配给页面的模板保存为一个隐藏的自定义字段,该字段名为_wp_page_template

考虑到这一点,我们可以执行以下操作

$args = [
    \'s\'         => $s,
    \'post_type\' => [\'post\', \'page\', \'p24_cases\'],
    \'meta_key\'  => [
        [
            \'key\'     => \'_wp_page_template\',
            \'value\'   => \'bedankt.php\',
            \'compare\' => \'NOT IN\'
        ]
    ]
];
原始答案-误读问题您只需获取该页面的帖子ID,然后将其作为数组传递给post__not_in

\'post__not_in\' => [1], // Replace 1 with actual page ID
或PHP 5.4之前的版本

\'post__not_in\' => array( 1 ), // Replace 1 with actual page ID

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the