如何根据页面标题从WP搜索中排除页面

时间:2018-03-14 作者:McDeeez

我需要禁用我们网站的封闭内容,使其无法显示在搜索结果中。目前,我使用以下代码按帖子ID排除页面:

// Exclude gated content (download pages) from site search

function mm_search_filter( $query ) {
  if ( ! $query->is_admin && $query->is_search && $query->is_main_query() ) {
    $query->set( \'post__not_in\', array( 18321, 17218, 17212, 17217, 17136, 16269, 17484, 7349, 9264, 15919, 15920, 15921, 15922, 7939, 15930, 16700, 8923, 15820, 18489, 18234, 15970, 18235, 18236, 16065 ) );
  }
}
add_action( \'pre_get_posts\', \'mm_search_filter\' );
虽然这看起来有点笨拙,但随着我们的封闭式内容页的增长,这个列表也会随之增长。所以我的问题是,有没有办法通过排除以某个字符串值开头的页面标题来做同样的事情?为了进一步澄清我的情况,我目前排除的所有页面都有以“下载-”开头的页面标题:

下载营销路线图下载社交媒体现场指南非常感谢您能解决此问题!

1 个回复
SO网友:Johansson

您可以使用查询帖子ID列表$wpdb 然后在你的过滤器中使用。下面是一个简单的示例:

function mm_search_filter( $query ) {

    // We will query a list of post IDs 
    // by using $wpdb
    global $wpdb;
    $post_ids = $wpdb->get_results("SELECT ID FROM wp_posts WHERE post_name IN \'download-\'");

    // Now, pass the array of post IDs in
    if ( 
        ! $query->is_admin && 
        $query->is_search && 
        $query->is_main_query() && 
        ! empty ( $post_ids )
    ) {
        $query->set( \'post__not_in\', $post_ids );
    }
}
add_action( \'pre_get_posts\', \'mm_search_filter\' );

结束

相关推荐

making a search.php query

我正在尝试创建一个自定义搜索结果页面。我希望一次有6篇帖子,然后我要添加一个加载更多的按钮,可以加载更多的6篇帖子,以此类推。我希望页面处于引导网格布局中。每行2个立柱(col-md-6)。使用下面的代码,网页甚至不会显示出来。我是否需要向我的函数添加任何内容。php来实现这一点?有人能帮我吗?提前谢谢。<?php get_header(); $the_query = new WP_Query( [ \'posts_per_page\' =>