WordPress搜索返回错误结果

时间:2015-01-26 作者:Bassem

我限制在我的WP博客中的搜索只能通过添加这一行在帖子中进行

<?php if (is_search() && ($post->post_type==\'page\')) continue; ?>
因此,任何来自静态页面的结果都将被排除在外,这很好,但如果我有一篇文章,它包含以下内容,我会遇到一个问题

测试岗;

[视频宽度=“320”高度=“240”mp4=”http://localhost/blog/wp-content/uploads/2015/01/a1.mp4“海报=“1。jpg“][/视频]

 ;

如果我试着用这个关键字“post”搜索,它会返回这个带有视频标签的帖子,并且”poster“属性,这没有意义,因此我如何在搜索结果中排除媒体标签的属性。

1 个回复
SO网友:David Gard

原因是WordPress使用LIKE %post%, 意味着任何包含post 在它的标题或content 已找到。

您可以使用posts_where 行动挂钩。

add_action( \'posts_where\', \'my_alter_search_where\' );
function my_alter_search_where( $where ){

    global $wpdb;

    if (is_search()) :

        $where.= " AND $wpdb->posts.post_content NOT LIKE \'%poster=%\'";

    endif;

}
这里唯一需要注意的是,如果你的帖子内容同时包含%post%poster="% 由于存在两种不同情况,因此不包括在内。有很多方法可以解决这个问题,但我需要更多地了解您的查询,所以如果这个答案可以接受,我建议将其作为一个单独的问题发布。

结束

相关推荐

排除Plugins.php HTTP安装路径与单个插件的HTTPS的故障

我正在尝试对插件中显示的安装路径进行故障排除。php作为我在自己的网站上安装的插件,我最初并没有编写该插件。当我的站点的其余部分是HTTPS时,此插件引用和安装的所有资源都会显示为混合内容HTTP。我一直在玩弄下面的代码段,但它似乎没有起到什么作用,也没有解决问题。有人能指出我遗漏了什么吗? /** * registers scripts and stylesheets */ public function register_assets() {&