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' );
