Anleitung zum Erstellen eigener WordPress-Editor-Schaltflächen

Höchstwahrscheinlich wissen Sie, dass WordPress mit dem HTML-WYSIWYG-Editor TinyMCE gebündelt ist. Die Vielzahl an Funktionen und die Möglichkeit, durch Plugins erweitert zu werden, machen ihn zum meistbenutzten WYSIWYG-Editor der Welt. WordPress nutzt jedoch nicht alle Funktionen. WordPress passt es an und behält nur Teile bei, die für Benutzer wirklich hilfreich sind, um die Benutzeroberfläche nicht durcheinander zu bringen. Das bedeutet auch, dass einige Funktionen, z. B. Schaltflächen, für Benutzer ausgeblendet wurden. Sie können die verborgenen MCE-Tasten vollständig aktivieren. Normalerweise sind sie es Stylesheet, Sub, sup Tasten. Wenn auch die versteckten nicht Ihren Bedürfnissen entsprechen, müssen Sie ein TinyMCE-Plugin erstellen, um Ihr eigenes hinzuzufügen. In diesem Tutorial werde ich Sie durch die Grundlagen des Hinzufügens Ihrer WordPress-Editor-Schaltflächen führen, indem Sie ein TinyMCE-Plugin erstellen.


Bevor wir anfangen

Wie bereits erwähnt, werden wir ein neues TinyMCE-Plugin erstellen, dessen Aufgabe darin besteht, die neuen Schaltflächen hinzuzufügen, die wir benötigen. Welche Knöpfe werden wir hinzufügen? Wir werden versuchen, zwei einfache Schaltflächen hinzuzufügen: Dropcap und kürzliche Posts, Die erste gibt Ihnen die Möglichkeit, einen ausgewählten Buchstaben in einen Großbuchstaben umzuwandeln, und in letzterer werden die letzten Beiträge angezeigt. Der Code generiert diese unten gezeigten Schaltflächen.

Erstellen wir einen neuen Ordner mit dem Namen Wptuts-Editor-Schaltflächen (Sie können es natürlich in etwas anderes ändern, wenn Sie möchten) in Ihrem Design-Verzeichnis (ich verwende TwentyTwelve). Erstellen Sie zwei neue Dateien, wptuts.php das ruft angepasste PHP auf, und die andere benannte wptuts-plugin.js wo sich die JavaScript-Codeausschnitte befinden. Schließlich öffnen Sie Ihr Thema Functions.php Datei und schließen Sie das neu erstellte wptuts.php Datei darin. Beachten Sie, dass Sie den Pfad genau definieren müssen:

 erfordern ('wptuts-editor-buttons / wptuts.php');

Dann müssen wir etwas Code für diese beiden Tasten vorbereiten:

  • Dropcap - Ein idealer Weg, um einen Buchstaben in Drop Caps umzuwandeln, besteht darin, den ausgewählten Buchstaben des Benutzers innerhalb einer vordefinierten HTML-Bereichsklasse einzuhüllen, wobei die Stile des Buchstabens wie Drop Caps aussehen. Der CSS-Code der unten abgebildeten Klasse hängt ihn einfach an Ihr Thema an style.css Datei:
     / * Diesen Code in style.css hinzufügen * / .dropcap float: left; Schriftgröße: 80px; Polsterung rechts: 7px; Zeilenhöhe: 72px; 
  • kürzliche Posts - Wir werden einen Shortcode erstellen, der eine Liste der letzten Beiträge auf der Seite hinzufügt wptuts.php Datei und fügen Sie den folgenden Code hinzu:
     add_shortcode ('recent-posts', 'wptuts_recent_posts'); Funktion wptuts_recent_posts ($ atts) extract (shortcode_atts (array ('numbers' => '5',), $ atts)); $ rposts = new WP_Query (array ('posts_per_page' => $ numbers, 'orderby' => 'date')); if ($ rposts-> have_posts ()) $ html = '

    kürzliche Posts

      '; while ($ rposts-> have_posts ()) $ rposts-> the_post (); $ html. = sprintf ('
    • % s
    • ', get_permalink ($ rposts-> post-> ID), get_the_title (), get_the_title ()); $ html. = '
    '; wp_reset_query (); return $ html;

    Wir gehen davon aus, dass, wenn Benutzer auf das Symbol klicken kürzliche Posts Wenn Sie auf die Schaltfläche klicken, wird im Browser ein Dialogfeld angezeigt, in dem Sie nach der Anzahl der Beiträge gefragt werden, die angezeigt werden sollen. Nachdem diese Nummer eingegeben wurde, füllt der Editor sie als Argument in den obigen Kurzcode. Wenn Sie beispielsweise sieben aktuelle Beiträge anzeigen möchten, wird der Kurzcode wie folgt generiert:

     [Recent-posts numbers = "7" /]

Registrieren eines neuen TinyMCE-Plugins

Vorausgesetzt, wir hatten bereits das neue Plugin, müssen wir es bei WordPress registrieren, um es in den TinyMCE-Editor zu integrieren. Der Code wird unten gezeigt:

 add_action ('init', 'wptuts_buttons'); Funktion wptuts_buttons () add_filter ("mce_external_plugins", "wptuts_add_buttons"); add_filter ('mce_buttons', 'wptuts_register_buttons');  Funktion wptuts_add_buttons ($ plugin_array) $ plugin_array ['wptuts'] = get_template_directory_uri (). "/wptuts-editor-buttons/wptuts-plugin.js"; return $ plugin_array;  Funktion wptuts_register_buttons ($ buttons) array_push ($ buttons, 'dropcap', 'showrecent'); // dropcap ',' Recentposts geben $ buttons zurück; 

Der wichtige Filterhaken mce_external_plugins wird verwendet, um das neue Plugin an TinyMCE anzuhängen. Wir müssen eine Plugin-ID übergeben (wptuts) und die absolute URL zu unserer wptuts-plugin.js Datei. Das mce_buttons Mit hook wird dem TinyMCE-Editor mitgeteilt, welche Schaltflächen in unserem Plugin angezeigt werden sollen. Das Dropcap und Showrecent sind die ID-Werte dieser Schaltflächen, die wir erstellen möchten. Denken Sie daran, dass diese Werte später verwendet werden.


Einrichten des TinyMCE-Plugins

Im Allgemeinen denke ich, dass der beste Weg, etwas auf einer Plattform zu erweitern oder zu entwickeln, die Dokumentation für diese Plattform ist. TinyMCE hat ein eigenes Wiki, das Sie möglicherweise nützlich finden. Nachfolgend ein Beispiel für die Erstellung eines TinyMCE-Plugins: Wir haben den folgenden Initialisierungscode:

 (function () tinymce.create ('tinymce.plugins.Wptuts', / ** * Initialisiert das Plugin. Dieses wird ausgeführt, nachdem das Plugin erstellt wurde. * Dieser Aufruf erfolgt, bevor die Editorinstanz ihre Initialisierung abgeschlossen hat Verwenden Sie daher das Ereignis onInit * der Editorinstanz, um dieses Ereignis abzufangen. * * @param tinymce.Editor ed Die Editorinstanz, in der das Plugin initialisiert wird. * @param string url Absolute URL, an der sich das Plugin befindet. * / init: function (ed, url) , / ** * Erstellt Steuerelementinstanzen basierend auf dem eingegangenen Namen. Diese Methode ist normalerweise * nicht erforderlich, da die addButton-Methode der Klasse tinymce.Editor eine einfachere Methode zum Hinzufügen ist Schaltflächen * Sie müssen jedoch manchmal komplexere Steuerelemente erstellen, wie z. B. Listenfelder, Schaltflächen zum Trennen von Schaltflächen usw. Diese * -Methode kann zum Erstellen dieser Steuerelemente verwendet werden. * * @param String n Name des zu erstellenden Steuerelements. * @param tinymce.ControlManager  cm Steuermanager, um das neue Steuerelement zu erstellen. * @return tinymce.ui.Control Neues Steuerelement inst ance oder null, wenn kein Steuerelement erstellt wurde. * / createControl: Funktion (n, cm) return null; , / ** * Gibt Informationen über das Plugin als Name / Wert-Array zurück. * Die aktuellen Schlüssel sind Langname, Autor, Autor, Infourl und Version. * * @return Object Name / Wert-Array mit Informationen zum Plugin. * / getInfo: function () return Langname: 'Wptuts Buttons', Autor: 'Lee', Autorurl: 'http://wp.tutsplus.com/author/leepham', Infourl: 'http: // wiki. moxiecode.com/index.php/TinyMCE:Plugins/example ', Version: "0,1"; ); // Plugin registrieren tinymce.PluginManager.add ('wptuts', tinymce.plugins.Wptuts); ) ();

Denken Sie daran, diesen Code in die wptuts-plugin.js Datei. Wir haben die Code-Kommentare für Sie hinterlassen, um leicht zu verstehen, was los ist. Der obige Code führt nur zwei Hauptaufgaben aus:

  1. Definieren Sie zunächst ein neues TinyMCE-Plugin auf sichere Weise, indem Sie TinyMCEs aufrufen erstellen Methode. Das Verhalten unseres Plugins wird im definiert drin und createControl Funktionen. Sie können sehen, dass die Informationen des Plugins im angegeben sind Informationen bekommen Funktion auch. Unser Plugin wird den Namen haben Wptuts und die ID wptuts Wie du siehst.
  2. Fügen Sie einfach unser neues Plugin in den TinyMCE Plugin Manager ein.

Schaltflächen erstellen

In dem drin Funktion, beginnen wir unsere Schaltflächen zu erstellen. Der Code sieht wie folgt aus:

 (function () tinymce.create ('tinymce.plugins.Wptuts', init: function (ed, url)) ed.addButton ('dropcap', title: 'dropCap', cmd: 'dropcap', Bild: url + '/dropcap.jpg'); ed.addButton ('showrecent', title: 'Zuletzt hinzugefügte Posts shortcode hinzufügen', cmd: 'showrecent', Bild: url + '/recent.jpg');, //… versteckter Code); // Plugin registrieren tinymce.PluginManager.add ('wptuts', tinymce.plugins.Wptuts);) ();

Mit der addButton Methode der ed Objekt sagen wir dem aktuellen Editor, dass wir alle diese Schaltflächen erstellen wollen. Diese Methode akzeptiert zwei Argumente:

  • Die erste ist die ID der Schaltfläche. Im vorherigen Abschnitt haben wir es erwähnt. Es muss dasselbe sein wie das, das wir zuvor definiert haben. Andernfalls funktioniert es nicht richtig.
  • Die zweite ist das Objekt, das die Informationen der Schaltfläche enthält, z.
    • Der Titel der Schaltfläche
    • Das Wichtigste: Die Aufgabe, die die Schaltfläche übernimmt. Schauen Sie sich das an cmd Eigenschaft hat den Wert von Showrecent. Das ist die ID des Befehls, die bei jedem Aufruf ausgeführt wird. Wir werden in Kürze ins Detail gehen
    • Das Bild der Schaltfläche. Beachten Sie, dass der URL-Parameter die URL des absoluten Verzeichnisses enthält, in der sich unser Plugin befindet. Dadurch können Sie das gewünschte Bild leichter referenzieren. Sie müssen Ihr Bild also im Ordner des Plugins ablegen und sicherstellen, dass sein Name genau auf den Wert eingestellt ist BildWert.

Überprüfen Sie nun den WordPress-Editor und wir werden sehen, wie unsere Schaltflächen angezeigt werden. Im Moment tun sie aber nichts.


Unsere Knöpfe tauchten auf.

Hinzufügen von Schaltflächenbefehlen

Wir haben den Namen der Befehle definiert, die von unseren Schaltflächen ausgeführt werden, aber noch nicht definiert, was sie tatsächlich ausführen sollen. In diesem Schritt werden wir festlegen, was unsere Tasten tun werden. In der drin Funktion, fügen Sie diesen Code wie gezeigt hinzu:

 (function () tinymce.create ('tinymce.plugins.Wptuts', init: function (ed, url)) ed.addButton ('dropcap', title: 'dropCap', cmd: 'dropcap', Bild: url + '/dropcap.jpg'); ed.addButton ('showrecent', title: 'Zuletzt hinzugefügte Posts shortcode hinzufügen', cmd: 'showrecent', Bild: url + '/recent.jpg'); addCommand ('dropcap', function () var selected_text = ed.selection.getContent (); var return_text = "; return_text = ''+ selected_text +''; ed.execCommand ('mceInsertContent', 0, Rückgabetext); ); ed.addCommand ('showrecent', function () var number = Eingabeaufforderung ("Wie viele Posts möchten Sie anzeigen?"), shortcode; if (number! == null) number = parseInt (number); if (number > 0 && Nummer <= 20)  shortcode = '[recent-post number="' + number + '"/]'; ed.execCommand('mceInsertContent', 0, shortcode);  else  alert("The number value is invalid. It should be from 0 to 20.");   ); , //… Hidden code ); // Register plugin tinymce.PluginManager.add( 'wptuts', tinymce.plugins.Wptuts ); )();

Jetzt die ed.addCommand Diese Methode hilft uns, einen neuen Befehl hinzuzufügen. Sie müssen die Befehls-ID und die Rückruffunktion übergeben, die ausgeführt wird, wenn sie vom aufgerufen wurde ed.execCommand Methode. Beachten Sie, dass ed repräsentiert die tinyMCE.activeEditor Objekt. Schauen wir uns die Callback-Funktionen an:

  • In dem Dropcap Wenn Sie einen Befehl auswählen, wählen Sie einen Buchstaben aus und klicken auf die DropCap Wenn Sie die Taste drücken, wird der Brief in eine Drop-Cap-Form umgewandelt. Wie bekommen wir diesen Brief? Nun die ed.selection.getContent Methode wird das für uns tun. Sobald wir diesen Brief erhalten haben, wickeln wir ihn einfach in ein Spanne Element. Denken Sie daran, den Klassenwert dieses Elements auf zu setzen Dropcap dass wir vorher definiert haben, richtig? Schließlich haben wir den vollständigen Text, der wieder in den Editor eingefügt werden muss. TinyMCE hat einen Standardbefehl mit dem Namen mceInsertContent Diese Funktion wird zum Einfügen bestimmter Inhalte in den Editor verwendet. Die Verwendung dieser Informationen finden Sie oben. Der Inhalt wird als drittes Argument von übergeben mceInsertContent Methode.
  • Ähnliches passiert im Showrecent Befehl wie in der Dropcap Befehl, außer dass der ausgewählte Inhalt des Benutzers nicht abgerufen werden muss. Wir zeigen einfach ein Dialogfeld an, in dem der Benutzer gefragt wird, wie viele Beiträge angezeigt werden sollen, und fügt diesen Zahlenwert in eine entsprechende Shortcode-Syntax ein.

Registrieren von benutzerdefiniertem CSS für Schaltflächen (optional)

Anstatt reinen Text hinzuzufügen, wenn die Schaltflächen Inhalt in den visuellen Editor einfügen, können Sie ihn deutlich visueller gestalten, indem Sie benutzerdefiniertes CSS für unsere Schaltflächen registrieren. Es hängt von der Art der Inhaltsdaten ab, und Sie können einen geeigneten Stil auswählen. Zum Beispiel unser DropcapDer Stil des Styles kann dem des Frontends entsprechen. So können Sie den CSS-Code ganz oben in diesem Beitrag verwenden und ihn dann in den Ordner einfügen editor-style.css Datei (Standardeinstellung siehe add_editor_style für detais).

Für Kurzwahlen haben sie möglicherweise selbst kein HTML-Element. Wie sollen wir sie gestalten? Nun, diese Situation ist viel komplexer, um das Ergebnis zu erreichen, aber es ist nicht unmöglich (einige Standard-WordPress-Schaltflächen wie "Medien hinzufügen" werden angezeigt). Es kann jedoch immer noch schwierig sein, diesen Shortcode in ein HTML-Element einzuhüllen und dann wie oben beschrieben zu gestalten. Es ist ziemlich einfach, aber nicht ganz perfekt. In diesem Beitrag werden wir uns nicht auf diese komplexe Verarbeitung konzentrieren.


Ergebnisse

Schließlich werden die Ergebnisse, die wir erhalten, folgendermaßen dargestellt:


Testen Sie die Dropcap-Taste.

Dann am Frontend:


Dropcap-Brief im Frontend.

Und die Schaltfläche Recent Posts funktioniert auch gut:


Die Schaltfläche "Letzte Beiträge" hat funktioniert.

Fazit

Okay, wir haben eine Übung behandelt, die ziemlich einfach und leicht zu folgen ist. Möglicherweise stellen Sie fest, dass Sie mit der Schaltfläche "Letzte Beiträge" eine Einstellung anpassen können (die Anzahl der Beiträge, die angezeigt werden). Sie wissen sicherlich, dass wir das Standard-JavaScript verwendet haben, Prompt, das zu erreichen. Was ist, wenn Sie ein komplexeres Popup wünschen, das viele statt nur eine Einstellung hat? In einem anderen Beitrag werden wir das besprechen und einen anderen Ansatz ausprobieren.

Jedes Feedback zu diesem Beitrag wird geschätzt. Danke fürs Lesen und bis später.


Referenz

  • TinyMCE_Custom_Buttons
  • Ein TinyMCE-Plugin erstellen