我正在构建一个短代码插件,我希望避免加载不必要的代码,除非在页面中调用短代码。
我在ajax函数方面遇到了问题。似乎我需要很早就加载插件代码中的所有内容,从而为整个站点加载不必要的代码。
我指的是添加ajax时的常见调用
add_action( \'wp_ajax_the_ajax_hook\', \'testFunction\' );
add_action( \'wp_ajax_nopriv_the_ajax_hook\', \'testFunction\' );
并且需要加载后端功能。
function testFunction(){
//do some server side thing with $POST
echo \'this is a test function\';
die();
}
如果我没有加载插件“top”代码中的add\\u操作,我就不会得到ajax。js loadedIf我没有在插件“top”代码中加载testFunction我得到一个调用\\u user\\u func\\u array()期望参数1是有效的回调,函数“testFunction”未找到或函数名无效
调用shortcode时,我可以“按需”加载脚本,即:
wp_enqueue_script( \'my-ajax-handle\', FAU_PLUGIN_URL . \'js/ajax.js\', array( \'jquery\' ) );
wp_localize_script( \'my-ajax-handle\', \'the_ajax_script\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );
希望有人也有这个问题。。。提前谢谢你
SO网友:ccprog
我不知道这是不是最好的地方,但是get_header
足够早,仍然可以将脚本排队:
function at_set_header () {
global $post, $has_the shortcode;
if ( is_object( $post ) && has_shortcode( $post->post_content, \'shortcode_name\') ) {
$has_the_shortcode = true;
wp_enqueue_script( \'my-ajax-handle\', FAU_PLUGIN_URL . \'js/ajax.js\', array( \'jquery\' ) );
wp_localize_script( \'my-ajax-handle\', \'the_ajax_script\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );
}
}
add_action( \'get_header\', \'at_set_header\');
The
$has_the_shortcode
global可能有助于在稍后阶段决定其他资源。