Я строю горизонтальное меню, и некоторые записи в этом меню будут иметь выпадающие меню (подменю), а некоторые - нет. Те, которые имеют подменю, на самом деле не являются страницами. Они просто предназначены для руководства по выпадающим спискам.
Например, скажем, горизонтальное меню выглядит следующим образом:
Главная | О нас | Продукты | Направления | контакт
А пункт «products» li должен иметь 3 страницы, связанные в вертикальном выпадающем списке под ним, так что сами «products» на самом деле не представляют страницу, как я могу это сделать в WP?
(Я использую WP в качестве CMS со статическими домашними и внутренними страницами. Я создаю свои собственные шаблоны, стилизую меню в CSS, затем регистрирую меню в functions.php и вызываю их в шаблонах.) В WP вы добавляете записи в меню через список страниц или по пользовательским ссылкам. Но я не хочу, чтобы «продукты» были связаны. Если я не добавлю ссылку на пользовательскую ссылку, она не позволит мне добавить ее в меню.
Это выполнимо через меню администратора или мне нужно подойти к этому как-то иначе?
Спасибо за любую помощь!
Ответы:
У меня есть несколько идей:
#
которой ничего не вернетсяисточник
href=""
поскольку большинство пользователей тактильных устройств не смогут увидеть раскрывающееся меню без использования JSwp_list_pages()
, а неwp_nav_menu()
Самый простой способ сделать это без плагина или чего-либо еще - это использовать функцию «Меню» в WordPress. Вот инструкции для WordPress 4.8:
источник
Самый простой метод, который я придумал, - создать элемент пользовательской ссылки со значением URL ссылки
#
. Это отправляет пользователя в пустой хеш на той же странице, поэтому в основном ссылки нигде.Тем не менее, есть некоторые побочные эффекты использования пустых хэшей для ссылок-заполнителей. Ссылка будет по-прежнему отображаться и вести себя как ссылка, поэтому она может запутать пользователя, когда он нажимает на ссылку, которая кажется ссылкой, но ничего не происходит. Другой эффект заключается в том, что нажатие на пустую ссылку хеша переопределит любой существующий хеш, отправляя пользователя в верхнюю часть страницы. Это может не беспокоить меню, находящееся в верхней части страницы, но это довольно неприятно, когда страница неожиданно перепрыгивает, когда вы этого не ожидаете, особенно если это меню нижнего колонтитула.
Решение состоит в том, чтобы объединить метод пустого хеша с куском кода, чтобы определить, когда в меню используются пустые ссылки на хеш, и полностью удалить
href
атрибут из этой ссылки.a
Элемент безhref
атрибута является правильным HTML 5 Способом создания в ссылке заполнителя.источник
Это сработало для меня:
Я активировал CSS-классы в Меню> Параметры экрана> CSS-классы. Затем я дал элемент меню, который хотел деактивировать класс ".nolink", и добавил этот фрагмент кода на свою пользовательскую панель CSS:
источник
#
в качестве цели ссылки, а затем применение собственного CSS-класса для стилизации, на мой взгляд, является наименее хакерским решением. Темpointer-events: none
не менее, настройка не имеет большого смысла для меня, так как это нарушит подменю. Не могли бы вы пояснить, почему вы устанавливаете этот атрибут?Используя подход PHP, я добавил этот код в functions.php:
Это заменит ссылку на элемент span для меню пункта с post_name == "contact", что я и искал. Вы можете легко изменить это, чтобы проверить заголовок меню или идентификатор, или добавить некоторый код, чтобы проверить, есть ли у него какие-либо дочерние элементы меню и т. Д.
источник
Я решил так: в header.php (вашей темы) я искал:
и заменено на:
Проще говоря, этот скрипт проверяет, заканчивается ли его родительская ссылка на «#», в этом случае он добавляет элемент span вокруг содержимого тега A, который отключает щелчок.
Надеюсь, это поможет :-)
источник
Как и другие здесь предложили, вы можете создать пользовательский элемент меню ссылки с # в качестве его URL. Затем сотрите #, как только он будет добавлен в меню. И, наконец, вы можете использовать это простое регулярное выражение, чтобы убрать реальный тег из этих ссылок.
источник
Это удалит щелчок (и удалит элемент). Таким образом, вам не нужно использовать # пользовательских ссылок в вашем меню.
источник
Следует понимать, что это старая ветка, но для быстрого и грязного способа иметь ссылку в Wordpress нужно сделать URL ссылки следующим образом:
#_
Обратите внимание на подчеркивание после хэштега. Таким образом, если ваше меню прокручивает страницу вниз (т. Е. Исправлено), вы не переходите вверх страницы при нажатии на нее и не требует никаких плагинов / скриптов.
источник
Я понимаю, что опаздываю в игре, но вот два метода, которые я использую:
1) Сделайте родительский пункт меню дубликатом первого подпункта и измените его метку. Например, если первым элементом в разделе «Продукты» является «Продукт 1», используйте «Продукт 1» в качестве родительского пункта меню, а затем измените его метку на «Продукты». Таким образом, «Продукты» и «Продукт 1» приведут к странице «Продукт 1».
2) Добавьте перенаправление, чтобы страница «Продукты» была перенаправлена на продукт 1. Преимущество этого параметра заключается в том, что он позволяет создать пустую страницу «Продукты» для создания иерархического списка страниц, но если кто-то пытается перейти к пустым продуктам. страница, они будут перенаправлены.
источник
Перейдите в Внешний вид, затем нажмите на меню. В этом разделе перейдите под структуру меню и нажмите на стрелку вниз, чтобы развернуть страницу, и вы увидите окно с надписью отключить ссылку. Установите этот флажок и сохраните.
источник
Добавьте этот фильтр:
Отредактируйте span CSS, чтобы получить тот же стиль
<a>
, что и не забывайтеcursor: context-menu;
.источник
Создайте пункт меню «Пользовательские ссылки» и добавьте «javascript :;» (без кавычек) для поля URL. Это лучший способ, чем использовать "#", потому что при нажатии не будет прокручиваться ваша страница вверх.
источник
Начиная с 1/2019, решение, которое создает правильный HTML5, заключается в следующем.
Это создаст навигацию верхнего уровня,
<a>Menu</a>
которая является правильным способом представления ссылки, не нажимаемой кнопкой мыши.источник
Вы можете отключить события в
<a>
теге для всех пунктов меню первого уровня, используя чистый CSS..main-menu
класс может иметь другое имя в соответствии с названием вашего меню.источник
Гораздо проще найти решение по другому вопросу:
Меню администратора - выделите меню верхнего уровня на странице подменю (без отображения подменю)
Ищите ответ Аскелона. Работа отлично, без необходимости делать preg_replaces или jquery.
источник