Wordpress: Добавить javascript:void(0); к пункту меню вместо ссылки?

17 мая 2016 г., 15:29:29
Просмотры: 16K
Голосов: 2

Я хочу добавить javascript:void(0); к пункту меню вместо #, но WordPress не принимает JavaScript в ссылках. Сейчас я рассматриваю возможность замены # на javascript:void(0); с помощью фильтров, но не могу найти подходящий фильтр для этой задачи.

Может кто-нибудь подсказать, какой фильтр можно использовать для этого?

Примечание: Я знаю, что это можно сделать с помощью javascript/jQuery, но это нужно для SEO, поэтому необходимо сделать это на стороне сервера с помощью PHP, чтобы выводить правильный HTML для Google Spider и избежать проблемы дублирования URL.

4
Комментарии

Зачем вам это нужно?

Sumit Sumit
17 мая 2016 г. 15:39:14

Пожалуйста, уточните, вы хотите изменить конкретный пункт меню или все из них?

Max Yudin Max Yudin
17 мая 2016 г. 15:53:44

любая ссылка, содержащая #

user3114253 user3114253
17 мая 2016 г. 17:02:15

@Sumit SEO-команда хочет, чтобы...

user3114253 user3114253
17 мая 2016 г. 17:02:49
Все ответы на вопрос 2
2

Я не уверен, как это влияет на 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;
}
17 мая 2016 г. 18:04:21
Комментарии

Это просто идеально :)

user3114253 user3114253
18 мая 2016 г. 10:27:04

Важное замечание для новичков в WordPress (как и я): изменения нужно вносить в файл functions.php вашей активной темы (/wp-content/themes/yourthemename).

Kirk Hammett Kirk Hammett
27 мар. 2017 г. 16:31:55
0

Простой способ

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

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

Подробнее об этом можно узнать по ссылке ниже.

http://www.wpbeginner.com/beginners-guide/how-to-add-titles-in-wordpress-menu-without-linking-to-a-page/

17 мая 2016 г. 21:08:06