上次说到去除一些不必需的 class 和 ID, 从上图看出,这些 domain name 似乎也是不必须的,如果像下图:
这样会不会更好呢,下面的代码可以实现这个效果。
add_filter('walker_nav_menu_start_el' , 'yao_walker_nav_menu_start_el' , 10 , 2); function yao_walker_nav_menu_start_el($item_output, $item){ //print_r($item); $home_url = home_url(); $site_url = site_url(); preg_match("/^(http:\/\/)?([^\/]+)/i",site_url(), $matches); $domain = $matches[0]; if( $domain == $home_url){ $replace = ''; }else{ $replace = str_replace($matches[0], '', site_url()); } $item->url = str_replace($home_url,$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; } add_filter('the_permalink', 'yao_the_permalink'); function yao_the_permalink (){ $yao_permalink = get_permalink(); $site_url = home_url(); echo str_replace($site_url,'',$yao_permalink); } add_filter('get_permalink', 'yao_get_permalink'); function yao_get_permalink (){ $site_url = home_url(); return str_replace($site_url,'', get_permalink()); }