我一直在尝试使用一个小插件,我试图通过wp_localize_script
但是当我做的时候console.log()
在我的js中,它正在返回undefined
.
有人能告诉我我做错了什么吗:
$shortcode_data = array();
/*Fetching the plugin directoryt path*/
$dir = plugin_dir_url( __FILE__ );
// Let\'s create the before after shortcode First
add_shortcode(\'before_after\', function( $atts ) {
//extracting the shortcode attributes
global $shortcode_data;
$shortcode_data = shortcode_atts( array(
\'slide\' => 5, // max 7
\'src1_org\' => null,
\'src1_new\' => null,
\'src2_org\' => null,
\'src2_new\' => null
), $atts );
extract($shortcode_data);
//... do my work with the variables
});
//Let\'s include the CSS & JS scripts
add_action( \'wp_enqueue_scripts\', function() {
global $dir;
global $shortcode_data;
/*CSS*/
wp_enqueue_style( \'custom_style\', $dir . \'assets/css/custom.css\', null, null );
/*JS*/
wp_register_script (\'custom_script\', $dir . \'assets/js/custom.js\');
wp_localize_script( \'custom_script\', \'ismSliderData\', $shortcode_data ); // this line supposed to send all of my shortcode variables to the js but it is not doing that
wp_enqueue_script( \'custom_script\', true );
});
我们将非常感谢您的帮助。
最合适的回答,由SO网友:jgraup 整理而成
目前,您的短代码将在wp_enqueue_scripts
-- 输出帖子内容时。这就是为什么脚本在wp_enqueue_scripts
对于wp_localize_script
.
wp_enqueue_script( string $handle, string $src = false, array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )
你会的;
A) 需要提前收集您的短代码属性。
B) 将自定义脚本放入页脚并输出<script>
短代码输出期间的数据。
C) 将自定义脚本放在页脚中,并在wp_print_footer_scripts
. 您可能需要将自定义脚本包装在闭包中,以便在添加本地化后执行。
D) 在短代码期间本地化
<小时>Here 是在短代码期间本地化的一个示例:
function some_shortcode( $atts )
{
$data = shortcode_atts(
array (
\'arrows\' => TRUE
),
$atts
);
wp_enqueue_script( \'your_script_name\' );
wp_localize_script(
\'your_script_name\',
\'yourScriptObject\',
$data
);
return \'a string of whatever\';
}