您可以利用html5data-* 属性。
在shortcode函数中,输出所需的类名和数据属性:
function my_plugin_shortcode( $shortcode_settings ) {
$elem_id = \'elem-id\';
$settings_id = \'my-plugin-settings-id\';
$output = \'<div class="my-plugin-class" id="#\'.$elem_id.\'" data-settings-id="\'.$settings_id.\'"></div>\';
return $output;
}
然后创建一个名为init的脚本。js并使用wp\\u enqueue\\u脚本。内部放置:
jQuery(document).ready(function($){
$(\'.my-plugin-class\').each(function(){ // Loop thru each shortcode instance
var settings_id = $(this).data(\'settings-id\'); // get data from attribute data-settings-id
$(this).plugin(settings_id); // initialize plugin and pass its settings
});
});
即使在同一篇文章或页面中有多个短代码,它也可以工作。
编辑-扩展答案,以满足提问者的要求和问题:
(我无法将这段代码预排队,因为里面有一些动态变量!)
您不必打印javascript文件中的动态变量,因为它是使用data-*属性在元素本身上打印出来的。初始化。然后js将从data-*属性中提取设置,并将其传递给jquery插件。
我应该在wordpress中将此代码放在哪里?我可以创建一个javascript文件,将其放置在相应文件夹中的wp\\U内容中,并使用该文件的路径调用wp\\U enqueue\\U脚本。有没有更好的方法和方法?
理想情况下是init。js应该位于“js”目录下的插件文件夹中。例如,你的插件/js/init。js公司
我不希望这段代码运行不止一次(并因此启动我的插件两次!)
不会的。