如何只本地化admin.php一次

时间:2011-11-18 作者:Saif Bechan

我正在创建一组使用AJAX的插件。现在本地化管理。所有插件中的php似乎都有点过头了。有没有办法只本地化一次脚本\\

现在我不知道首先初始化哪个插件,所以我必须在所有插件中放置本地化功能。

我现在的做法是使用以下代码。

  if( ! defined( \'AJAX_LOCALIZED\' ) ){
    define( \'AJAX_LOCALIZED\', 1 );
    wp_localize_script(
        \'my-ajax-script\',
        \'ajax-object\',
        array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) )
    );
  }
这工作正常,但可能有一个内置的方法来做到这一点,也许更通用的方法可以与其他插件互补。

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

这是个好问题,我已经处理过了,但从来没有令人满意过。如果能找到一个处理这个问题的核心函数,那就太好了。

但与此同时,我会绕过整个localize_script 函数并将操作添加到wp_head 这只是定义了一个全局javascript对象,其中包含所有插件所需的信息。localize_script 对于这种情况,似乎有点过度使用了,虽然这种解决方案肯定不再优雅,但对我来说似乎更清楚:

add_action( \'wp_head\', \'localize_ajax_scripts\' );

if ( !function_exists( \'localize_ajax_scripts\' ) ) {

function localize_ajax_scripts() {
    $ajaxurl = admin_url( \'admin-ajax.php\' );
    echo <<<JS
<script type="javascript">
    var ajax_object = {
        ajaxurl: {$ajaxurl}
    }
</script>
JS;

}

}
在一个钩子上添加两次相同的函数不会导致它触发两次,因此不必定义常量;只需避免多次定义函数。(如果您试图为不同的插件定义不同的功能来传递附加信息,那么您真的有麻烦了。)

结束

相关推荐

在插件中使用AJAX提交表单-真的很困惑

在使用所有Wordpress ajax挂钩和函数时遇到一些问题。正在阅读此帖子:5 Tips for Using Ajax in Wordpress但在尝试了所有代码并将其应用于Ajax表单之后,他感到困惑。我从我的插件类调用了一个函数,以响应单个帖子页面上的from,让用户“晕倒”。表格打印得很好。以下是表单代码://the html form for the front end function ds_swoons_form(){ global $post, $current_user