wp_localize_script()
现在使用json_encode()
这意味着多维数组现在将用于传递的数据。而且,HTML实体解码仅适用于数组的第一级。
更好的方法是使用json和WP提供的默认js可能性。
首先,我通过脚本和从数据库添加选项json_encode
至wp标题:
add_action( \'admin_enqueue_scripts\', \'fb_print_scripts\' );
function fb_print_scripts() {
global $current_screen;
if ( isset( $current_screen -> id ) && ! in_array( $current_screen -> id, array( \'post\', \'page\' ) ) )
return;
if ( is_plugin_active_for_network( plugin_basename( __FILE__ ) ) )
$options = get_site_option( \'my_options_id\' );
else
$options = get_option( \'my_options_id\' );
if ( ! $options )
return;
?>
<script type="text/javascript">
var my_json_object = <?php echo htmlspecialchars( json_encode( $options ) ); ?>;
</script>
<?php
}
之后,我通过javascript读取这些数据;脚本包括via
wp_enqueue_script
; 下面的示例仅在admin中初始化,您可以更改挂钩,而无需
admin_
也包括在前端。
add_action( \'admin_enqueue_scripts\', \'fb_admin_enqueue_scripts\' );
function fb_admin_enqueue_scripts( $where ) {
if ( ! in_array( $where, array( \'post.php\', \'post-new.php\', ) )
return;
$suffix = defined(\'SCRIPT_DEBUG\') && SCRIPT_DEBUG ? \'.dev\' : \'\';
wp_enqueue_script(
self :: get_textdomain() . \'_script\',
plugins_url( \'/js/my_script\' . $suffix. \'.js\', __FILE__ ),
array( \'jquery\', \'my_other_script\' ),
\'\',
TRUE
);
}
现在可以在脚本中使用json中的数据,例如
jQuery( document ).ready( function( $ ) {
if ( typeof my_json_object == \'undefined\' )
return;
// debug in console of Browser
console.dir( my_json_object );
});