WooCommerce我的账户菜单替换li为span问题求助
替换WooCommerce我的账户菜单的li标签为span标签的解决方案
你当前使用的woocommerce_account_menu_items过滤器只能修改菜单项的内部内容,无法控制外层的<li>标签——这些<li>是WooCommerce渲染菜单时自动生成的,所以你写的代码只会把自定义内容塞进自动生成的<li>里,造成嵌套问题。
要直接替换外层的<li>为<span>,需要使用woocommerce_account_navigation_item过滤器,它能直接修改每个导航项的完整HTML结构:
// 替换WooCommerce我的账户导航项的li标签为span add_filter( 'woocommerce_account_navigation_item', 'custom_replace_account_menu_li_with_span', 10, 4 ); function custom_replace_account_menu_li_with_span( $item_html, $item, $permalink, $is_active ) { // 替换<li>标签为<span>,保留原有类名和属性 $item_html = str_replace( array( '<li', '</li>' ), array( '<span', '</span>' ), $item_html ); // 可选:给span添加自定义类或调整属性 // $item_html = str_replace( 'class="', 'class="custom-account-span ', $item_html ); return $item_html; }
代码说明:
woocommerce_account_navigation_item过滤器提供4个参数:已生成的项HTML、菜单项数据、项的永久链接、是否为当前激活状态。- 用
str_replace直接替换标签,保留原有的状态类(比如is-active)和其他属性,确保菜单的样式和功能不受影响。 - 如果需要自定义样式,可以在函数里额外修改HTML结构,比如添加自定义类名。
内容的提问来源于stack exchange,提问作者Roel John
相关产品推荐
相关产品推荐

