Wordpress: ¿Cómo agregar javascript:void(0); a un enlace de menú?
Quiero agregar javascript:void(0);
a un elemento de enlace del menú en lugar de #
pero no acepta ningún código JavaScript.
Ahora estoy pensando en reemplazar #
con javascript:void(0);
usando filtros, pero no he podido encontrar el filtro adecuado para esta tarea.
¿Alguien puede decirme qué filtro se puede usar para esto?
Nota: Sé que esto se podría hacer con javascript/jQuery pero es para propósitos de SEO, así que debo hacerlo con PHP en el servidor y renderizar el HTML correcto para el rastreador de Google, para evitar problemas de URLs duplicadas.
No estoy seguro de cómo afecta al SEO, pero solo para responder esta pregunta:-
No puedes guardar un elemento de menú con javascript:void(0);
porque WordPress filtra la URL usando la función esc_url()
, eliminando así valores no seguros. Todo esto ocurre en la clase Nav Walker. Por lo tanto, necesitas modificar la URL después de que WordPress haya terminado con el filtrado y devuelva el HTML final seguro.
Puedes usar el filtro walker_nav_menu_start_el
si tu tema no tiene una clase personalizada de nav menu walker O si tiene este filtro en la clase walker.
Ejemplo:-
add_filter('walker_nav_menu_start_el', 'wpse_226884_replace_hash', 999);
/**
* Reemplazar # con js
* @param string $menu_item HTML del elemento
* @return string HTML del elemento modificado
*/
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;
}

Método Simple
Lo primero que necesitas hacer es añadir un nuevo elemento al menú. Puedes hacerlo yendo a Apariencia » Menús. Quieres añadir un enlace personalizado, así que dale la etiqueta que desees. En el campo URL, ingresa el signo #. Una vez hecho, haz clic en el botón "Añadir al menú". Guarda tu menú una vez que este enlace personalizado sea añadido al menú. Añadiendo un enlace personalizado al menú sin URL
Ahora haz clic en la flecha desplegable junto a este enlace personalizado para editar este elemento del menú. Elimina el signo numeral del campo URL y guarda tu menú. Si vas a tu sitio web en vivo, verás un elemento de menú sin enlace. Puedes añadir submenús a este elemento y enlazarlos a cualquier página o enlace personalizado que desees. Eliminando el signo # y creando un menú sin ningún enlace.
Consulta este enlace para más detalles.
