it-swarm.com.de

Hinzufügen von benutzerdefinierten TinyMCE-Schaltflächen bei Verwendung von teeny_mce_before_init

Ich verwende den folgenden Code, um eine andere TinyMCE-Leiste als das standardmäßige WordPress-Setup zu erstellen:

if (function_exists('wp_tiny_mce')) {

    add_filter("mce_external_plugins", "add_myplugin_tinymce_plugin");
    add_filter('mce_buttons', 'register_myplugin_button');

    add_filter('teeny_mce_before_init', create_function('$a', '
      $a["theme"] = "advanced";
      $a["skin"] = "wp_theme";
      $a["height"] = "75";
      $a["width"] = "800";
      $a["onpageload"] = "";
      $a["mode"] = "exact";
      $a["elements"] = "Elm1, Elm2";
      $a["editor_selector"] = "mceEditor";
      $a["plugins"] = "safari,inlinepopups,spellchecker";

      $a["forced_root_block"] = false;
      $a["force_br_newlines"] = true;
      $a["force_p_newlines"] = false;
      $a["convert_newlines_to_brs"] = true;

      return $a;'));

    wp_tiny_mce(true);
}

Kann mir jemand sagen, wie man dort einen einfachen benutzerdefinierten Knopf bearbeitet?

Alles was ich brauche ist eine einfache Schaltfläche, die [ph_min] in den Editorbereich druckt.

Ich habe versucht, die folgenden Filter ohne Erfolg zu verwenden:

function register_tcustom_button($buttons)
{
    array_Push($buttons, "|", "highlight");
    return $buttons;
}

function add_tcustom_tinymce_plugin($plugin_array)
{
    $plugin_array['highlight'] = WP_PLUGIN_URL . '/sf-tinyMCE-custom-buttons/mce/min_max_buttons/editor_plugin.js';
    return $plugin_array;
}

add_filter("mce_external_plugins", "add_tcustom_tinymce_plugin");
add_filter('mce_buttons', 'register_tcustom_button');

Gibt es eine Möglichkeit, dies zu tun, oder muss ich ein manuelles TinyMCE-Init verwenden, das von WP nicht unterstützt wird?

1
dunc

Ich glaube, dass Sie Ihren Shortcode bereits registriert haben. Nun müssen wir den Button einleiten. Sobald der Shortcode registriert ist [ph_min], prüfen wir, ob der Benutzer Rich-Editing verwenden kann:

function add_highlight_button() {
   if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages') )
     return;
   if ( get_user_option('rich_editing') == 'true') {
     add_filter('mce_external_plugins', 'add_tcustom_tinymce_plugin');
     add_filter('mce_buttons', 'register_tcustom_button');
   }
}

add_action('init', 'add_highlight_button');

Lassen Sie uns nun den Button registrieren

function register_tcustom_button( $buttons ) {
 array_Push( $buttons, "|", "highlight" );
 return $buttons;
}

Jetzt registrieren wir das TinyMCE-Plugin

function add_tcustom_tinymce_plugin( $plugin_array ) {
   $plugin_array['mylink'] = get_bloginfo( 'template_url' ) . '/script/mybuttons.js';
   return $plugin_array;
}

Und das ist für die JS-Datei, die von der vorherigen Funktion aufgerufen wurde:

(function() {
    tinymce.create('tinymce.plugins.highlight', {
        init : function(ed, url) {
            ed.addButton('highlight', {
                title : 'Highlight',
                image : url+'/yourlink.png',
                onclick : function() {
                     ed.selection.setContent('[ph_min]');

                }
            });
        },
        createControl : function(n, cm) {
            return null;
        },
    });
    tinymce.PluginManager.add('highlight', tinymce.plugins.highlight);
})();

Das ist alles.

2
Daniel Sachs