WordPress: Snippets für den wp_editor

Da ich diese Snippets regelmäßig benötige und sie mir nicht merken möchte, schreibe ich hier einen kurzen Denkzettel. Falls du zufälligerweise auch ein paar Snippets für den wp_editor() benötigst, umso besser.

h1-Überschrift aus dem Editor entfernen

Manchmal ist es notwendig die h1-Überschrift aus dem Editor zu entfernen, vor allem wenn man Nutzer den Editor verwenden lässt, die nicht unbedingt wissen, wann eine solche Überschrift einzusetzen ist. Dafür gibt es eine Hook:

<?php

add_filter( 'tiny_mce_before_init', function( $args ) {
	$args['block_formats'] = 'Paragraph=p;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;';
	return $args;
} );Code-Sprache: HTML, XML (xml)

Dieses Snippet entfernt den h1-Tag und den pre-Tag aus dem Auswahlmenü.

Einzelne Elemente aus der Toolbar entfernen

Häufig entferne ich die Möglichkeit der Verwendung von Links innerhalb des Editors. Das ist für mich nützlich, damit nicht auf irgendwelche externen Seiten verlinkt werden kann. Wie du einzelne Elemente im wp_editor() hinzufügst oder einfügst, liest du in diesem Beispiel:

<?php

/**
 * Hier werden die allgemeinen Einstellungen für den Editor festgelegt. Die Links werden hierfür entfernt.
 */
$args = [
	'editor_height' => 350,
	'media_buttons' => false,
	'textarea_name' => 'meine_editor_id',
	'quicktags'     => false,
	'tinymce'       => [
		'toolbar1' => 'formatselect,|,bold,italic,underline,|,alignleft,aligncenter,alignright,|,bullist,numlist,|,undo,redo',
		'toolbar2' => '',
		'toolbar3' => '',
	],
];

/**
 * Die Links werden eingefügt, sofern der Benutzer die Rolle Administrator hat.
 */
if ( is_user_logged_in() ) {
	$user = wp_get_current_user();
	if ( in_array( 'administrator', $user->roles ) ) {
		$args['tinymce']['toolbar1'] = 'formatselect,|,bold,italic,underline,|,alignleft,aligncenter,alignright,|,bullist,numlist,|,link,unlink,undo,redo';
	}
}

/**
 * Hier fügen wir jetzt unsere Argumente an den wp_editor weiter.
 */
wp_editor( '', 'meine_editor_id', $args );Code-Sprache: HTML, XML (xml)

So können Administratoren noch die Links im Editor verwenden, andere Rollen jedoch nicht.

Editor in einer Variable speichern

Um die Einstellungen jetzt nicht für jeden Editor den man auf seiner Website einbindet, nachzutragen, kann man den Editor auch in einer Funktion speichern. Dafür müssen wir den Editor buffern und in einer Variable speichern. Das geht folgendermaßen:

<?php

/**
 * Die eigene Editor-Funktion mit den eigenen Funktionen.
 *
 * @return string
 */
function mein_wp_editor() {

	/**
	 * Hier könnten die Argumente vom vorherigen Beispiel eingefügt werden.
	 */
	$args = [];

	/**
	 * Hier buffern wir den Editor in die Variable $wp_editor.
	 */
	ob_start();
	wp_editor( '', 'meine_editor_id', $args );
	$wp_editor = ob_get_contents();
	ob_end_clean();

	/**
	 * Hier geben wir den Editor zurück.
	 */
	return $wp_editor;
}Code-Sprache: HTML, XML (xml)

Jetzt können wir mit <?php echo mein_wp_editor(); ?> den Editor ausgeben. Du kannst jetzt noch Argumente für die Editor ID oder den Inhalt des Editors an die Funktion anhängen, um sie flexibler zu machen. Das habe ich hier bewusst weggelassen.

Interessante Links zum Thema