/ Сайтостроение / Wordpress / Манипуляции с меню

Манипуляции с меню

26.10.2017

472

Проводим различные эксперименты и манипуляции с меню.

Добавить пункт функцией

Добавляем произвольный пункт меню при помощи функции (!данный пример будет работать только с установленным плагином woocommerce)

add_filter( 'wp_nav_menu_items', 'my_account_loginout_link', 10, 2 );

function my_account_loginout_link( $items, $args ) {
if (is_user_logged_in() && $args->theme_location == 'header-menu') { //change your theme location menu to suit
$items .= '<li><a class="nav-link" href="'. wp_logout_url( get_permalink( wc_get_page_id( 'shop' ) ) ) .'">Sair</a></li>'; //change logout link, here it goes to 'shop', you may want to put it to 'myaccount'
}
elseif (!is_user_logged_in() && $args->theme_location == 'header-menu') {//change your theme location menu to suit
$items .= '<li><a class="nav-link" href="' . get_permalink( wc_get_page_id( 'myaccount' ) ) . '">Entrar</a></li>';
}
return $items;
}

В данном случае добавляется пункт ВХОД/ВЫХОД, но главное — принцип внедрения пункта меню.

Вывод цикла через функцию

function conclusion_while() {

global $post;
$args = array( 
  'posts_per_page' => 5
			 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :	setup_postdata($post);
  

echo '<a href="'.the_permalink().'">'.the_title().'</a>';
  
  
endforeach;
wp_reset_postdata();

}

add_action('body-after', 'conclusion_while');

Таким образом мы можем вывести произвольный цикл практически в любом месте на сайте, например в меню, но делать это нужно особым образом — об этом далее.

Последние записи в меню

Выводим пункт меню «Последние записи» с динамическими подпунктами записями

function conclusion_while($items, $args) {
$lastposts = "";  
if ($args->theme_location == 'header-menu') { //в каком меню выводить

global $post;
$args = array( 
  'posts_per_page' => 5
			 );
$myposts = get_posts( $args );
 
$lastposts .= '<li class="menu-item menu-item-has-children"><a href="/#">Последние записи</a>';
$lastposts .= '<ul class="sub-menu">';
  
foreach( $myposts as $post ) :	setup_postdata($post);
  
$lastposts .= '<li class="menu-item menu-item-type-custom menu-item-object-custom">';
$lastposts .= '<a href="';
$lastposts .= get_the_permalink();
$lastposts .= '">';
$lastposts .= get_the_title();
$lastposts .= '</a>';
$lastposts .= '</li>';
  
endforeach;

$lastposts .= '</ul>';
$lastposts .= '</li>';
wp_reset_postdata();
  
$items = $items . $lastposts;
  
}
  
return $items;

}

add_filter('wp_nav_menu_items', 'conclusion_while', 10, 2);

$lastposts = «»; — Обозначаем переменную. Без этого будет ошибка Array to string conversion

if ($args->theme_location == ‘header-menu’) { — этим условием мы локализуем данную функцию на конкретное меню. Если это условие не установить, то функция будет воздействовать на все существующие меню.

return $items; — команда return делает переменную глобальной, т.е. переменная выходит за рамки функции и значение переменной обновляется.

В данном случае новый пункт добавиться в конце, чтобы добавить его в начале — нужно переменные поменять местами: $items = $lastposts . $items;

Как внедрить любой произвольный пункт внутрь меню (не только в начало и в конец)

Альтернативный синтаксис вывода единицы цикла (на заметку):

$lastposts .= '<li class="menu-item menu-item-type-custom menu-item-object-custom">'
		. '<a href="'
		. get_the_permalink()
		. '">'
		. get_the_title()
		. '</a>'
		. '</li>';

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Автоматическое меню, оглавление, измененное состояние меню

Автоматическое меню, оглавление, измененное состояние меню

Меню с изменяемым состоянием может применяться для различных задач, в т.ч. для меню лэндинга или для оглавления длинной страницы. Такое меню состоит из хэш-ссылок для перемещения по самой странице. Смысл Читать далее »

Мобильное меню типа mmenu

Мобильное меню типа mmenu

Адаптируем меню под мобильную версию сайта. При этом необходимо учитывать особенности небольших экранов и конфигурировать под них структуру и стили меню. Функционал mmenu.js Подключаем стили и скрипты: <link rel="stylesheet" href="http://opttour.ru/wp-content/themes/tester/jquery.mmenu.css" Читать далее »

/
Меню для мобильной версии

Меню для мобильной версии


Deprecated: Function create_function() is deprecated in /home/htvtwmhs/public_html/wp-content/plugins/wp-spamshield/wp-spamshield.php on line 2033

Делаем простую адаптацию меню под мобильную версию, превращая в иконку, при нажатии на которую меню раскрывается. Трансформируем меню в иконку Стандартный код вывода меню <nav id="topmenu" role="navigation"> <?php wp_nav_menu( array( Читать далее »

/

Добавить комментарий

Пока нет комментариев. Будь первым!

Манипуляции с меню
Трекинг заказа
Рекомендации для васТрекинг заказаOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.