如何改写WordPress账户菜单中Admin Tools的跳转路径?
解决方案
要实现将WooCommerce账户菜单中的「Admin tools」链接直接跳转到站点后台(https://{PATH}/wp-admin),你需要调整代码逻辑,不再依赖自定义rewrite endpoint,而是直接修改菜单链接:
- 移除不必要的endpoint注册:删掉原代码中
add_admin_tools_account_endpoint函数及对应的init钩子,因为我们不需要在/my-account下创建/wp-admin路径。 - 修改菜单链接生成逻辑:新增过滤器拦截菜单URL生成,直接指向后台地址。
- 移除无用的endpoint内容钩子:删掉原代码中
woocommerce_account_admin-tools_endpoint相关的钩子和函数,因为不再需要显示自定义内容。
修改后的完整代码如下:
add_filter( 'woocommerce_account_menu_items', 'custom_account_menu_items', 10 ); function custom_account_menu_items( $menu_links ){ if ( current_user_can('administrator') ) { // 将Admin tools菜单添加到账户菜单首位 $menu_links = array_slice( $menu_links, 0, 0, true ) + array( 'wp-admin' => __('Admin tools') ) + array_slice( $menu_links, 0, NULL, true ); } return $menu_links; } // 自定义Admin tools菜单的跳转链接 add_filter( 'woocommerce_get_endpoint_url', 'custom_admin_tools_endpoint_url', 10, 4 ); function custom_admin_tools_endpoint_url( $url, $endpoint, $value, $permalink ) { if ( $endpoint === 'wp-admin' && current_user_can('administrator') ) { // 直接返回站点后台的完整URL $url = admin_url(); } return $url; }
代码说明:
woocommerce_account_menu_items:保留原逻辑,仅给管理员账户菜单顶部添加「Admin tools」选项。woocommerce_get_endpoint_url:通过这个过滤器拦截「wp-admin」标识的菜单URL生成,直接替换为WordPress内置的admin_url()生成的后台地址,该函数会自动适配当前站点的域名路径。
最后记得进入后台「设置」→「固定链接」页面,直接点击保存按钮刷新固定链接规则,确保菜单链接生效。
内容的提问来源于stack exchange,提问作者LOTUSMS
相关产品推荐
相关产品推荐

