kulturbanause Blog

Responsive Design, WordPress, Konzeption, HTML, CSS, JS & UX/UI …

Eigene Formatvorlagen für den WordPress-Editor (TinyMCE) erstellen

WordPress verwendet als Eingabemaske zum Bearbeiten von Beiträgen und Seiten den sog. TinyMCE-Editor. TinyMCE bietet bereits in der Standardausführung viele nützliche Textauszeichnungen für die redaktionelle Arbeit. Möchte man den Umfang an verfügbaren Formatierungen um eigene Auszeichnungen ergänzen, bieten WordPress und TinyMCE die Möglichkeit zusätzliche Formatvorlagen zu erstellen und diese in den Editor zu integrieren. Wir zeigen euch in diesem Artikel anhand eines anschaulichen Beispiels, wie ihr den WordPress-Editor um zusätzliche Formatvorlagen erweitert.

Workshops und Seminare von kulturbanause

Unsere Seminar-Termine für 2018 sind online!

Jetzt Tickets sichern!

WordPress-Editor um Auswahlliste für Formate erweitern

Um dem TinyMCE-Editor weitere Formatvorlagen hinzufügen zu können, müsst ihr dem Editor-Menü zunächst ein neues Select-Feld hinzufügen. Hierzu schreibt ihr folgenden Code in die funktions.php eures Themes oder in ein seitenspezifisches Plugin.

function kb_mce_buttons_2( $buttons ) {
   array_unshift( $buttons, 'styleselect' );
   return $buttons;
}
add_filter( 'mce_buttons_2', 'kb_mce_buttons_2' );

Anschließend erscheint in der zweiten Zeile des TinyMCE-Editors das Auswahlfeld »Formate« mit allen Standard-Formatierungen.

TinyMCE-Editor mit Formaten
TinyMCE-Editor mit »Formats«-Auswahl

Eigene Formatvorlagen zur Liste hinzufügen

Nachdem ihr dem TinyMCE-Menü die »Formate«-Auswahl hinzugefügt habt, könnt ihr den Inhalt der Auswahlliste durch eigene Formate ersetzen. In unserem Beispiel fügen wir folgende drei Formate hinzu:

  • Button: Kann nur auf Links (<a>) angewendet werden und fügt dem Link das Class-Attribut .btn hinzu
  • Textmarkierung: Umschließt eine Textmarkierung mit dem HTML-Inline-Element <mark>
  • Infobox: Umschließt eine Textmarkierung mit dem HTML-Block-Element <div> und fügt diesem das Class-Attribut .infobox hinzu

Erweitert euren oben geschrieben Code dazu um folgende Zeilen:

function kb_mce_before_init_insert_formats( $init_array ) {
   $style_formats = array(
     // Button
     array(
       'title' => 'Button',
       'selector' => 'a',
       'classes' => 'btn',
     ),
     // Textmarkierung
     array(
       'title' => 'Textmarkierung',
       'inline' => 'mark',
     ),
     // Infobox
     array(
       'title' => 'Infobox',
       'block' => 'div',
       'classes' => 'infobox',
       'wrapper' => 'true',
     ),
   );
   $init_array['style_formats'] = json_encode( $style_formats );
   return $init_array; 
}
add_filter( 'tiny_mce_before_init', 'kb_mce_before_init_insert_formats' );

Achtet darauf, das jedes eurer Formate einen Titel (title) hat, damit ihr es später in der Auswahl auch finden könnt. Markiert ihr später im WordPress-Editor einen bestimmten Textabschnitt und wählt anschließend ein Format aus, so wird dieses auf die Auswahl übernommen. Wie bereits beschrieben, haben wir drei Formate hinzugefügt, die alle relevanten Einstellungsmöglichkeiten abdecken. Im Folgenden gehen wir noch einmal im Detail auf die drei Optionen ein.

Beispiel 1: Aus einem Link einen Button (.btn) machen

Wenn ihr mit Hilfe einer Formatvorlage einen Link wie einen Button gestalten möchtet, wählt zunächst mit Hilfe von selector aus, welchen HTML-Elementen die CSS-Klasse (im Beispiel .btn) zugewiesen werden darf. classes legt fest, welche Klasse(n) hinzugefügt werden.

array(
  'title' => 'Button', // Titel in der Formatauswahl
  'selector' => 'a', // Erlaubte HTML-Elemente
  'classes' => 'btn', // hinzugefügte Klasse
),

Beispiel 2: Textmarkierung <mark> hinzufügen

Eine Textmarkierung könnt ihr mit Hilfe des Inline-Elements <mark> erzeugen. Hierzu notiert ihr den Namen des Elements als Wert für den Schlüssel inline. Anschließend wird die Auswahl im WordPress-Editor mit dem angegebenen Element umschlossen.

array(
  'title' => 'Textmarkierung', // Titel in der Formatauswahl
  'inline' => 'mark', // Hinzugefügtes Inline-Element
),

Beispiel 3: Einen markierten Bereich in eine Infobox umwandeln

Wenn ihr einen markierten Textabschnitt mit einem Element umschließen (wrappen) wollt, müsst ihr den Wert von wrapper auf true setzen. Die angegebene Klasse (im Beispiel .infobox) wird nun dem neu erzeugten umschließenden Element zugewiesen. Im Beispiel fügen wir das Block-Element <div> hinzu.

array(
  'title' => 'Infobox', // Titel in der Formatauswahl
  'block' => 'div', // Erzeugtes Block-Element
  'classes' => 'infobox', // Zugewiesene CSS-Klasse
  'wrapper' => 'true', // Die Auswahl wird umschlossen
),
TinyMCE-Editor mit angepasster »Formats«-Auswahl

 

Styling der zusätzlichen Formate im Editor sichtbar machen

Um das Styling eurer zusätzlichen Formate auch im WordPress-Editor und nicht nur im Frontend sichtbar zu machen, müsst ihr ein eigenes Stylesheet für den Editor einbinden. Einen ausführlichen Artikel dazu findet ihr hier.

Links / Quellen

Jetzt bist du gefragt!

Hast du Anregungen, Ergänzungen, einen Fehler gefunden oder ist dieser Beitrag nicht mehr aktuell? Dann freuen wir uns auf deinen Kommentar.

Du kannst diesen Beitrag natürlich auch weiterempfehlen. Wir sind dir für jede Unterstützung dankbar!

Unterstützung bei WordPress-Projekten

Unsere WordPress Agentur ist auf die Entwicklung maßgeschneiderter WordPress-Themes und -Websites spezialisiert. Wenn du Unterstützung bei der Planung, Gestaltung und Entwicklung eines Projekts benötigst, helfen wir gerne weiter.
WordPress-Leistungsangebot →

Das könnte dich auch interessieren

2 Kommentare

  1. Jan

    Verfasst am 7. September 2017 um 14:19 Uhr.

    Vielen Dank für den interessanten Beitrag. Mit WordPress kann man viel machen. Man muss sich nur etwas hineinarbeiten.
    Mit besten Grüßen,
    Jan

  2. Stefan K.

    Verfasst am 9. November 2017 um 8:49 Uhr.

    Vielen Dank für diesen tollen Tipp. Hochinteressant – das werde ich auf jeden Fall nutzen. Grüße, Stefan K.

Kommentar verfassen

Dieser Blog lebt vom Feedback der Besucher! Also los, mach mit!
Bitte habe Verständnis dafür, dass Kommentare die mit dem Inhalt dieses Beitrags nichts zu tun haben, gelöscht werden.