我试图将我的PHP变量放入我的wordpress插件中的JS文件中。按照蛋糕配方,下面的代码为代码。
* PHP *
$someone = 'whatever';
function admin_script_style( $hook ) {
global $post_type;
wp_register_script( 'my_scripts', plugins_url( '', __FILE__ ) .'/js/' . 'scripts.js', array( 'jquery' ), '1.0', true);
wp_enqueue_script( 'my_scripts' );
wp_localize_script( 'my_scripts', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'my_var' => 'foo' ) );
}
add_action( 'admin_enqueue_scripts', 'admin_script_style' );
这很好,但是,如果我为PHP变量更改“my_var”,比如
wp_localize_script( 'prd_scripts_edicoes', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'my_var' => $someone ) );
这失败了,我的javascrip返回“my_var = null”。
任何人都可以帮助我吗?
答案 0 :(得分:0)
问题是$someone
不属于您的职能范围。
您可以将其导入范围,方法是将其声明为全局,然后访问它:
global $someone;
$someone = 'whatever';
function admin_script_style($hook) {
global $someone;
// $someone is now accessible
...
}
请注意,如果您已经在全局范围内,那么当您设置变量时, 如果我计划在子范围内访问它,为了明确,我更喜欢始终将变量声明为全局变量。
或者,您可以将闭包传递给add_action
,并将$someone
声明为已使用的变量,而不是为钩子使用命名函数:
$someone = 'whatever';
add_action('admin_enqueue_scripts', function($hook) use($someone) {
// $someone is now accessible
...
});