WordPress的搜索结果如果不经过处理,默认情况下是会包含所有类型的文章,不管是page页面还是post文章都会显示,而我们有些时候就需要隐藏某些内容来达到默写目的,这里什么目的就不明说了。

如果想要实现上面的功能,除了自建查询函数之外,还有一种通用的做法如下:

代码方面主要用到了pre_get_posts过滤器,而这个过滤器的作用就是在执行wp_query函数之前运行,同时站点之前的文章也介绍过相关函数,但是一笔带过,该过滤器具体描述如下:

  • pre_get_posts 函数介绍
  • 函数用法
  • Fires after the query variable object is created, but before the actual query is run.

  • 功能介绍
  • Note: If using conditional tags, use the method versions within the passed instance (e.g. $this->is_main_query() instead of is_main_query()). This is because the functions like is_main_query() test against the global $wp_query instance, not the passed one.

  • 参数介绍
  • $query
    (WP_Query) The WP_Query instance (passed by reference).
  • 返回值
  • 暂无数据
  • 如果你不能理解是什么意思,你可以理解为根据指定条件修改查询参数的相关设定,比如说常规查询的主函数显示文章数量是50个,但是你想要在搜索结果页面显示文章数量为20个,那么这样的情况下,不考虑自建查询函数,通过下面的代码可以显示该目的:

    通过上面的两个例子,如果你了解wp_query主循环的话,那么可以通过这个函数直接写出千奇百怪的情况来实现不同目的,本文标题中还说到了排除页面,言外职业就是仅仅获取文章类型即可(不考虑附件、草稿等情况):

    总而言之好好利用这个函数,可以让你的页面千变万化,通过switch丰富展示情况,至于如何展示就看大家的能力了。