【问题标题】:Enqueue Scripts on Wordpress Plugin Dialog Window在 Wordpress 插件对话框窗口中排队脚本
【发布时间】:2013-06-25 12:58:39
【问题描述】:

我正在开发一个需要向编辑器添加按钮的 Wordpress 插件。单击按钮时,会打开一个对话框,其中包含一些表单字段。用户可以填写数据,当他们“提交”时,它会在编辑器中创建一个简码。

我能够成功地将按钮添加到编辑器中,并且我已经启动了 AJAX 调用以加载对话框。这是使这成为可能的 JS 的 sn-p:

ed.windowManager.open(
    {
        file : ajaxurl + '?action=my_dialog_window',
        width : 480 + parseInt(ed.getLang('my_app.delta_width',0)),
        height : 300 + parseInt(ed.getLang('my_appdelta_height',0)),
        inline : 1
    },
    {
        plugin_url : url,
        some_custom_arg : 'custom arg'
    }
)

在我的模块中,我调用了以下内容:

add_action('wp_ajax_my_dialog_window', 'my_dialog_window');

基本功能如下所示:

function my_dialog_window()
{
    // Queue JavaScript
    wp_enqueue_script("jquery");
    wp_enqueue_script("tiny_mce_popup",MY_WP_PLUGIN_URL."/js/tiny_mce_popup.js");
    wp_enqueue_script("my-dialog",MY_WP_PLUGIN_URL."/js/my-dialog.js");

    // Display Form
    echo "<form id=\"myForm\" method=\"post\">
        <tr>
            <td align=\"right\" class=\"gray dwl_gray\"><strong>Field:</strong></td>
            <td valign=\"top\"><input name=\"answer1\" type=\"text\" id=\"answer1\" size=\"40\" /></td>
        </tr>
        ...
    </table>

    <div class=\"mceActionPanel\">
        <div class=\"fl\"><input type=\"button\" id=\"insert\" name=\"insert\" value=\"Insert\" onclick=\"MyInsertDialog.insert();\" /></div>
        <div class=\"fr\"><input type=\"button\" id=\"cancel\" name=\"cancel\" value=\"Cancel\" onclick=\"tinyMCEPopup.close();\"/></div>
    </div>
    </form>";
}

因此,您单击编辑器中的按钮并加载对话框。我看到 2 个问题。

首先,不包含 javascript。我可以为它切换到直接链接,但“最佳实践”正在使用 wp_enqueue_script,所以我真的在努力适应这一点。

其次,表单底部是文本:“0”。看起来它找不到相同的回调函数。我真的不需要回调函数,因为我只想使用 my-dialog.js 创建短代码并将其放入编辑器中。

【问题讨论】:

  • 对于文本:“0”。您必须将 die() 或 exit 放在函数 my_dialog_window 的末尾

标签: wordpress


【解决方案1】:

为什么你不能那样做

第一点

function my_dialog_scripts() {
    wp_enqueue_script("jquery");
    wp_enqueue_script("tiny_mce_popup",MY_WP_PLUGIN_URL."/js/tiny_mce_popup.js");
    wp_enqueue_script("my-dialog",MY_WP_PLUGIN_URL."/js/my-dialog.js");
}
add_action('wp_enqueue_scripts', my_dialog_scripts);

第二点

您必须在回调函数结束时调用 die() 或 exit 函数(my_dialog_window

【讨论】:

  • 感谢您的回复。我只希望这些脚本与编辑器中的对话框相关联,而不是在前端,也不在任何其他页面上。你的代码会这样工作吗?
  • 尝试为您的脚本创建短代码并将该短代码放在您想要的特定位置
猜你喜欢
  • 1970-01-01
  • 2021-01-01
  • 2015-06-12
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 2014-05-29
  • 1970-01-01
相关资源
最近更新 更多