admin管理员组文章数量:1434889
I'm currently trying to add an empty <span>
after every item title in my navigation which has childs. So only dropdown elements. Sadly also some of my non-dropdown items getting a <span>
inserted after the title. This is so strange. What I'm doing wrong?
add_filter( 'nav_menu_item_args', 'nav_menu_modify_dropdown', 10, 3 );
function nav_menu_add_dropdown( $args, $item, $depth ) {
error_log( print_r( $item, true ) );
if ( $args->theme_location === 'primary-menu' && in_array( 'menu-item-has-children', $item->classes, true ) ) {
$args->link_after = '<span></span>';
}
return $args;
}
I'm currently trying to add an empty <span>
after every item title in my navigation which has childs. So only dropdown elements. Sadly also some of my non-dropdown items getting a <span>
inserted after the title. This is so strange. What I'm doing wrong?
add_filter( 'nav_menu_item_args', 'nav_menu_modify_dropdown', 10, 3 );
function nav_menu_add_dropdown( $args, $item, $depth ) {
error_log( print_r( $item, true ) );
if ( $args->theme_location === 'primary-menu' && in_array( 'menu-item-has-children', $item->classes, true ) ) {
$args->link_after = '<span></span>';
}
return $args;
}
Share
Improve this question
asked Mar 29, 2019 at 14:35
Johnny97Johnny97
2147 silver badges18 bronze badges
1 Answer
Reset to default 0There is a mismatch of callback function names in your code. I believe, it's just a typo.
To understand the nature of your problem, we have to know, how walker-nav-menu
uses its parameters, while traversing a menu tree. $args
apply to entire menu tree. $item
is an individual menu item.
Any changes to arguments in $args
object, made via filters, are persistent for every next iteration of walker-nav-menu
. Your code should be:
add_filter( 'nav_menu_item_args', 'nav_menu_modify_dropdown', 10, 2 );
function nav_menu_modify_dropdown( $args, $item ) {
unset( $args->link_after );
if ( $args->theme_location === 'primary-menu' && in_array( 'menu-item-has-children', $item->classes, true ) )
$args->link_after = '<span></span>';
return $args;
}
If there is only one menu location, you can simplify your conditional statement:
if ( in_array( 'menu-item-has-children', $item->classes, true ) )
$args->link_after = '<span></span>';
本文标签: phpAdd element after navigation element title don39t works like I expect
版权声明:本文标题:php - Add element after navigation element title don't works like I expect 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745644936a2668077.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论