Sou o Twitter Bootstrap e preciso adicionar o atributo data-toggle="modal" à tag do link do menu. Ao pesquisar a maioria dos resultados, faça uma caminhada pelos menus suspensos do Twitter Bootstrap, mas esse menu não tem dropdowns e eu só preciso adicionar o atributo em particular.
Em seguida, encontrei o seguinte: Adicione atributos personalizados aos itens de menu sem o plugin , que é muito útil como aparece no WordPress 3.6+, não precisamos mais fazer walkers longos e complexos, e usar isso: enlace
No entanto, a partir dessa execução, a referência da API é bastante nua e não oferece exemplos e, como é tão nova, há muito poucas referências a ela no Google.
Eu tentei isso primeiro:
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;
}
e isso funciona, no entanto, conforme o esperado, adiciona o atributo a todas as tags a no menu. Então, estou tentando descobrir como segmentar um item de menu com # menu-item-7857 a ou algo semelhante.
Alguém sabe onde encontrar um exemplo de segmentação de um item de menu ou pode determinar como basear as informações na referência da API vinculada acima?
Para observar, eu encontrei o seguinte exemplo, mas ele só segmenta itens que têm filhos que não ajudam, mas podem estar na direção certa:
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);
ATUALIZAÇÃO - A única resposta abaixo parece estar ligada a algo, mas a partir dele não foi possível determinar como realmente encontrar o número para direcionar meu link específico e onde / como adicionar essa condição em um exemplo de trabalho. Adicionado um comentário, mas não ouviu de volta. Desde cerca de 18 dias pensei que eu veria se uma recompensa ajudaria.
Quando olho para o código do link que desejo segmentar:
<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>
Eu vejo o número 7858, pensando que talvez seja esse o número que eu deveria segmentar.
Mas quando tento, por exemplo:
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;
}
}
No entanto, adicionando que a instrução if o comentador sugeriu, recebo o seguinte erro:
Fatal error: Cannot use object of type WP_Post as array
Estou assumindo que mais código é necessário, mas perdido. Como um lembrete sem a instrução if, ela funciona, mas segmenta todos os links, em vez do link que desejo segmentar.