A-A+

wordpress清理菜单链接中的域名和一些不必需的 class,ID

2013年09月19日 生活记录 评论 1 条 阅读 6891351 次

wordpress 默认的菜单会产生很多 id 和 class 在代码里,大多时候,这些都是不需要的。
那么我们可以在主题文件functions.php增加2个滤镜,以去除那些我们不需要的 class 和 ID。

addfilter('navmenucssclass' , 'specialnavclass' , 10 , 2);
function specialnavclass($classes, $item){
$currentandhome = array("current-menu-item", "menu-item-home", 'last');
$classes = arrayintersect($item->classes,$currentand_home);
//保留有需要的 class
return $classes;
}

addfilter('navmenuitemid' , 'specialnavitemid' , 10 , 2);
function special
navitemid($itemid, $item){
$item
id = ""; //去除 id
return $item_id;
}

不过尚有 class=”" 无法除去,主要是在核心代码里,class=”"是在附加过滤后面加上得,所以暂时还不可以通过更改滤镜的方法去除,但是 id 属性可以完全去除。

另外就是去除链接中的域名

addfilter('walkernavmenustartel' , 'yaowalkernavmenustartel' , 10 , 2);
function yaowalkernavmenustartel($itemoutput, $item){
//printr($item);
$home
url = homeurl();
$site
url = siteurl();
preg
match("/^(http:\/\/)?([^\/]+)/i",siteurl(), $matches);
$domain = $matches[0];
if( $domain == $home
url){
$replace = '';
}else{
$replace = strreplace($matches[0], '', siteurl());
}
$item->url = strreplace($homeurl,$replace,$item->url);

$attributes  = ! empty( $item->attr_title ) ? ' title="'  . esc_attr( $item->attr_title ) .'"' : '';
$attributes .= ! empty( $item->target )     ? ' target="' . esc_attr( $item->target     ) .'"' : '';
$attributes .= ! empty( $item->xfn )        ? ' rel="'    . esc_attr( $item->xfn        ) .'"' : '';
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : '';
$item_output = $args->before;
$item_output .= '<a'. $attributes .'>';
$item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
$item_output .= '</a>';
$item_output .= $args->after;
return $item_output;

}

addfilter('thepermalink', 'yaothepermalink');
function yaothepermalink (){
$yaopermalink = getpermalink();
$siteurl = homeurl();
echo strreplace($siteurl,'',$yao_permalink);
}

addfilter('getpermalink', 'yaogetpermalink');
function yaogetpermalink (){
$siteurl = homeurl();
return strreplace($siteurl,'', get_permalink());
}