Wordpress Nav Menu - добавление условного пролета - PullRequest
1 голос
/ 18 января 2012

Есть ли у кого-нибудь рабочий пример меню Wordpress, выведенного вручную? в Кодексе , похоже, не работал, хотя мой кусок меню "Нижний колонтитул" не может быть таким сложным ...? Мне нужно добавить за пределами экрана в ссылки внешнего меню в целях доступности. У меня уже есть классы CSS; мне нужна конкретная разметка, добавленная через файл functions.php.

Базовый код, который я ищу (см. Элементы списка с внешним классом. Hrefs изменен на # для краткости кода, в реальной жизни они ссылаются вне сайта):

<ul id="menu-footer" class="menu">
    <li class="menu-item">
        <a href="#">About Us</a>
    </li>
    <li class="external menu-item">
        <a title="Link opens in a new window." target="_blank" href="#">Terms &amp; Conditions <span class="offscreen">Opens in a new window</span></a>
    </li>
    <li class="menu-item">
        <a href="#">Comments Policy</a>
    </li>
    <li class="external menu-item">
        <a title="Link opens in a new window." target="_blank" href="#">Privacy Statement<span class="offscreen">Opens in a new window</span></a>
    </li>
    <li class="menu-item">
        <a href="#">Contact Us</a>
    </li>
</ul>

Ответы [ 4 ]

1 голос
/ 24 января 2012

Пользовательский класс "Уокер"?

http://www.kriesi.at/archives/improve-your-wordpress-navigation-menu-output

0 голосов
/ 24 января 2012

Ответ: навигационное меню должно быть зарегистрировано и назначено теме для примера Codex для работы.DUH!

в functions.php:

// default register any navigation menus
register_nav_menus(
    array(
      'footer' => 'Footer Menu',
      'links' => 'Links Menu'
    )
);

Назначение меню (ей) для вашей темы:

assign a menu to your theme

Назад в функцииphp:

function accessibleAnchors($menu_name, $link_after = NULL){
    if ( ( $locations = get_nav_menu_locations() ) && isset( $locations[ $menu_name ] ) ) {
        $menu = wp_get_nav_menu_object( $locations[ $menu_name ] );

        $menu_items = wp_get_nav_menu_items($menu->term_id);

        $menu_list = '<ul id="menu-' . $menu_name . '" class="menu">';

        foreach ( (array) $menu_items as $key => $menu_item ) {
            // uncomment next line to see all array values
            // print_r($menu_item);
            $linkText = $menu_item->title;
            $url = $menu_item->url;
            $target = $menu_item->target;
            $titleAttr = $menu_item->attr_title;
            // hard-coding the first & only CSS class here, you could loop through others
            $cssClass = $menu_item->classes[0];

            if($target == '_blank'):
               $titleAttr = " title=\"$titleAttr\"";
               $span = "<span class=\"offscreen\"> Opens in a new window</span>";
            else:
               $span = "";
            endif;

            $menu_list .= '<li class="menu-item '.$cssClass.'"><a href="' . $url . '"'.$titleAttr. '>' . $linkText . $span . $link_after .'</a></li>';
        }
        $menu_list .= '</ul>';
    }
    return $menu_list;
}

Теперь вызовите функцию в вашем шаблоне:

<?php echo accessibleAnchors('footer'); ?>

Boom.

0 голосов
/ 18 января 2012

Вариант 1:

Предполагая, что вы создали свое меню, используя Внешний вид -> Меню, вы можете попробовать следующее.

  1. Перейти к виду-> Меню
  2. Нажмите «Параметры экрана» (вверху справа) на экране, убедитесь, что выбран «Классы CSS».

После того, как вы выполнили вышеуказанные шаги,каждый из пунктов меню теперь будет иметь текстовое поле «Классы CSS», показывающее, где вы можете индивидуально назначать классы CSS (взгляните на экран).

Опция 2:

Вы также можете попробовать http://codex.wordpress.org/Function_Reference/wp_nav_menu#Adding_Conditional_Classes_to_Menu_Items

<?php
add_filter('nav_menu_css_class' , 'special_nav_class' , 10 , 2);
function special_nav_class($classes, $item){
     if(is_single() && $item->title == "Blog"){ //Notice you can change the conditional from is_single() and $item->title
             $classes[] = "special-class";
     }
     return $classes;
}
?>

Вариант 3:

При условии, что вышеуказанные 2 опции не работают, у вас есть 3-йвозможность использования jQuery.

HTH

enter image description here

0 голосов
/ 18 января 2012

Вам нужно начать с wp-includes / nav-menu-template.php, чтобы скопировать и вставить функцию в functions.php вашей темы и изменить имя или использовать фильтр в functions.php для изменения выбранной разметкикрюк.И, возможно, посмотрите также в wp-includes / nav-menu.php.

Извините, я не могу предоставить более подробную информацию.

...