A-A+

wordpress add_filter的实战应用

2015年03月09日 PHP开源系统 暂无评论 阅读 20 views 次

一个简洁的页面是SEO的基础,WordPress不少函数调用时会徒增一些无用代码,比如显示页面列表函数<?php wp_list_pages(); ?>,显示分类列表函数<?php wp_list_categories();?> 下面是分类列表函数默认的HTML代码

<li><a href="#" title="#">一级分类</a></li>
<li><a href="#" title="#">一级分类</a>
<ul class="children">
<li>
<a href="#" title="#">二级分类</a>
</li>
</ul>
</li>

实际上,普通的列表只需要<li>……</li>就可以了,不需要class,不需要title,即使从用户体验角度考虑,只需要留着当前分类current-cat即可。在functions.php文件中加入以下代码:

//删除无用的分类列表代码
function replace_categorylist($content){
$patterns[0] = "/\s?cat-item-?\d?\s?/";
$patterns[1] = "/ class=\"\"/";
$patterns[2] = "/ title=\".*\"/";
$content = preg_replace($patterns, "", $content);
return ($content);
}
add_filter("wp_list_categories","replace_categorylist");

最后一行 add_filter(‘wp_list_categories’,’replace_categorylist’);

wp_list_categories 即为我们要替换的函数对象,如果要替换 页面列表函数 生成的代码,则把这个参数改成 wp_list_pages

replace_categorylist 一看就知道它是自定义函数的函数名

更多用法参考 add_filter 函数

网上有人是这样去除wp_nav_menu的代码的,其原理跟上面相同,可以参考下

//remove uselsess navmenuclasses by liangsandian.com
function replace_useless_navmenuclass($content){
$patterns[0] = "/id=\"menu-item-\d{1,2}\"\s/";
$patterns[1] = "/\/";
$patterns[2] = "/\<\/div\>/";
$patterns[3] = "/\sid=\"menu-mainnav\"\sclass\=\"menu\"/";
$patterns[4] = "/menu-item(-[a-z0-9]*)*\s?/";
$patterns[5] = "/\sclass\=\"\s*\"/";
$patterns[6] = "/\sid\=\"menu-navmenu\"\sclass\=\"menu\"/";
$content = preg_replace($patterns, "", $content);
$content = preg_replace("/\s?current(-\w*)*\s*/", "current", $content);
$content = preg_replace("/\w*current\w*/", "current", $content);
return ($content);
}
add_filter("wp_nav_menu","replace_useless_navmenuclass",6);

原文地址 http://www.sjyhome.com/wordpress/add_filter-use-one.html

标签:

给我留言