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

如何让WordPress代码片段仅在指定单页加载以优化性能

实现WooCommerce账户自定义端点仅在指定页面加载的解决方案

问题背景

因首页及其他页面加载时长问题,需要让添加WooCommerce账户自定义端点的代码仅在单个页面加载。当前使用的注册端点代码如下:

add_action( 'init', 'register_uzleteim_endpoint');

/**
 * Register New Endpoint.
 *
 * @return void.
 */
function register_uzleteim_endpoint(){
    add_rewrite_endpoint( 'uzleteim', EP_ROOT | EP_PAGES );
}

add_filter( 'query_vars', 'uzleteim_query_vars' );

/**
 * Add new query var.
 *
 * @param array $vars vars.
 *
 * @return array An array of items.
 */
function uzleteim_query_vars( $vars ) {
    $vars[] = 'uzleteim';
    return $vars;
}

add_filter( 'woocommerce_account_menu_items', 'add_uzleteim_tab' );

/**
 * Add New tab in my account page.
 *
 * @param array $items myaccount Items.
 *
 * @return array Items including New tab.
 */
function add_uzleteim_tab( $items ) {
    $items['uzleteim'] = 'Üzleteim';
    return $items;
}

add_action( 'woocommerce_account_uzleteim_endpoint', 'add_uzleteim_content' );

/**
 * Add content to the new tab.
 *
 * @return  string.
 */
function add_uzleteim_content() {}

曾尝试将代码包裹在wp_footer钩子中,报错“unexpected if”,代码如下:

add_action( 'wp_footer', function () {
    if ( ! is_page( array( 42, 'Page Name', 'about-us', 968 ) ) ) return;

    // rest of snippet code here

} );

错误原因

  1. 端点注册(add_rewrite_endpoint)必须在init钩子(WP初始化阶段)执行,放到wp_footer会导致重写规则无法正确生效,同时可能引发语法错误。
  2. 代码结构可能存在括号或引号不匹配的问题,触发“unexpected if”错误。

正确实现方案

方案一:全局注册端点,仅在指定页面显示菜单和内容

这种方式保证重写规则全局生效,同时仅在目标页面加载相关菜单和内容,避免额外负载:

// 全局注册端点(必须在init钩子执行)
add_action( 'init', 'register_uzleteim_endpoint');
function register_uzleteim_endpoint(){
    add_rewrite_endpoint( 'uzleteim', EP_ROOT | EP_PAGES );
}

// 全局添加查询变量
add_filter( 'query_vars', 'uzleteim_query_vars' );
function uzleteim_query_vars( $vars ) {
    $vars[] = 'uzleteim';
    return $vars;
}

// 仅在指定页面添加账户菜单
add_filter( 'woocommerce_account_menu_items', 'add_uzleteim_tab' );
function add_uzleteim_tab( $items ) {
    // 替换为你的目标页面ID/别名/名称
    $target_pages = array( 42, 'Page Name', 'about-us', 968 );
    if ( is_page( $target_pages ) ) {
        $items['uzleteim'] = 'Üzleteim';
    }
    return $items;
}

// 仅在指定页面加载端点内容
add_action( 'woocommerce_account_uzleteim_endpoint', 'add_uzleteim_content' );
function add_uzleteim_content() {
    $target_pages = array( 42, 'Page Name', 'about-us', 968 );
    if ( !is_page( $target_pages ) ) {
        return;
    }
    // 此处添加你的自定义内容代码
}

方案二:仅在指定页面注册端点(需注意重写规则)

如果需要完全避免全局注册端点,可在init钩子中添加条件判断,但首次访问目标页面后,需手动进入设置→固定链接页面并保存,确保重写规则生效:

add_action( 'init', 'register_uzleteim_endpoint');
function register_uzleteim_endpoint(){
    $target_pages = array( 42, 'Page Name', 'about-us', 968 );
    if ( is_page( $target_pages ) ) {
        add_rewrite_endpoint( 'uzleteim', EP_ROOT | EP_PAGES );
    }
}

add_filter( 'query_vars', 'uzleteim_query_vars' );
function uzleteim_query_vars( $vars ) {
    $target_pages = array( 42, 'Page Name', 'about-us', 968 );
    if ( is_page( $target_pages ) ) {
        $vars[] = 'uzleteim';
    }
    return $vars;
}

add_filter( 'woocommerce_account_menu_items', 'add_uzleteim_tab' );
function add_uzleteim_tab( $items ) {
    $target_pages = array( 42, 'Page Name', 'about-us', 968 );
    if ( is_page( $target_pages ) ) {
        $items['uzleteim'] = 'Üzleteim';
    }
    return $items;
}

add_action( 'woocommerce_account_uzleteim_endpoint', 'add_uzleteim_content' );
function add_uzleteim_content() {
    $target_pages = array( 42, 'Page Name', 'about-us', 968 );
    if ( !is_page( $target_pages ) ) {
        return;
    }
    // 此处添加你的自定义内容代码
}

内容的提问来源于stack exchange,提问作者Róbert Ádám Horváth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:06:51