Localize script not working

时间:2014-02-09 作者:Ollicca Mindstorm

我正在wordpress中测试ajax,它基本上可以工作,但我不希望url被硬编码,所以我尝试使用wp_localize_script 获取要使用的对象,但在中向siteurl发出警报时,我收到一个错误:“ReferenceError:WPURL未定义”ajax_script.js.

功能。php

function my_scripts_method() {
    wp_enqueue_script(
        \'ajax_script\',
        get_stylesheet_directory_uri() . \'/js/ajax_script.js\',
        array( \'jquery\' )
    );
}
add_action( \'wp_enqueue_scripts\', \'my_scripts_method\' );

wp_localize_script(\'ajax_script\', \'WPURLS\', array( \'siteurl\' => get_option(\'siteurl\') ));
ajax\\u脚本。js公司

$(function () {

    $(\'#vru-btn\').click(function() {
        // alert(\'code\');
        $.post( \'wp-content/themes/wpcleantheme/ajax/test.php\', function(data) {
            $(\'#vru-div\').html(data);    
        });
    });;

    alert(WPURLS.siteurl);
});

2 个回复
最合适的回答,由SO网友:Milo 整理而成

你在打电话wp_localize_script 在使脚本排队的操作运行之前。脚本入队后,将本地化移到入队操作中。

function my_scripts_method() {
    wp_enqueue_script(
        \'ajax_script\',
        get_stylesheet_directory_uri() . \'/js/ajax_script.js\',
        array( \'jquery\' )
    );
    wp_localize_script(\'ajax_script\', \'WPURLS\', array( \'siteurl\' => get_option(\'siteurl\') ));
}
add_action( \'wp_enqueue_scripts\', \'my_scripts_method\' );
也就是说,您可能不想将请求直接定向到模板文件,因为这样您就无法访问任何WordPress API。相反,直接请求admin_url(\'admin-ajax.php\'), 并阅读使用AJAX in Plugins.

SO网友:GRRRRwordpressgrrr

注册脚本,然后将其本地化,然后将其排队。根据WordPress Codex

 // Register the script
 wp_register_script( \'some_handle\', \'path/to/myscript.js\' );

 // Localize the script with new data
 $translation_array = array(
\'some_string\' => __( \'Some string to translate\', \'plugin-domain\' ),
\'a_value\' => \'10\'
 );
 wp_localize_script( \'some_handle\', \'object_name\', $translation_array );

 // Enqueued script with localized data.
 wp_enqueue_script( \'some_handle\' );

结束

相关推荐

在帖子中显示用于大图像的AJAX预加载器

我们的WordPress安装只运行帖子中的图像。通常是中等、轻量级的图像,但我们也发布较大的图像,有时是gif动画,加载时间很长。当一篇文章有描述时,它就有点不同了。访问者有东西要读,然后加载时图像会弹出,但这不是我们的情况。正如我所说,我们只在帖子中显示图像。当一个帖子包含一个大图像时,在加载图像之前它是空的,我相信我们因此失去了很多未来可能的常客。他们可能会相信我们有空头支票。我的解决方案是显示一个微型(ajax?)预加载,直到加载图像,以便通知访问者正在加载某些内容。我怎样才能做到这一点?