Wordpress: Добавить javascript:void(0); к пункту меню вместо ссылки?
Я хочу добавить javascript:void(0);
к пункту меню вместо #
, но WordPress не принимает JavaScript в ссылках.
Сейчас я рассматриваю возможность замены #
на javascript:void(0);
с помощью фильтров, но не могу найти подходящий фильтр для этой задачи.
Может кто-нибудь подсказать, какой фильтр можно использовать для этого?
Примечание: Я знаю, что это можно сделать с помощью javascript/jQuery, но это нужно для SEO, поэтому необходимо сделать это на стороне сервера с помощью PHP, чтобы выводить правильный HTML для Google Spider и избежать проблемы дублирования URL.
Я не уверен, как это влияет на SEO, но просто отвечая на этот вопрос:
Вы не можете сохранить пункт меню с javascript:void(0);
, потому что WordPress фильтрует URL с помощью функции esc_url()
, удаляя нежелательные значения. И всё это происходит в классе Nav Walker. Поэтому вам нужно изменить URL после того, как WordPress завершит фильтрацию и вернёт окончательный безопасный HTML.
Вы можете использовать фильтр walker_nav_menu_start_el
, если ваша тема не имеет пользовательского класса навигационного меню (walker) ИЛИ если этот фильтр присутствует в классе walker.
Пример:
add_filter('walker_nav_menu_start_el', 'wpse_226884_replace_hash', 999);
/**
* Замена # на javascript
* @param string $menu_item HTML пункта меню
* @return string HTML пункта меню
*/
function wpse_226884_replace_hash($menu_item) {
if (strpos($menu_item, 'href="#"') !== false) {
$menu_item = str_replace('href="#"', 'href="javascript:void(0);"', $menu_item);
}
return $menu_item;
}

Простой способ
Первое, что вам нужно сделать, это добавить новый пункт в меню. Вы можете сделать это, перейдя в раздел "Внешний вид" » "Меню". Вам нужно добавить пользовательскую ссылку, поэтому задайте ей желаемое название. В поле URL введите символ #. После этого нажмите кнопку "Добавить в меню". Сохраните меню, как только эта пользовательская ссылка будет добавлена. Добавление пользовательской ссылки в меню без URL
Теперь нажмите на стрелку раскрывающегося списка рядом с этой пользовательской ссылкой, чтобы отредактировать этот пункт меню. Удалите символ # из поля URL и сохраните меню. Если вы перейдете на свой сайт, то увидите пункт меню без ссылки. Вы можете добавить подменю к этому пункту и связать их с любой страницей или пользовательской ссылкой по вашему выбору. Удаление символа # и создание меню без какой-либо ссылки.
Подробнее об этом можно узнать по ссылке ниже.
