プラグイン設定のデータでJSファイルを変更する


9

私は、とりわけ、いくつかのユーザー固有の設定を必要とするJavaScriptファイルがあるプラグインを持っています。これらの設定をプラグインの設定パラメーターからJavaScriptに取得するための最良の方法は何でしょうか?

つまり、これらの設定をユーザーが入力できる設定ページの一部にした場合、それらの値をJavaScriptに取り込むにはどうすればよいでしょうか。スクリプトタグを追加するために何かを使用し、ページを読み込むたびにPHP経由で設定する必要がありますか?これを行うには、クッキーを設定する方が良いでしょうか?


2
これは本当に素晴らしい質問で、私が尋ねるつもりだった質問です。聞いてくれてありがとう!
MikeSchinkel

回答:


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-fileで使用します:

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 );

});

オットーから投稿もご覧ください


私はあなたのコードをあまりよく理解していませんでしたが、リンクは非常に役に立ちました。
Ryan Elkins

1
これは本当に素晴らしいです、ありがとう!これをどうやってやるのか、ずっとずっと気になっていました。ありがとうございました!私はそれをwp-hackersリストに載せたいと思っていましたが、しませんでした。ありがとうございました。
MikeSchinkel 2010

1
最後のプラグインpost2media(wordpress.org/extend/plugins/post2media)で、ライブプラグインの例を確認できます。プラグインにはそれほど多くのソースがありません。これは、ソースを読み取り、ソリューションを理解するのに最適です。
bueltge

1
ここでは(あなたはあなたの例で起こってたくさん持っている)基本的にそれを降り単純な例を示します。prelovac.com/vladimir/...
Viper007Bond

1

これを行うにはいくつかの方法があります。その1つは以前に行った方法で、もう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>

他の代替案は、スクリプトタグ内に含まれるPHPファイル内にJSを含めることです。

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

このファイル内にJavaScriptを含め、PHPがそれを解析するため、上記と同様の方法でPHP呼び出しを含めることができ、必要なデータ/オプションをエコー出力するだけです。注意すべきことの1つは、出力のヘッダーをとして設定する必要がある場合があることですtext/javascript

個人的に私は最初の方法を大いに好み、ユーザーがJavaScriptファイルに影響する設定を変更できる場合に使用します。


いい記事です。これはまさに私がやってきたことです。OTOH、@ bueltgeには、おそらく私たち全員が求めていた答えがあります。私は知っている。
MikeSchinkel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.