You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce我的账户左侧菜单添加自定义链接?

没问题!要在WooCommerce我的账户左侧菜单添加自定义页面,注册自定义端点是最稳妥的解决方案,我给你一步步拆解实操步骤:

方法一:注册自定义WooCommerce端点并关联页面

这是官方推荐的方式,能完美融入账户页面的路由体系,还能保留默认的菜单激活状态。

1. 注册新端点

首先用woocommerce_get_query_vars钩子注册你的自定义端点,把这段代码加到子主题的functions.php里,或者用自定义代码插件:

add_filter( 'woocommerce_get_query_vars', 'add_custom_account_endpoint' );
function add_custom_account_endpoint( $query_vars ) {
    // 这里的'my-custom-page'是端点名称,可自定义
    $query_vars['my-custom-page'] = 'my-custom-page';
    return $query_vars;
}

重要操作:注册完端点后,一定要去WordPress后台的「设置→固定链接」页面,随便选一个选项点击保存(不用修改设置),让WordPress刷新路由规则,识别新的端点。

2. 添加菜单链接到账户侧边栏

用woocommerce_account_menu_items钩子把新页面的菜单项插入到左侧菜单里,还能控制它的位置:

add_filter( 'woocommerce_account_menu_items', 'add_custom_account_menu_item', 10, 1 );
function add_custom_account_menu_item( $items ) {
    // 把自定义菜单项插入到「订单」之后(数组索引2的位置)
    $new_items = array_slice( $items, 0, 2, true ) +
        array( 'my-custom-page' => '我的自定义页面' ) + // 这里的文本是菜单显示名称
        array_slice( $items, 2, null, true );
    return $new_items;
}

这里的键名my-custom-page必须和第一步注册的端点名称完全一致,不然菜单无法正确跳转。

3. 关联你的自定义页面内容

有两种方式可以展示页面内容,按需选择:

方式A:用模板文件渲染内容(推荐)

在你的主题(或子主题)目录下,新建woocommerce/myaccount文件夹(如果没有的话),然后创建my-custom-page.php文件,写入你想要的内容:

<?php
/**
 * WooCommerce 自定义账户页面模板
 */
defined( 'ABSPATH' ) || exit;

// 触发自定义钩子,方便后续扩展
do_action( 'woocommerce_account_my-custom-page_endpoint' );

// 这里写你的自定义内容
echo '<h2>我的专属自定义页面</h2>';
echo '<p>这是我为账户页面添加的自定义内容,完美融入WooCommerce风格!</p>';
?>

这种方式能完全继承账户页面的样式,体验和原生页面一致。

方式B:跳转到已有的自定义页面

如果你已经创建了独立的WordPress页面,想让端点直接跳转过去,可以用template_redirect钩子实现:

add_action( 'template_redirect', 'redirect_custom_endpoint_to_page' );
function redirect_custom_endpoint_to_page() {
    global $wp;
    // 检查是否访问了自定义端点
    if ( isset( $wp->query_vars['my-custom-page'] ) ) {
        // 替换成你的自定义页面ID,可在页面编辑页查看
        $target_page_id = 123;
        wp_redirect( get_permalink( $target_page_id ) );
        exit;
    }
}
方法二:直接添加外部菜单链接(无需注册端点)

如果不想折腾端点,也可以直接在菜单里插入外部链接,但这种方式的URL不会是账户页面的子路径,且默认没有激活状态样式:

add_filter( 'woocommerce_account_menu_items', 'add_custom_external_menu_item' );
function add_custom_external_menu_item( $items ) {
    // 替换成你的自定义页面URL
    $custom_page_url = esc_url( get_permalink( 123 ) );
    $items['custom-external-link'] = "<a href='{$custom_page_url}'>我的自定义页面</a>";
    return $items;
}

如果需要激活状态,可以额外加CSS来匹配当前页面的URL,给菜单项加is-active类。

常见问题排查
  • 之前用钩子没成功?大概率是没刷新固定链接!注册端点后必须去固定链接页面保存一次,否则WordPress无法识别新路由。
  • 确保钩子优先级正确:woocommerce_account_menu_items用默认的10优先级就足够,不要设得过高或过低。
  • 代码要放在子主题functions.php或自定义代码插件里,绝对不要直接修改WooCommerce核心文件,不然更新后会丢失修改。

内容的提问来源于stack exchange,提问作者Victor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:17:05