Активное меню для произвольного типа записи в WordPress

Задача:

Как сделать активным пункт меню для произвольного типа поста, если находишься на детальной странице поста

При нажатии на пункт меню произвольного типа записей, например «Новости», этой кнопке назначается активный стиль. Но, как только переходим в сам пост, кнопка «Новости» перестает быть активной. 


Решение:
1 Добавим код в файл functions.php
function add_parent_url_menu_class( $classes = array(), $item = false ) {
  // Текущий URL
  $current_url = current_url();

  // Главная страница
  $homepage_url = '/';

  // Исключаем 404 и Главную страницу
  if( is_404() or $item->url == $homepage_url )
    return $classes;

  if ( get_post_type() == "free" ) // Тип поста
  {
    unset($classes[array_search('current_page_parent',$classes)]);
    if ( isset($item->url) )
      if ( strstr( $current_url, $item->url) )
        $classes[] = 'current-menu-item';
  }
  return $classes;
}

function current_url() {
  // Протокол
  $url = ( 'on' == $_SERVER['HTTPS'] ) ? 'https://' : 'http://';
  $url .= $_SERVER['SERVER_NAME'];

  // Порт
  $url .= ( '80' == $_SERVER['SERVER_PORT'] ) ? '' : ':' . $_SERVER['SERVER_PORT'];
  $url .= $_SERVER['REQUEST_URI'];
  return trailingslashit( $url );
}
add_filter( 'nav_menu_css_class', 'add_parent_url_menu_class', 10, 3 );


Создано: 13.11.2016
Просмотров: 4310