Soy Twitter Bootstrap y necesito agregar el atributo data-toggle = "modal" a la etiqueta del enlace del menú. Sin embargo, después de buscar en la mayoría de los resultados de referencia, recorro los menús desplegables de Twitter Bootstrap, sin embargo, este menú no tiene menús desplegables y solo necesito agregar el atributo particular.
Luego encontré esto: agregue atributos personalizados a los elementos de menú sin complemento, lo cual es muy útil, ya que aparece en WordPress 3.6+ ya no tenemos que hacer caminatas largas y complejas y en su lugar podemos usar esto: http://codex.wordpress.org/Plugin_API / Filter_Reference / nav_menu_link_attributes
Sin embargo, a partir de esta ejecución, la referencia de la API es bastante simple y no ofrece ejemplos, y dado que es tan nueva, hay muy pocas referencias a ella en Google.
Intenté esto primero:
add_filter( 'nav_menu_link_attributes', 'mywp_contact_menu_atts', 10, 3 );
function pb_contact_menu_atts( $atts, $item, $args )
{
// inspect $item, then …
$atts['data-toggle'] = 'modal';
return $atts;
}
y eso funciona, sin embargo, como se esperaba, agrega el atributo a todas las etiquetas a en el menú. Así que estoy tratando de descubrir cómo apuntar a un elemento de menú con # menu-item-7857 ao similar.
¿Alguien sabe dónde encontrar un ejemplo de orientación a un elemento del menú o puede determinar cómo basarse en la información que se encuentra en la referencia de la API vinculada anteriormente?
Para tener en cuenta, encontré el siguiente ejemplo, pero solo apunta a elementos que tienen hijos, lo que no ayuda pero puede estar en la dirección correcta:
add_filter('nav_menu_link_attributes', function($atts, $item, $args) {
if ( $args->has_children )
{
$atts['data-toggle'] = 'dropdown';
$atts['class'] = 'dropdown-toggle';
}
return $atts;
}, 10, 3);
ACTUALIZACIÓN: la única respuesta a continuación parece que está en algo, pero no fue capaz de determinar cómo encontrar realmente el número para apuntar a mi enlace específico y dónde / cómo agregar ese condicional en un ejemplo de trabajo. Agregué un comentario pero no recibí respuesta. Desde hace unos 18 días pensé que vería si una recompensa ayudaría.
Cuando miro el código del enlace al que me quiero dirigir:
<li id="menu-item-7858" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-7858"><a href="#" data-toggle="modal">Chat</a></li>
Veo el número 7858, así que tal vez ese sea el número al que debería apuntar.
Pero cuando lo intento, por ejemplo:
add_filter( 'nav_menu_link_attributes', 'my_chat_menu_atts', 10, 3 );
function my_chat_menu_atts( $atts, $item, $args ) {
if ( 7857 == $item['ID'] ) {
// inspect $item, then …
$atts['onclick'] = 'SnapEngage.startLink();';
return $atts;
}
}
Sin embargo, agregando que si la declaración del comentarista sugirió que obtengo el siguiente error:
Fatal error: Cannot use object of type WP_Post as array
Supongo que se requiere más código, pero perdido. Como recordatorio sin la declaración if, funciona, sin embargo, se dirige a todos los enlaces en lugar del enlace al que quiero apuntar.
Respuestas:
Edición específica del código que proporcionó en la pregunta original:
fuente
array_key_exists()
El segundo
$item
argumento, que se pone a disposición de su función de filtro, contiene un objeto de elemento de menú. Si se tira, se parece a esto:Para orientar un elemento de menú específico, debe formular su condición y compararla con los datos disponibles en el objeto, por ejemplo
if ( 2220 == $item['ID'] )
fuente
$item
es un objeto, no una matriz; cambia el$item['ID']
a$item->ID
.¿Por qué no abordas este problema desde una dirección diferente? En lugar de intentar orientar el elemento del menú con id == ?? que podría cambiar en algún momento (el elemento del menú, no la identificación), use el área de administración de WP para agregar una clase personalizada al elemento del menú al que desea apuntar. Luego use esa clase en su Javascript para activar la información que necesita:
Mi javascript no está garantizado. Si no estás usando jQuery, puedes probar esto .
fuente
Quería agregar letras de datos al menú personalizado que había creado en WordPress.
Los pasos que elegí fueron:
Aquí está mi código.
Espero que esto te ayude.
fuente