是否可以在子菜單(在Wordpress中)的菜單中添加某種類,如「箭頭」或跨度? 似乎你可以做到這一點是使用JavaScript,但我想知道是否有PHP解決方案...PHP/Wordpress - 向父菜單添加箭頭
在WP 3.0中,我看到活動菜單上有他們的「父」或「祖先」類,但這隻適用於活動菜單,我也需要它用於非活動菜單
是否可以在子菜單(在Wordpress中)的菜單中添加某種類,如「箭頭」或跨度? 似乎你可以做到這一點是使用JavaScript,但我想知道是否有PHP解決方案...PHP/Wordpress - 向父菜單添加箭頭
在WP 3.0中,我看到活動菜單上有他們的「父」或「祖先」類,但這隻適用於活動菜單,我也需要它用於非活動菜單
這個功能真的應該在WordPress核心!
無論如何,我看了一下你在另一個答案的評論中發送的菜單模板源,並且發現了一個(非常冒險的)方法來添加帶有子項的菜單項的類。它基本上將默認walker的子類擴展爲默認行爲。這可能是最好的,如果你把它放在你的主題functions.php
。下面的代碼:
<?php
class Arrow_Walker_Nav_Menu extends Walker_Nav_Menu {
function display_element($element, &$children_elements, $max_depth, $depth=0, $args, &$output) {
$id_field = $this->db_fields['id'];
if (!empty($children_elements[$element->$id_field])) {
$element->classes[] = 'arrow'; //enter any classname you like here!
}
Walker_Nav_Menu::display_element($element, $children_elements, $max_depth, $depth, $args, $output);
}
}
?>
調用它,你需要當你調用在你的主題wp_nav_menu()
添加walker
說法,就像這樣:
<?php
wp_nav_menu(array('walker' => new Arrow_Walker_Nav_Menu, [other arguments...]))
?>
希望對你有用!我只是表面上測試過,但它似乎工作。讓我知道是否有任何邊緣情況下添加類失敗。
我不知道任何原生的WordPress支持,但您可以輕鬆地使用一些jQuery來做到這一點。
<script type="text/javascript">
$("#menu-id ul li:has(ul)").addClass("parent");
</script>
謝謝,我知道這一點。我想知道是否有辦法用PHP來做到這一點。 js方法的問題在於,如果菜單項的寬度可變,則在頁面加載過程中會出現小的「閃爍」 – Alex 2010-08-28 13:26:02
因此,您需要一種方法來修改WP在生成HTML時生成的HTML , 然後?有沒有內置的支持,或者你可以自定義模板? – Rup 2010-08-28 13:31:05
以及你可以得到整個菜單輸出(一個字符串)並修改它之前它得到迴應,但我不知道我可以改變那裏... 菜單模板在這裏:http://core.trac .wordpress.org/browser/trunk/wp-includes/nav-menu-template.php – Alex 2010-08-28 13:39:22
簡單而不起眼的方式來添加類的父主菜單是否有子菜單
而且風格
<style type="text/css">
.main-navigation .parent > a, .main-navigation .parent > a:hover {
background-image: url("images/arrow.png");
background-position: right center;
background-repeat: no-repeat;
}
</style>
如果你和我一樣,想添加在您的父菜單項中添加一個HTML箭頭,在Donald Harvey的客戶助理類中添加一條像這樣的線:
$element->title .= '<span class="caret down-caret">▼</span>';
你也可以直接將HTML添加到WP管理>菜單頁面中的菜單標籤,但這不是一個好辦法。
我在博客一點關於這個在這裏http://cameronnokes.com/blog/adding-an-icon-to
我不知道是什麼問題,但我們可以在菜單中通過css
這樣添加箭頭:
.menu li > a:after {
color: #fff;
content: ' ▾';
}
.menu li > a:only-child:after {
content: '';
}
只需粘貼這對你的CSS代碼,它會按預期工作。
.nav-menu li > a:after {
color: #888;
content: ' ▾';
}
.nav-menu li > a:hover:after {
color: #444;
content: ' ▾';
}
.nav-menu li > a:only-child:after {
content: '';
}
Ps。不要忘記設置頁面UTF-8
你在3.0中使用菜單生成器嗎?或者您是否使用網頁或類別進行導航?請詳細說明您如何獲取菜單並說明您的工作代碼,以便我們能夠更好地爲您提供幫助。 – kevtrout 2010-08-24 18:24:19
我使用內置的自定義菜單 – Alex 2010-08-24 18:40:31