2
我有一個使用wp_nav_menu()構建菜單的wordpress主題。我在這個菜單中有一個自定義菜單項,可以進入非標準的WordPress頁面。有沒有一種方法可以根據url字符串中的匹配條件將此導航項目設置爲當前狀態?wordpress菜單中的自定義活動菜單項
感謝
我有一個使用wp_nav_menu()構建菜單的wordpress主題。我在這個菜單中有一個自定義菜單項,可以進入非標準的WordPress頁面。有沒有一種方法可以根據url字符串中的匹配條件將此導航項目設置爲當前狀態?wordpress菜單中的自定義活動菜單項
感謝
您可以使用在WordPress中nav_menu_css_class實現你之後的結果。使用這個鉤子你可以改變一個可以應用到菜單的CSS類的數組。
add_filter('nav_menu_css_class', 'add_parent_url_menu_class', 10, 2);
function add_parent_url_menu_class($classes = array(), $item = false) {
// Get current URL
$current_url = current_url();
// Get homepage URL
$homepage_url = trailingslashit(get_bloginfo('url'));
// Exclude 404 and homepage
if(is_404() or $item->url == $homepage_url) return $classes;
if (strstr($current_url, $item->url)) {
// Add the 'parent_url' class
$classes[] = 'parent_url';
}
return $classes;
}
function current_url() {
// Protocol
$url = ('on' == $_SERVER['HTTPS']) ? 'https://' : 'http://';
$url .= $_SERVER['SERVER_NAME'];
// Port
$url .= ('80' == $_SERVER['SERVER_PORT']) ? '' : ':' . $_SERVER['SERVER_PORT'];
$url .= $_SERVER['REQUEST_URI'];
return trailingslashit($url);
}
這種方法會忽略404個頁面或站點的根目錄,但類別中,如果當前的URL菜單項URL匹配添加到菜單項。
燁)釘它 –
您可以通過更改$ current_url避免current_url功能完全:$ current_url = trailingslashit(get_site_url(NULL,$ _ SERVER [ 'REQUEST_URI']) ); –