在TinyMCE插件中显示对话框并在其中使用WordPress php函数

时间:2011-02-04 作者:Fernando Briano

我在插件中添加了一个TinyMCE按钮。到目前为止,我已经能够添加按钮并调用我的editor\\u插件。js文件及其命令。顺便说一句,这不是一个容易的任务。。。

我希望此按钮显示一个对话框,为用户提供多个选项。这些是我需要填写的下拉框和一些用户只需编写输入的文本框。其中一些需要来自WordPress函数的信息,而另一些只是静态信息。

接受此对话框后,我希望它在帖子上写下快捷码,以便我的插件显示在框中选择的选项。

问题是,我想在php文件中使用WordPress的一些函数。但这有点“断章取义”。我不能使用WordPress函数,甚至__() i18n的功能。

下面是我在TinyMCE示例中使用的代码:

ed.addCommand(\'mceExample\', function() {
                            ed.windowManager.open({
                                    file : url + \'/box.php\',
                                    width : 500 + ed.getLang(\'example.delta_width\', 0),
                                    height : 300 + ed.getLang(\'example.delta_height\', 0),
                                    inline : 1
                            }, {
                                    plugin_url : url, // Plugin absolute URL
                                    some_custom_arg : \'custom arg\' // Custom argument
                            });
                    });
我也错过了写这篇文章的方式。正如您在这里所看到的,此代码不使用任何内容写入帖子。我尝试使用在另一个示例中找到的代码:ed.execCommand(\'mceInsertContent\', false, \'Hello World\'); 但我还没有发现如何在我的新脚本中使用它。

很抱歉,如果之前已经回答了这个问题,但是所有关于TinyMCE seams的文档都很混乱,我很难将其集成到我的插件中。提前谢谢。

1 个回复
SO网友:ungestaltbar

而不是要求管理员。php您可以使用WP内置的ajax功能,即使在这种情况下它不是ajax。

Add a hook

 add_action(\'wp_ajax_my_plugin_function\', \'my_plugin_function_callback\');

Create your output function (callback)

function my_plugin_function_callback() {
    // do stuff
}

Call it this way

而不是:

file : url + \'/box.php\',
您应该能够使用全局ajaxurl:

file: ajaxurl + \'?action=my_plugin_function&optional=data ...
出于安全原因,可能会添加一个nonce,但这取决于您:)

结束