使用插件设置中的数据修改JS文件

时间:2010-08-14 作者:Ryan Elkins

我有一个插件,其中包括一个javascript文件,该文件需要一些特定于用户的设置。从插件的设置参数将这些设置转换为javascript的最佳方法是什么?

换句话说,如果我将这些设置作为设置页面的一部分,用户可以在其中输入它们,那么我如何才能最好地将这些值输入到javascript中?我是否需要使用一些东西来附加一些脚本标记,并在每次加载页面时通过PHP进行设置?设置cookie是更好的方法吗?

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

更好的是,您可以使用WP的函数来实现这一点,例如多语言:

    add_action( \'admin_enqueue_scripts\', \'add_scripts\' );
    function add_scripts($where) {
        wp_localize_script( \'post2media\', \'post2media_strings\', $this->localize_vars() );
    }
    function localize_vars() {

        $strings = array(
                \'btntext\'    => __( \'Link with post\', INPSYDE_P2M_TEXTDOMAIN ),
                \'txtallnone\' => __( \'Include in gallery:\', INPSYDE_P2M_TEXTDOMAIN ),
                \'txtall\'     => __( \'All\', INPSYDE_P2M_TEXTDOMAIN ),
                \'txtnone\'    => __( \'None\', INPSYDE_P2M_TEXTDOMAIN ),
                \'ttlcb\'      => __( \'Include image in this gallery\', INPSYDE_P2M_TEXTDOMAIN )
            );

        return $strings;
    }
在js文件中使用:

jQuery(function ($) {
buttonaddfunc = function() {
    btntext = post2media_strings.btntext;

    reg = /\\d+/;
    $( \'.savesend > .button\' ) . each( function() {
        inputname = $( this ) . attr( \'name\' );
        number = reg . exec( inputname );
        $( this ) . after( \'<input type="submit" value="\' + btntext + \'" name="link[\' + number + \']" class="button">\' );
    } );
    $( \'.describe-toggle-on\' ).unbind( \'click\', buttonaddfunc );
};
$( \'.describe-toggle-on\' ).bind( \'click\', buttonaddfunc );
});

另请参见post from Otto

SO网友:nobody

有几种方法可以做到这一点,其中一种我以前做过,另一种我没有做过,但我用于XML配置文件。

第一个是将变量包含在WP页眉或页脚内的脚本标记中,在包含JS文件的脚本标记之前,例如:

<script type="text/javascript">
    var test = "<?php echo "hello world"; /* the relevant PHP code to echo the data you require */ ?>";
    var slider_type = "<?php echo "nivo"; /* same again */ ?>";
</script>
<script type="text/javascript" src="<?php bloginfo("template_url"); ?>/js/your_js_here"></script>
另一种选择是在PHP文件中包含JS,该文件包含在脚本标记中。

<script type="text/javascript" src="<?php bloginfo(\'template_url\'); ?>/javascripts.php"></script>
在这个文件中,您将包含javascript,并且由于PHP将对其进行解析,您将能够以与上面类似的方式包含PHP调用,只需回显所需的数据/选项。需要注意的一点是,您可能需要将输出的标题设置为text/javascript.

就个人而言,我更喜欢第一种方法,当我有影响javascript文件的用户可更改设置时,我会使用第一种方法。

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?