2014-01-17 3 views
0

У меня есть навигатор боковой панели внутри шаблона в Wordpress. Я использую CSS, чтобы скрыть элементы subnav <li> и использовать jQuery для переключения их видимости. Это работает вне WP, но не внутри шаблона.Toggle wordpress subnav sidebar items

Вопрос в том, как/где внедрить JS (уже пробовавший нижний колонтитул/заголовок), чтобы эта работа работала.

Это, как его должен работать: http://jsfiddle.net/MLUb8/

WP код:

<div class="l-sidebar at_left"> 
    <div class="l-sidebar-h i-widgets"> 
     <!--IF IS PAGE--> 
     <?php if (is_page()) { ?> 
      <!--SHOW ALL SUBPAGES IN UNORDERED LIST--> 
      <ul><?php 
       if($post->post_parent){ 
        $children .= wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=1"); 
       } 
       else{ 
        $children = '<li><a href="'.get_permalink($post).'">'.$post->post_title.'</a></li>'; 
        $children .= wp_list_pages("title_li=&child_of=".$post->ID."&echo=1"); 
       } 
       echo $children; ?> 
      </ul> 
     <?php } ?> 
    </div> 
</div> 

СТАВШЕГО HTML:

<li class="page_item page-item-3671 page_item_has_children current_page_item"> 
    <a href="http://test.html">Executive Team</a> 
    <ul class="children"> 
     <li class="page_item page-item-3791"> 
      <a href="test.html">Board of Directors</a> 
     </li> 
     <li class="page_item page-item-3771"> 
      <a href="test.html">Management</a> 
     </li> 
    </ul> 
</li> 

JQuery из скрипки:

$(document).ready(function() { 
$("ul li.page-item-3791, ul li.page-item-3771").hide(); 
$("li.current_page_item").click(function() { 
    $('.page_item .page-item-3791, ul li.page-item-3771').slideToggle('fast'); 
    return false; 
}); 

}) ;

+0

Учитывая, что ваш код завернут в document.ready, он может идти куда угодно. Добавьте его в шаблон или используйте расширение WP, чтобы включить его. – isherwood

+0

Я попытался добавить его на страницу, но не работает для ссылок. – Matt

+0

Это поможет, если вы покажете отображаемый HTML. jQuery не волнует, как выглядит ваш PHP. – isherwood

ответ

1

$("#menu-item") не существует в вашем примере HTML. Вы можете:

$('.children').hide(); 

$('.page_item_has_children').click(function() { 
    $(this).find('.children').slideToggle(); 
}); 
+0

Я немного изменил код в jsfiddle (http://jsfiddle.net/MLUb8/4) и теперь управляю конкретными навигационными элементами в определенных классах. Кажется, я не могу заставить код работать на сайте Wordpress, но он явно работает правильно в скрипке. Есть идеи? – Matt

+0

Не без понятия, что вы пробовали. – isherwood

+0

Кроме того, я удалил «medium» из вашего кода выше, потому что, насколько я могу судить, он ничего не делает. Я не думаю, что это допустимый аргумент (если вы не определили его где-то), и по умолчанию это примерно такая скорость. – isherwood

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