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

如何让WordPress插件的JS仅在挂载PHP函数的页面加载?

首先修正你代码里的小问题:Public 应该写成小写的 public,PHP类方法的访问修饰符是小写的。

接下来,根据你“仅在挂载了PHP函数的页面加载JS”的需求,分几种常见场景给出实现方案:

方案1:针对特定页面类型/ID/别名加载

如果你的PHP函数只在特定页面(比如某个单页、文章页,或自定义文章类型页面)生效,就用WordPress的条件标签判断,只有条件满足时才加载JS:

public function enqueue_scripts() {
    // 示例:仅在ID为123的页面、别名为"contact"的页面加载
    if ( is_page( array( 123, 'contact' ) ) ) {
        wp_enqueue_script( 
            $this->plugin_name, 
            plugin_dir_url( __FILE__ ) . 'js/plugin-name-public.js', 
            array( 'jquery' ), 
            $this->version, 
            false 
        );
    }

    // 其他可选条件示例:
    // 仅在文章详情页加载:if ( is_single() ) { ... }
    // 仅在自定义文章类型"product"的页面加载:if ( is_singular( 'product' ) ) { ... }
}
方案2:针对包含插件短码的页面加载

如果你的PHP功能是通过短码触发的(比如页面里用了[my_plugin_shortcode]),可以用has_shortcode()判断当前页面是否包含该短码,再加载JS:

public function enqueue_scripts() {
    global $post;
    // 检查当前页面内容是否包含你的短码
    if ( isset( $post ) && has_shortcode( $post->post_content, 'my_plugin_shortcode' ) ) {
        wp_enqueue_script( 
            $this->plugin_name, 
            plugin_dir_url( __FILE__ ) . 'js/plugin-name-public.js', 
            array( 'jquery' ), 
            $this->version, 
            false 
        );
    }
}
方案3:自定义标记判断(匹配你的PHP函数挂载逻辑)

如果你的PHP函数是通过自定义钩子或特定逻辑挂载的,可以设置全局标记,在函数挂载时标记状态,再在enqueue_scripts里检查:

先在你的PHP挂载函数里设置标记:

public function my_custom_function() {
    // 设置全局标记,表示当前页面加载了这个函数
    global $my_plugin_function_loaded;
    $my_plugin_function_loaded = true;

    // 你的函数逻辑代码...
}

然后修改enqueue_scripts方法:

public function enqueue_scripts() {
    global $my_plugin_function_loaded;
    // 只有标记为true时才加载JS
    if ( isset( $my_plugin_function_loaded ) && $my_plugin_function_loaded ) {
        wp_enqueue_script( 
            $this->plugin_name, 
            plugin_dir_url( __FILE__ ) . 'js/plugin-name-public.js', 
            array( 'jquery' ), 
            $this->version, 
            false 
        );
    }
}

注意:所有条件判断要包裹住wp_enqueue_script()调用,确保只有满足条件时才输出JS加载代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:28:03