WordPress 只有页面中使用了简码的时候才加载脚本

很多插件都使用简码来让用户调用模块,而在开发的过程中,有时会遇到这种问题:简码模块需要加载 JS 或者 CSS 脚本,而当页面没有使用简码的时候就会造成资源浪费。

比如下边的这个 Google 地图插件:

//添加简码
 function netnote_add_google_map( $atts, $content ){
 //content...
 }
 add_shortcode( 'google_map', 'netnote_add_google_map');

//挂载脚本
 function netnote_add_javascript(){
 wp_enqueue_script( 'map_scripts' );
 }
 add_action( 'wp_enqueue_scripts', 'netnote_add_javascript' );

只有在页面中使用了 [google_map] 简码的时候才需要加载脚本,这怎么做到呢?

其实很简单,只需要在简码函数触发的时候在页脚挂载脚本即可。

//添加简码
 function netnote_add_google_map( $atts, $content ){
 $GLOBALS['google_map_shortcode'] = true;
 return '地图的代码';
 }
 add_shortcode( 'google_map', 'netnote_add_google_map');

//挂载脚本
 function netnote_add_javascript(){
 global $google_map_shortcode;
 if( isset( $google_map_shortcode ) && $google_map_shortcode ) wp_enqueue_script( 'map_scripts' );
 }
 add_action( 'wp_footer', 'netnote_add_javascript' );

来自https://www.endskin.com/add-scripts-shortcode-used/