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

时间:2016-10-05 15:40:52

标签: php ajax wordpress tinymce

我设法最终创建了大部分代码,但是我不知道如何处理这些事情......

我创建了一个按钮,可以从自定义帖子类型加载我的所有帖子。现在我想在弹出对话框中添加一个"预览"按钮,但我不知道该怎么做,无法找到任何示例

提前感谢您提供任何帮助

(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 );

})();

1 个答案:

答案 0 :(得分:0)

找到解决方案 -

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>' );
        }
    });
}
    });
},