我正在使用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');
});
我该如何解决这个问题?
答案 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对此有一些解释。