web-dev-qa-db-ja.com

JavaScriptファイル内にphp varを取得する(プラグインを作成する)

私はプラグインを作っていました、そして私は私がよく機能を示すためにデータベースに保存されたいくつかのオプションを取りたいJavaScriptファイルを持っています。

だから私はこれがあります:

function wp_home(){

    wp_enqueue_script( 'some-name-1', '//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js', '1.0.0', true );
    wp_enqueue_style( 'some-name-2', plugins_url( 'assets/jquery.something.css', __FILE__ ) );
    wp_enqueue_script( 'some-name-3', plugins_url( 'assets/jquery.something.js', __FILE__ ), '1.0.0', true );



        global $table_prefix;
        $dbh = new wpdb( DB_USER, DB_PASSWORD, DB_NAME, DB_Host );
        $table = $table_prefix.'options';
        $qd = "SELECT option_value FROM $table WHERE option_name = 'description'";

        $description = $dbh->get_results( $query_link );

        $description = $description[0]->option_value;

      //HERE I HAVE THE STRING OF $description AND I WANT TO PASS INSIDE TO CUSTOM-JS-PHP

     wp_enqueue_script( 'custom-name-js', plugins_url( 'assets/custom-js.php', __FILE__ ), '1.0.0', true );

}

Custom-js.phpファイルは次のようなものです。

     <?php header("Content-type: text/javascript"); ?>


        $(document).ready(function(){
            $.showBox({
                message: '<?php echo $description; ?>',
            });
        });

$の説明はどうやって使えますか? JavaScriptをwp_home()の中に入れてもうまくいきません。

ありがとう

4
Met El Idrissi

wp_localize_script() を使用すると、php変数をjavascriptに渡すことができます。 phpで配列を作成し、それを3番目のパラメータとして関数に渡します。それはあなたが2番目のパラメータで名前を付けたオブジェクトとして現れます。

まず、スクリプトを登録してください。

wp_register_script( 'custom-name-js', plugins_url( 'assets/custom-js.php', __FILE__ ) );

次に、アレイを構築してwp_localizeを実行します。

$my_array = array( 'description' => $description[0]->option_value );
wp_localize_script( 'custom-name-js', 'js_object_name', $my_array );

最後に、あなたは自分のスクリプトをエンキューします。

wp_enqueue_script( 'custom-name-js' );

次に、jsファイルに、descriptionというプロパティを持つjs_object_nameという名前のjsオブジェクト(またはwp_localize_scriptの2番目のパラメータとして渡すもの)を用意します。

js_object_name.description
8
Andrew Bartel

あなたはこの機能を試すことができます:wp_localize_script( $handle, $name, $data );

ドキュメントについては https://codex.wordpress.org/Function_Reference/wp_localize_script を参照してください。

コーデックスが言うように:

ローカライゼーションは主な用途ですが、通常はWordPressのサーバーサイドからしか取得できないデータをスクリプトで利用できるようにするために使用できます。

私は翻訳/ローカライズのためにそれを使わなければなりませんでした、しかしそれはあなたがjavascriptにあなたの動的な価値を「注入する」のを助けることができるように見えます。

2
Manu