如何在WooCommerce后台导航的<nav>与<ul>之间添加内容?
解决方案:在WooCommerce账户导航的
嘿,我之前也碰到过一模一样的需求!默认的woocommerce_before_account_navigation和woocommerce_after_account_navigation钩子确实只能在整个<nav>元素的前后加内容,没法精准插到<nav>和内部的<ul>之间。这里有两个超简单的实现方法:
方法1:利用现有钩子精准插入(无需修改模板)
WooCommerce的账户导航内部会调用woocommerce_account_navigation钩子,默认的菜单项<ul>是通过这个钩子以优先级10输出的。我们可以给这个钩子加一个优先级更低(比如5)的自定义函数,让它在<ul>之前执行,这样内容就会刚好出现在<nav>和<ul>之间。
把这段代码加到你的主题functions.php文件里,或者自定义插件中就行:
add_action( 'woocommerce_account_navigation', 'insert_custom_content_between_nav_and_ul', 5 ); function insert_custom_content_between_nav_and_ul() { // 替换成你需要插入的HTML内容 echo '<div class="wc-custom-nav-header">欢迎回来!快速查看你的订单状态</div>'; }
这个方法的好处是不用碰模板文件,主题更新时也不会丢失修改。
方法2:直接覆盖WooCommerce模板(适合更复杂的自定义)
如果你需要对导航结构做更多调整,直接覆盖模板文件会更灵活:
- 找到WooCommerce默认模板文件:
wp-content/plugins/woocommerce/templates/myaccount/navigation.php - 复制这个文件到你的主题目录下的
woocommerce/myaccount/文件夹(没有这个路径就手动创建) - 打开复制后的模板文件,在
do_action( 'woocommerce_account_navigation' );这一行之前添加你的自定义内容:
<nav class="woocommerce-MyAccount-navigation"> <!-- 这里添加你的自定义内容 --> <div class="custom-nav-banner">专属会员福利等你来领</div> <?php do_action( 'woocommerce_account_navigation' ); ?> </nav>
修改完成后,WooCommerce会优先使用你主题里的模板文件,你的自定义内容就会精准出现在<nav>和<ul>之间了。
两种方法都很容易上手,你可以根据自己的需求选~
内容的提问来源于stack exchange,提问作者FloJDM




