Активное меню для произвольного типа записи в 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 );
Продолжая использовать веб- сайт beta-code.ru, вы даете согласие на обработку файлов cookie, пользовательских данных (сведения о местоположении; тип и версия ОС; тип и версия Браузера; тип устройства и разрешение его экрана; источник откуда пришел на сайт пользователь; с какого сайта или по какой рекламе; язык ОС и Браузера; какие страницы открывает и на какие кнопки нажимает пользователь; ip-адрес) в целях функционирования сайта, проведения ретаргетинга и проведения статистических исследований и обзоров. Если вы не хотите, чтобы указанные данные обрабатывались, покиньте сайт.
Принять