WP TinyMCE -自定义按钮获取帖子


WP TinyMCE - custom button to get posts

我最终创建了大部分代码,但有几件事我不确定如何处理。

我创建了一个按钮,从一个自定义的帖子类型加载我所有的帖子,工作良好。现在我想添加到弹出对话框一个"预览"按钮,但我不知道如何做到这一点,找不到任何例子

提前感谢您的帮助

(function() {
    tinymce.create('tinymce.plugins.custom_tinymce', {
        /**
         * Initializes the plugin, this will be executed after the plugin has been created.
         * This call is done before the editor instance has finished it's initialization so use the onInit event
         * of the editor instance to intercept that event.
         *
         * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in.
         * @param {string} url Absolute URL to where the plugin is located.
         */
        init : function(ed, url) {
             ed.addButton('nestedtables', {
                title : 'Nested Tables',
                image : url + '../../images/nested-tables.png',
        onclick: function() {
            ed.windowManager.open({
                // Open Popup
                title: 'Choose a Nested Table',
                id: 'choose_table',
                body: [
                {
                      type: 'listbox',
                      id: 'nesttables_label',
                      label: 'Choose a Nested Table',
                      values: ajax_func()
                    }
                ],
                // Add to editor
                onsubmit: function(e) {
                ed.focus();
                ed.insertContent( '<span>' + jQuery('#choose_table .mce-listbox button span').text() + '</span>' );
                }
            });
        }
            });
        },
        /**
         * Creates control instances based in the incomming name. This method is normally not
         * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
         * but you sometimes need to create more complex controls like listboxes, split buttons etc then this
         * method can be used to create those.
         *
         * @param {String} n Name of the control to create.
         * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control.
         * @return {tinymce.ui.Control} New control instance or null if no control was created.
         */
        createControl : function(n, cm) {
            return null;
        },
        /**
         * Returns information about the plugin as a name/value array.
         * The current keys are longname, author, authorurl, infourl and version.
         *
         * @return {Object} Name/value array containing information about the plugin.
         */
        getInfo : function() {
            return {
                longname : 'Nested Tables',
                author : '#',
                authorurl : '#',
                infourl : '#',
                version : "1.0"
            };
        }
    });
    // Register plugin
    tinymce.PluginManager.add( 'custom_tinymce', tinymce.plugins.custom_tinymce );
})();

找到解决方案-

init : function(ed, url) {
     ed.addButton('nestedtables', {
        title : 'Nested Tables',
        image : url + '../../images/nested-tables.png',
onclick: function() {
    ed.windowManager.open({
        // Open Popup
        title: 'Choose a Nested Table',
        id: 'choose_table',
        body: [
        {
              type: 'listbox',
              id: 'nesttables_label',
              label: 'Choose a Nested Table',
              values: ajax_get_tables()
            }
        ],
    buttons: [
      { text: 'Close', onclick: 'close' },
      { text: 'Insert to content', onclick: 'submit' },
      { text: 'Preview', onclick: function() { preview_table(result[0]) } }
    ],
    onselect: function() {
      result = jQuery('#choose_table .mce-listbox button span').text().split(' | ');
    },
        // Add to editor
        onsubmit: function(e) {
        ed.focus();
        ed.insertContent( '<span>[NestedTable id="' + result[0] + '"]</span>' );
        }
    });
}
    });
},