在插件中加载wp_ajax_the_ajax_hook操作的最佳位置

时间:2016-02-19 作者:Rodolfo Cristovao

我正在构建一个短代码插件,我希望避免加载不必要的代码,除非在页面中调用短代码。

我在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\' ) ) );
希望有人也有这个问题。。。提前谢谢你

1 个回复
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可能有助于在稍后阶段决定其他资源。

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i