我限制在我的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“属性,这没有意义,因此我如何在搜索结果中排除媒体标签的属性。
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="%
由于存在两种不同情况,因此不包括在内。有很多方法可以解决这个问题,但我需要更多地了解您的查询,所以如果这个答案可以接受,我建议将其作为一个单独的问题发布。