Wordpress: ¿Cómo agregar javascript:void(0); a un enlace de menú?

17 may 2016, 15:29:29
Vistas: 16K
Votos: 2

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.

4
Comentarios

¿Por qué quieres hacer eso?

Sumit Sumit
17 may 2016 15:39:14

Por favor, especifica si deseas cambiar un elemento particular del menú o todos ellos.

Max Yudin Max Yudin
17 may 2016 15:53:44

cualquier enlace que tenga #

user3114253 user3114253
17 may 2016 17:02:15

@Sumit El Equipo de SEO Quiere así...

user3114253 user3114253
17 may 2016 17:02:49
Todas las respuestas a la pregunta 2
2

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;
}
17 may 2016 18:04:21
Comentarios

Esto es simplemente perfecto :)

user3114253 user3114253
18 may 2016 10:27:04

Nota importante para los nuevos en WordPress (como yo): debes hacer las ediciones en el archivo functions.php de tu tema activo (/wp-content/themes/nombredetutema).

Kirk Hammett Kirk Hammett
27 mar 2017 16:31:55
0

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.

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

17 may 2016 21:08:06