如何搜索帖子内容和附件名称

时间:2013-05-17 作者:lekso

我需要扩展标准的WP搜索功能,以便搜索词也应用于附加到帖子的文件。换句话说,如果用户在“年度报告”中键入,那么搜索结果将包括所有在内容和附加文件名中包含此搜索字符串的页面和帖子?

我当前的代码是:

$search_list = array();

$search_query[\'s\'] = $_GET[\'find\'];
$search_query[\'post_type\'] = array(\'post\', \'page\');
$search_query[\'post_status\'] = \'publish\';
$search_query[\'posts_per_page\'] = \'2\';
$search_query[\'paged\'] = get_query_var(\'paged\');
$search_query[\'nopaging\'] = false;

$search = new WP_Query($search_query);
非常感谢。

1 个回复
SO网友:s_ha_dum

如果你看看$wpdb->posts 在数据库中的表中,您会注意到,文件名(减去文件类型结尾)用于post_title 用于附件。这意味着,如果可以使用搜索功能搜索附件,则可以有效地搜索文件名,默认搜索(几乎)已经做到了这一点。

在您的代码中,这两行代码对您不利。。。

$search_query[\'post_type\'] = array(\'post\', \'page\');
$search_query[\'post_status\'] = \'publish\';
。。。因为附件是\'post_type\' == \'attachments\'\'post_status\' == \'inherit\'. 如果你把第二个改成。。。

$search_query[\'post_status\'] = array(\'publish\',\'inherit);
。。。先别说了,你应该让它工作。那就是。。。

$search_query[\'s\'] = \'annual report\';
$search_query[\'post_status\'] = array(\'publish\',\'inherit\');
$search = new WP_Query($search_query);
var_dump($search);
您还可以使用…更改全局搜索。。。

function search_attach_names_wpse_99832($qry) {
  if($qry->is_search()) {
    $qry->set(\'post_status\',array(\'publish\',\'inherit\'));
  }
}
add_action(\'pre_get_posts\',\'search_attach_names_wpse_99832\');

结束

相关推荐

AJAX search as you type?

我正在尝试用搜索栏实现一种“键入时搜索”的功能。本质上,我希望用户开始键入,在每个键之后发出某种ajax请求,然后在键入时用“相关搜索”填充div。有什么好的插件吗?还是我应该从头开始?