Как в меню вордпресс удалить ссылку у активного пункта меню?

Решено

Для СЕО оптимизации моего сайта я хочу что бы удалялась ссылка у пункта меню, в котором мы сейчас находимся. Меня я сделал через стандартный функционал вордпресс, с помощью функции wp_nav_menu($args);
Удалить ссылки с помошью jquery  не вариант потому что это уже будет происходить после загрузки страницы, а поисковики к этому времени уже скушают ссылку.

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

Добавьте следующую функцию в файл functions.php

 function wp_nav_menu_extended($args = array()) {
 $_echo = array_key_exists('echo', $args) ? $args['echo'] : true;
 $args['echo'] = false;
$menu = wp_nav_menu($args);
$menu = simplexml_load_string($menu);
if (array_key_exists('xpath', $args)) {
 $xpath = $args['xpath'];
 } else {
 $xpath = '//li[contains(@class, "current-menu-item") or contains(@class, "current_page_item")]';
 }
$current = $menu->xpath($xpath);
if (!empty($current)) {
 foreach($current as $key => $value){
 $text_node = (string) $current[$key]->children();
unset($current[$key]->a);
$element_name = $args['replace_a_by'] ? $args['replace_a_by'] : 'span';
 $current[$key]->addChild($element_name, $text_node);
 }
 }
$xml_doc = new DOMDocument('1.0', 'utf-8');
 $menu_x = $xml_doc->importNode(dom_import_simplexml($menu), true);
 $xml_doc->appendChild($menu_x);
$menu = $xml_doc->saveXML($xml_doc->documentElement);
if ($_echo) {
 echo $menu;
 } else {
 return $menu;
 }
 }
 

Теперь выводите ваше меню не с помощью wp_nav_menu($args); а с помощью wp_nav_menu_extended($args)

wp_nav_menu_extended($args) — работает полностью аналогичным образом как и wp_nav_menu($args); , и поддерживает все ее параметры. Только в результате выдает меню без ссылки у активного пункта меню.

Заменяет ссылку на тег <span>

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

Интересное решение..

А как сделать что-то подобно только для:

  1. произвольного меню в сайдбаре?
  2. для записей (например, я открыл запись/статью и эта же запись встречается в боковой колонке/сайдбаре в последних записях или популярных)?
Добавить Комментарий

Ваш ответ

Размещая свой ответ, вы соглашаетесь с правилами сайта.