如何使用wp_localize_script将php变量传递到Wordpress内的* .js文件

时间:2018-05-08 09:53:31

标签: javascript php wordpress

我正在使用WordPress插件,该插件使用后端的数据在前端显示它。

我有两个重要文件。一个带有表单的PHP插件文件,用户可以在其中提交数据和另一个插件的一个JavaScript文件,其中数据应该实现为动态生成的内容文件。

首先,我使用iframe来实现存储在HTML文件中的数据,但这种方法有许多缺点。我想直接用从PHP文件传递到JavaScript文件的字符串变量插入数据,并想出,wp-localize-script应该这样做,但我不能让它工作。

在我的PHP插件文件中,我的代码如下所示:

$phptestvariable = "Ausgabe der PHP-Testvariable";

function js_enqueue_scripts() {

    wp_register_script("scripts", plugin_dir_url(__FILE__) . '/wp-content/plugins/h5p/h5p-php-library/js/h5p.js' );
    wp_enqueue_script("scripts");
    wp_localize_script("scripts", "php_vars", $phptestvariable);
}
add_action("wp_enqueue_scripts", "js_enqueue_scripts");

在我的JavaScript文件(/wp-content/plugins/h5p/h5p-php-library/js/h5p.js)中,代码如下所示:

actionBar.on('cc', function () {

    console.log(php_vars.variable);
    var dialog = new H5P.Dialog('copyrights', H5P.t('ccInfo'), php_vars , $container);
        // Übergabe Werte: Button Name, PopUp Titel, PopUp Inhalt, $container
    dialog.open();
    instance.triggerXAPI('accessed-copyright');
});

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

wp_localize_script的第3个参数必须是数组。 例如:

wp_localize_script( 'scripts', 'php_vars',
    array( 
        'ajax_url' => admin_url( 'admin-ajax.php' ),
        'var_1' => 'Ausgabe der PHP-Testvariable'
    )
);

然后在JS的某个地方

alert(php_vars.var_1)

将显示value 1

P.S。 ajax_url包含和URL,以便在您需要时进行AJAX调用。 Here对此有一些解释。