2013-10-24 2 views
0

я menuin WordPress, как это: -Wordpress: Как можно добавить интервал в меню

<div id="my_custom_class"> 
<ul class="my_custom_class"> 
    <li class="page_item"><a href="#">page_item</a> 
<ul class='children'> 
    <li class="page_item child"><a href="#">children</a></li> 
</ul> 
    </li> 
    <li class="current_page_item"><a href="#">current_page</a></li> 
    <li class="current_page_item"><a href="#">current_page</a></li> 
    <li class="current_page_item"><a href="#">current_page</a></li> 
</ul> 
</div> 

это меню будет создавать wheni использовать это: -

<? wp_nav_menu('menu=header'); ?> 

так что мне нужно, когда любой li есть ребенок, добавить <span></span> тег Befor тег как этот

<div id="my_custom_class"> 
    <ul class="my_custom_class"> 
     <li class="page_item"><span></span><a href="#">page_item</a> 
    <ul class='sub-menu'> 
     <li class="page_item child"><a href="#">children</a></li> 
    </ul> 
     </li> 
     <li class="current_page_item"><a href="#">current_page</a></li> 
     <li class="current_page_item"><a href="#">current_page</a></li> 
     <li class="current_page_item"><a href="#">current_page</a></li> 
    </ul> 

</div> 

, как я могу это сделать. by jquery

+0

Вы со ссылкой к элементам списка верхнего уровня? – Johan

+1

Вы можете попробовать сделать это с помощью «wp_nav_menu_objects» hook – Joren

+0

Я рекомендую вам рассмотреть решение на стороне сервера, как рекомендует @Joren. В WordPress использование jQuery ad-hoc может привести к непредвиденным результатам. –

ответ

1

Использование .prepend()

$('ul.my_custom_class li a').closest('li').prepend('<span></span>'); 

Live DEMO

Live DEMO

$('ul.my_custom_class li:has(ul)').prepend('<span></span>'); 
0

Если вы не готовы копаться в функциональности WordPress' вы можете впрыснуть <span> элементы с регулярным выражением:

(<li.*class="[^\"]*page_item[^\"]*"[^>]*>)(<a.*</a>[^<]+<ul)

Результат:

<div id="my_custom_class"> 
<ul class="my_custom_class"> 
<li class="page_item"><span></span><a href="#">page_item</a> 
<ul class='children'> 
<li class="page_item child"><a href="#">children</a></li> 
</ul> 
</li> 
<li class="current_page_item"><a href="#">current_page</a></li> 
<li class="current_page_item"><a href="#">current_page</a></li> 
<li class="current_page_item"><a href="#">current_page</a></li> 
</ul> 
</div> 

$1 = <li class="page_item">

$2 = <a href="#">page_item</a><ul

И так вы просто preg_replace с \1<span></span>\2 (вам нужно будет добавить обратную косую черту в </a>)

Example on php fiddle (предполагается, что я создал ссылку правильно лол)

Смежные вопросы