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


9

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

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


2
这是一个非常好的问题,也是我一直打算提出的问题。感谢您的询问!
MikeSchinkel

Answers:


10

更好的是,为此使用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 );

});

另请参阅Otto帖子


我不太了解您的代码,但发现链接非常有用。
瑞安·埃尔金斯

1
这真的很棒,谢谢!很长一段时间以来,我一直在想如何做到这一点。谢谢!我一直想在wp-hackers名单上问这个问题,但是从来没有。再次感谢你。
MikeSchinkel 2010年

1
您可以在我的上一个插件post2media(wordpress.org/extend/plugins/post2media)上看到有关实时插件的示例。该插件没有太多源,我认为这对于阅读源和理解解决方案非常有用。
bueltge 2010年

1
下面是得到它下来的基本知识(你有很多在你的例子去上)一个简单的例子:prelovac.com/vladimir/...
Viper007Bond

1

您可以通过多种方法来执行此操作,其中一种我以前已经做过,另一种我还没有做过,但是我已经使用过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>

另一个选择是将JS包含在脚本文件内包含的PHP文件中。

<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/javascripts.php"></script>

在此文件中,您将包括您的JavaScript,并且如PHP所解析的那样,您将能够以与上述类似的方式包括PHP调用,只需回显所需的数据/选项即可。需要注意的一件事是,您可能需要将输出的标头设置为text/javascript

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


不错的文章。这正是我一直在做的。OTOH,@ bueltge提供了我们可能一直在寻找的答案;我知道我有
MikeSchinkel 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.