插件和Java脚本放置

时间:2014-01-23 作者:Toniq

我正在制作一个插件。我已经在javascript文件中使用了wp\\u enqueue\\u脚本。执行shortcode时,我需要编写一些javascript代码,其中包含以下代码:

jQuery(document).ready(function() {
...
//inside my plugin will initiate
(我无法将这段代码预排队,因为里面有一些动态变量!)

我的问题是:我应该在wordpress中把代码放在哪里?我可以创建一个javascript文件,将其放置在相应文件夹中的wp\\U内容中,并使用该文件的路径调用wp\\U enqueue\\U脚本。有没有更好的方法和方法?

我不希望这段代码运行不止一次(并因此启动我的插件两次!)

谢谢你的建议!

1 个回复
最合适的回答,由SO网友:kosinix 整理而成

您可以利用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公司

我不希望这段代码运行不止一次(并因此启动我的插件两次!)

不会的。

结束

相关推荐

使用主题文件夹代替plugins_url

我想这很简单,但我无法解决。我正在尝试通过我的主题向WordPress仪表板添加菜单页。我有以下。。。add_menu_page( \'Test\', \'Test\', \'manage_options\', \'myplugin/myplugin-admin.php\', \'\', plugins_url( \'myplugin/image/icon.png\' ), 6 &