您现在的位置是:首页 > 网站制作 > WordpressWordpress
6个实用的WordPress搜索代码片段
杰帅2023-08-26【Wordpress】人已围观
简介相对搜索基于字词直接匹配的日志,WordPress默认的搜索系统确实已经很了不起了,但毕竟还有许多有用的功能未能够被挖掘出来并为我们所用。 比较明显的一点就是,将范围缩小到分类或标签甚至是某一特定分类或标签之下进行搜索这一功能,未能够被充分的利用上。同样地,许多日志默认都是按照日期或者新旧 的排列次序显示出来的,若要论及用户体验,还是存在相当大的差距的,下面的5个搜索代码片段也许能帮助您。
相对搜索基于字词直接匹配的日志,WordPress默认的搜索系统确实已经很了不起了,但毕竟还有许多有用的功能未能够被挖掘出来并为我们所用。 比较明显的一点就是,将范围缩小到分类或标签甚至是某一特定分类或标签之下进行搜索这一功能,未能够被充分的利用上。同样地,许多日志默认都是按照日期或者新旧 的排列次序显示出来的,若要论及用户体验,还是存在相当大的差距的,下面的5个搜索代码片段也许能帮助您。
将指定的页面或者某分类下的日志从搜索结果中排除
下面的函数允许您将任何分类下的日志甚至是页面从搜索结果中排除掉。
function SearchFilter($query) {
if($query->is_search){
$query->set('cat','0,1');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
搜索特定的某个日志分类
这将从特定的分类中返回搜索结果:
function SearchFilter($query) {
if($query->is_search){
// Insert the specific categories you want to search
$query->set('cat', '8,9,12');
}
return $query;
}
add_filter('pre_get_posts','SearchFilter');
搜索某一特定的日志类型
仅搜索特定的日志类型,而将其他所有类型过滤掉。
function SearchFilter($query) {
if($query->is_search){
// Insert the specific post type you want to search
$query->set('post_type', 'feeds');
}
return $query;
}
// This filter will jump into the loop and arrange our results before they're returned
add_filter('pre_get_posts','SearchFilter');
高亮WordPress搜索关键词(使用JQuery)
在WordPress搜索结果页面高亮显示关键词。将下面这段函数放到主题的functions.php文件中:
function hls_set_query() {
$query = attribute_escape(get_search_query());
if(strlen($query) > 0){
echo '<script type="text/javascript">
var hls_query = "'.$query.'";
</script>';
}
}
function hls_init_jquery() {
wp_enqueue_script('jquery');
}
add_action('init', 'hls_init_jquery');
add_action('wp_print_scripts', 'hls_set_query');
再将下面这段代码放到主题的header.php文件中, 标签/head的前面:
<style type="text/css" media="screen">
.hls { background: #D3E18A; }
</style>
<script type="text/javascript">
jQuery.fn.extend({
highlight: function(search, insensitive, hls_class){
var regex = new RegExp("(<[^>]*>)|(\\b"+ search.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1") +")", insensitive ? "ig" : "g");
return this.html(this.html().replace(regex, function(a, b, c){
return (a.charAt(0) == "<") ? a : "<strong class=\""+ hls_class +"\">" + c + "</strong>";
}));
}
});
jQuery(document).ready(function($){
if(typeof(hls_query) != 'undefined'){
$("#post-area").highlight(hls_query, 1, "hls");
}
});
</script>
WordPress搜索页面关键词加亮(用PHP)
function search_word_replace($buffer){
if(is_search()){
$arr = explode(" ", get_search_query());
$arr = array_unique($arr);
foreach($arr as $v)
if($v)
$buffer = preg_replace("/(".$v.")/i", "<em>$1</em>", $buffer);
}
return $buffer;
}
add_filter("the_title", "search_word_replace", 200);
add_filter("the_excerpt", "search_word_replace", 200);
add_filter("the_content", "search_word_replace", 200);
上面的代码会给关键词添加标签,你可以给这个标签添加一些背景或者颜色实现高亮。
显示搜索结果条目数量
返回搜索结果数量。例如 – 对的搜索结果数量为 – 8 篇日志。
<h2 class="pagetitle">
Search Result for
<?php /* Search Count */
$allsearch = &new WP_Query("s=$s&showposts=-1");
$key = wp_specialchars($s, 1);
$count = $allsearch->post_count;
_e(''); _e('<span class="search-terms">');
echo $key; _e('</span>'); _e(' — ');
echo $count . ' '; _e('articles'); wp_reset_query();
?>
</h2>
多类型文章搜索
<form method="get" id="large-searchform" action="">
<span class="large-select-box">
<select name="post_type" class="large-select">
<option value="all" selected="">全部搜索</option>
<option value="post">文章</option>
<option value="img">图片</option>
</select>
</span>
<input type="text" name="s" class="large-input" id="large-input" required="">
<button type="submit" class="large-submit" id="large-submit"><i class="fa fa-search"></i></button>
</form>
很赞哦! ()
相关文章
随机图文
-
wp_reset_postdata 和 wp_reset_query 的作用与区别
什么时候使用wp_reset_query,什么时候用wp_reset_postdata? -
wordpress发布文章HTML标签被自动过滤掉该如何处理?
wordpress发布文章时很多html标签都会自动过滤掉,造成了文章中无法添加<style></style><script></script>等标签。那么该如何如何处理呢? 解决方法一: 将wp-includes文件夹下 -
WordPress 页面模板(Page Template)下拉列表不显示的原因及解决方法
WordPress 的自定义页面模板是一个非常强大好用的功能,使用它新建一些静态页面(Page),添加上一些数据调用的函数,再在网页上做一个导航连接到对应的页面就可以实现很多自定义的功 -
wordpress 上传的图片不显示的问题 base64,data:image/gif
文章评论
本站推荐
标签云
猜你喜欢
- WordPress函数the_author_posts_link()
- 出现MIME type (‘text/html’) is not a supported stylesheet MIME type错误的解决办法
- 解锁创意灵感:打造属于创意人士的WordPress网站
- WordPress初学者指南:如何打造你的第一个网站
- WordPress 函数:register_sidebar()创建主题侧边栏
- wordpress get_option()函数
- 我想做拉美市场,我该如何做西班牙语推广?
- 设置CloudFlare后显示“ERR_SSL_VERSION_OR_CIPHER_MISMATCH”解决办法
- 几种流行的SaaS建站平台系统
- WooCommerce与Shopify深度对比评测