如何让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
相关产品推荐
相关产品推荐

