So machen Sie es Kunden schwer, WordPress zu vermasseln

Veröffentlicht: 2022-03-10
Kurze Zusammenfassung ↬ WordPress ist ein wunderbar leistungsstarkes CMS, das mit vielen vielseitigen Funktionen geliefert wird, die ihm die Flexibilität verleihen, für eine Vielzahl von Benutzern sofort einsatzbereit zu sein. Wenn Sie jedoch ein Profi sind, der benutzerdefinierte Themen und Plugins erstellt, können diese Funktionen manchmal problematisch sein. Dieselben Funktionen und Optionen, die es Standarddesigns ermöglichen, sich an viele verschiedene Anwendungsfälle anzupassen, können manchmal auch verwendet werden, um ein sorgfältig entworfenes benutzerdefiniertes Design zu untergraben, das für einen bestimmten Anwendungsfall erstellt wurde.

WordPress ist ein wunderbar leistungsstarkes CMS, das mit vielen vielseitigen Funktionen geliefert wird, die ihm die Flexibilität geben, für eine Vielzahl von Benutzern sofort einsatzbereit zu sein. Wenn Sie jedoch ein Profi sind, der benutzerdefinierte Themen und Plugins erstellt, können diese Funktionen manchmal problematisch sein. Dieselben Funktionen und Optionen, die es Standarddesigns ermöglichen, sich an viele verschiedene Anwendungsfälle anzupassen, können manchmal auch verwendet werden, um ein sorgfältig entworfenes benutzerdefiniertes Design zu untergraben, das für einen bestimmten Anwendungsfall erstellt wurde.

Der folgende Artikel umfasst eine Sammlung von Codeschnipseln, die ich bei fast jedem WordPress-Projekt immer wieder verwende. Allen gemeinsam ist, dass sie Funktionen einschränken, die entweder unnötig, verwirrend oder unsicher sind. Alles, was folgt, kann auf jeder Website verwendet werden, aber diese Tipps gelten besonders für Profis, die benutzerdefinierte Designs und Plugins für Kunden erstellen.

Weiterführende Literatur zu SmashingMag:

  • Wie man ein untergeordnetes WordPress-Theme erstellt und anpasst
  • Effektive Dokumentation für WordPress-Endbenutzer schreiben
  • Einschränken der Sichtbarkeit von Beiträgen in WordPress über Benutzernamen
  • Verwenden von Benutzerrollen in WordPress

Der bemerkenswerte Unterschied besteht darin, dass benutzerdefinierte Themen erstellt werden können, um einem bestimmten Zweck zu dienen. Die Lücken für die Inhalte der Autoren können und sollten also auch deutlich enger sein. Ein gut gestaltetes WordPress-Theme sollte so viele Designentscheidungen wie möglich treffen, damit der Autor dies nicht tun muss.

Mehr nach dem Sprung! Lesen Sie unten weiter ↓

Deaktivieren Sie den Plugins- und Theme-Editor

Es gibt keinen guten Grund, warum jemand Ihr benutzerdefiniertes Design oder Ihre Plugin-Dateien über das WordPress-Dashboard live bearbeiten sollte. Profis arbeiten nicht auf diese Weise, und Muggel wissen normalerweise nicht, wie einfach es ist, eine Website zu beschädigen, indem man ein einzelnes Semikolon überspringt. Es ist auch eine Sicherheitslücke, die Hacker ausnutzen können. Glücklicherweise haben unsere Freunde von WordPress.org es wirklich einfach gemacht, diese Funktion zu deaktivieren. Fügen Sie einfach das folgende Snippet zur Datei wp-config.php hinzu .

 define( 'DISALLOW_FILE_EDIT', true );

Zusätzlich zum Theme-Editor wird dadurch auch der Plugin-Editor deaktiviert. Ich halte das für ein Feature und nicht für einen Bug.

WordPress-Plugin-Editor
WordPress-Plugin-Editor. (Große Version anzeigen)

Beschränken Sie den visuellen und Texteditor

Standardmäßig unterstützt der WordPress WYSIWYG-Editor viel zu viele Formatierungsoptionen für ein gut gestaltetes benutzerdefiniertes Design. Das Überschreiben von Textfarben oder Schriftgrößen durch Kunden ist eine schnelle Möglichkeit, selbst die schickste Website billig und hässlich aussehen zu lassen. Wenn der Text von Blogposts so gestaltet ist, dass er immer linksbündig ausgerichtet ist, warum sollte man dem Autor dann eine Schaltfläche geben, um ihn rechtsbündig auszurichten? Glauben Sie, dass es gut aussehen wird, wenn der Text auf der Info-Seite lila, fett und kursiv ist? Dann bewaffnen Sie Ihren Kunden nicht mit den Mitteln, dies zu tun. In den meisten Situationen empfehle ich, den visuellen Editor vollständig zu deaktivieren.

Hässliche Typografieseite
Hässliche Typografieseite. (Große Version anzeigen)

Deaktivieren des visuellen Editors

Fügen Sie das folgende Snippet zur Datei functions.php Ihres Themes hinzu und die Registerkarte zum Umschalten des WYSIWYG-Editors verschwindet.

 function emersonthis_disable_visual_editor(){ # add logic here if you want to permit it selectively return false; } add_filter('user_can_richedit' , 'emersonthis_disable_visual_editor', 50);

Dies ist ein guter Anfang, aber Sie werden feststellen, dass die Schaltflächen für Fett- und Kursivschrift immer noch im einfachen Texteditor vorhanden sind. Meiner Erfahrung nach missbrauchen Clients diese Schaltflächen viel seltener, wenn die sofortige Befriedigung des WYSIWYG-Editors weg ist. Aber ich ziehe es immer noch vor, sie zu entfernen, wenn sie nicht notwendig sind.

Die Registerkarte des visuellen Editors
Die Registerkarte des visuellen Editors. (Große Version anzeigen)

Entfernen von fetten und kursiven Quicktags aus dem Texteditor

Der Texteditor verfügt über Quicktag-Schaltflächen, die ausgewählten Text mit <strong> - und <em> -Tags umschließen. Fügen Sie den folgenden Code in die Datei functions.php Ihres Themes ein und Autoren haben keine fetten oder kursiven Schaltflächen mehr.

 # Removes bold and italic quicktags from text editor function emersothis_quicktags_settings( $qtInit ) { //To disable ALL butons it must be set to "," (not "") $qtInit['buttons'] = 'more,'; return $qtInit; } add_filter('quicktags_settings', 'emersonthis_quicktags_settings');

Dadurch wird die Möglichkeit ausgeschlossen, dass Ihr Kunde beispielsweise einen ganzen Artikel kursiv schreibt. Dies entfernt jedoch nicht die Möglichkeit, Markup von Hand in den Texteditor zu schreiben. Hin und wieder kann das nützlich sein, wenn Sie in Not sind.

Wenn Sie sich in einer seltenen Situation befinden, in der der Benutzer den Text selbst formatieren sollte, können Sie den visuellen Editor aktiviert lassen, aber bestimmte Schaltflächen einzeln deaktivieren.

Deaktivieren von Schaltflächen im visuellen Editor

Eines der wenigen Male, in denen ich den visuellen Editor aktiviert lasse, ist, wenn Autoren lange Posts oder Seiten schreiben, die eine eigene interne Struktur haben. Beispielsweise benötigt ein Autor eines 10-seitigen Artikels möglicherweise die Möglichkeit, Unterüberschriften hinzuzufügen. In diesen Situationen richte ich benutzerdefinierte Klassen für die Unterabschnitte ein und deaktiviere dann alle anderen Formatierungsschaltflächen, die nicht benötigt werden.

Die WordPress-API zum Ändern des TinyMCE-Editors ist etwas schwierig, da Sie die Codenamen nachschlagen müssen, die verwendet werden, um auf jede Schaltfläche zu verweisen, die Sie entfernen möchten. Sie erhalten das Beste für Ihr Geld, indem Sie die Schaltfläche „Küchenspüle“ entfernen, die die gesamte zweite Reihe umschaltet, die die problematischsten Formatierungsschaltflächen enthält. Fügen Sie dazu den folgenden Code zur Datei functions.php Ihres Themes hinzu.

 # Remove visual editor buttons function emersonthis_tinymce_buttons($buttons) { # Remove the text color selector $remove = array('wp_adv'); //Add other button names to this array # Find the array key and then unset return array_diff($buttons,$remove); } add_filter( 'mce_buttons', 'emersonthis_tinymce_buttons' );

Ein Trick, um den Codenamen der Schaltfläche herauszufinden, die Sie entfernen möchten, besteht darin, das Markup des Formulars zu untersuchen. Zum Zeitpunkt des Schreibens hat jede Schaltfläche einen Klassennamen, der mit mce-i- beginnt, gefolgt von dem Codenamen, den Sie in das obige Array einfügen würden.

Entfernen Sie die Schaltfläche „Medien hinzufügen“.

Die Schaltfläche „Medien hinzufügen“ wird standardmäßig angezeigt, wenn ein benutzerdefinierter Beitragstyp die Editor-Funktion unterstützt. Aber benutzerdefinierte Beitragstypen können für eine Vielzahl von Dingen verwendet werden, und oft ist es unangemessen, dass dieses Feld Bilder enthält.

Blogpost voller hässlicher Bilder
Blogpost voller hässlicher Bilder. (Große Version anzeigen)

Meistens, wenn ich erwarte, dass der Autor ein Bild zum Text veröffentlicht, verwende ich Post-Thumbnails (auch bekannt als vorgestellte Bilder). Dies erleichtert die Integration der Bilder in Themenvorlagen und gibt dem Entwickler auch mehr Kontrolle über die Größe und Spezifikationen der Bilder.

Ad-hoc-Fotos, die über die Schaltfläche „Medien hinzufügen“ im Editor eingebettet wurden, sind schwer zu kontrollieren und sehen je nachdem, wo der Autor das Bild im Verhältnis zum umgebenden Text einfügt, tendenziell unangenehm aus. Sie sorgen auch bei vielen Autoren für Verwirrung, da die Schaltfläche „Medien hinzufügen“ auf den ersten Blick leicht mit der Upload-Schaltfläche „Empfohlenes Bild“ verwechselt werden kann, die weiter unten auf der Seite (standardmäßig) angezeigt wird und vom Thema möglicherweise sehr unterschiedlich verwendet wird. Ich entferne es fast immer, indem ich den folgenden Code zur Datei functions.php des Themes hinzufüge.

 # Remove media buttons function emersonthis_remove_add_media(){ # do this conditionally if you want to be more selective remove_action( 'media_buttons', 'media_buttons' ); } add_action('admin_head', 'emersonthis_remove_add_media');

Sie können Logik vor remove_action() hinzufügen, um nur die Medienschaltfläche bedingt für bestimmte Beitragstypen zu entfernen. Beispielsweise möchten Sie vielleicht zulassen, dass Autoren Bilder zu Seiten hinzufügen, aber keine Blogbeiträge, die stattdessen Miniaturansichten verwenden.

Deaktivieren Sie die Theme-Customizer-Optionen

Wenn Sie an einem Child-Theme arbeiten, bietet das Parent-Theme möglicherweise Anpassungsoptionen, die für das Kind ungeeignet sind. Die Anpassungsoptionen können in deinem Child-Theme ungenutzt bleiben oder das Potenzial haben, Dinge kaputt zu machen. In jedem Fall macht es die WordPress-Design-Customizer-API einfach, sie zu entfernen, indem Sie das folgende Snippet zur Datei functions.php Ihres Designs hinzufügen.

 # Remove customizer options. function emersonthis_remove_customizer_options( $wp_customize ) { // $wp_customize->remove_section( 'static_front_page' ); // $wp_customize->remove_section( 'title_tagline' ); $wp_customize->remove_section( 'colors' ); $wp_customize->remove_section( 'header_image' ); $wp_customize->remove_section( 'background_image' ); // $wp_customize->remove_section( 'nav' ); // $wp_customize->remove_section( 'themes' ); // $wp_customize->remove_section( 'featured_content' ); // $wp_customize->remove_panel( 'widgets' ); } add_action( 'customize_register', 'emersonthis_remove_customizer_options', 30);

Jede Zeile im obigen Snippet entspricht einer individuellen Theme-Anpassungsoption, die Sie deaktivieren können, indem Sie sie auskommentieren.

Blenden Sie nicht verwendete Dashboard-Menüelemente aus

Nicht jede Website hat die gleichen Arten von Inhalten; manche Seiten haben zum Beispiel kein Blog. Wenn wir dieselbe Logik auf das WordPress-Dashboard anwenden, die wir auf jede andere Benutzeroberfläche anwenden, ist es verwirrend und unnötig, Schaltflächen anzuzeigen, die nichts bewirken. In diesem Beispiel wäre das Posts-Menüelement unnötig, also entfernen wir es, indem wir das folgende Snippet zu functions.php hinzufügen:

 function emersonthis_custom_menu_page_removing() { // remove_menu_page( 'index.php' ); //Dashboard // remove_menu_page( 'jetpack' ); //Jetpack* remove_menu_page( 'edit.php' ); //Posts remove_menu_page( 'upload.php' ); //Media // remove_menu_page( 'edit.php?post_type=page' ); //Pages remove_menu_page( 'edit-comments.php' ); //Comments // remove_menu_page( 'themes.php' ); //Appearance // remove_menu_page( 'plugins.php' ); //Plugins // remove_menu_page( 'users.php' ); //Users // remove_menu_page( 'tools.php' ); //Tools // remove_menu_page( 'options-general.php' ); //Settings } add_action( 'admin_menu', 'emersonthis_custom_menu_page_removing' );

Jede Zeile entspricht einem bestimmten Menü im Dashboard. Die Dateinamen stimmen nicht immer mit dem Namen überein, der im Dashboard-Menü angezeigt wird, daher werden die kommentierten Zeilen als Kurzreferenz belassen.

Das Posts-Menü wird standardmäßig angezeigt, unabhängig davon, ob die Website über einen Blog verfügt oder nicht
Das Menüelement „Beiträge“ wird standardmäßig angezeigt, unabhängig davon, ob die Website über einen Blog verfügt oder nicht. (Große Version anzeigen)
06-posts-menu-versteckte-vorschau-opt
Das WordPress-Dashboard ohne den Menüpunkt Posts. (Große Version anzeigen)

Es ist wichtig zu verstehen, dass durch das Entfernen dieser Menüelemente die Berechtigungen des Benutzers nicht wirklich widerrufen werden. Ein Benutzer könnte immer noch direkt über die URL auf den versteckten Menüpunkt zugreifen. Wenn das Ziel darin besteht, das Dashboard weniger überladen zu machen, indem überflüssige Steuerelemente ausgeblendet werden, ist dies wahrscheinlich in Ordnung. Wenn das Ziel darin besteht, einen Benutzer tatsächlich am Zugriff auf diese Steuerelemente zu hindern , müssen Sie die Funktionen der Rolle des Benutzers ändern. Fügen Sie dazu ein Snippet wie das folgende zum Aktivierungs-Hook eines Plugins hinzu (es muss nur einmal ausgeführt werden):

 global $wp_roles; // global class $role = 'author'; $cap = 'delete_published_posts'; $wp_roles->remove_cap( $role, $cap );

Verwenden Sie diese umfassende Tabelle aller Funktionen, um die spezifischen Funktionen zu finden, die Sie für jede der Standardrollen hinzufügen oder entfernen können.

Fügen Sie einen Hinweis hinzu, wie Zeilenumbrüche im Editor funktionieren

Standardmäßig erstellt der visuelle Editor (TinyMCE) einen neuen Absatz, wenn der Autor die Eingabetaste drückt . Wenn Sie nur einen altmodischen Zeilenumbruch (auch Wagenrücklauf genannt) wollen, müssen Sie Shift+Return drücken. Das ist geschickt und leistungsfähig, aber für viele Autoren nicht intuitiv. Ich habe damit begonnen, eine kurze Erinnerung hinzuzufügen, um die unvermeidliche Beschwerde über „einen Haufen seltsamer Leerzeichen“ zu vermeiden, die in einem Beitrag oder einer Seite auftauchen.

Blogpost mit hässlichem zusätzlichem Leerraum
Blogpost mit hässlichem zusätzlichem Leerraum. (Große Version anzeigen)

Fügen Sie das folgende Snippet zu Ihrer Datei functions.php hinzu. Ändern Sie den Wert von $tip , um zu sagen, woran Sie Ihre Autoren erinnern möchten.

 # Adds instruction text after the post title input function emersonthis_edit_form_after_title() { $tip = '<strong>TIP:</strong> To create a single line break use SHIFT+RETURN. By default, RETURN creates a new paragraph.'; echo '<p>'.$tip.'</p>'; } add_action( 'edit_form_after_title', 'emersonthis_edit_form_after_title' );

Diese Technik könnte verwendet werden, um eine Erinnerung an alles einzufügen, an das sich Autoren erinnern sollen, wenn sie Inhalte hinzufügen oder bearbeiten.

Beitragsseite mit hinzugefügtem Whitespace-Tipp
Beitragsseite mit hinzugefügtem Leerraum-Tipp. (Große Version anzeigen)

Verzichten Sie nicht auf Administratorkonten

Die Rolle des WordPress-Administrators ist sehr mächtig und mit großer Macht geht auch große Verantwortung einher. Einige Kunden sind erfahrene WordPress-Power-User, die ihre Seite kompetent administrieren. Viele von ihnen sind es nicht. Letztere sollten nicht als Administratoren herumstochern. Machen Sie sie stattdessen zu einem Redakteur und erstellen Sie ein separates Administratorkonto mit einem superstarken Passwort. Wenn Sie eine laufende Zugehörigkeit zum Kunden haben, können Sie diese Anmeldeinformationen behalten, bis der Kunde bereit ist, die Website selbst zu verwalten.

Benutzerliste voller Administratoren
Benutzerliste voller Administratoren. (Große Version anzeigen)

Geben Sie dem Client alternativ beide Sätze von Anmeldeinformationen und lassen Sie ihn die Administratoranmeldeinformationen an einem sicheren Ort speichern und sie nur zum Ausführen von Verwaltungsaufgaben verwenden. Viele Kunden verlieren sofort die Admin-Anmeldeinformationen, aber das ist in Ordnung: Das Passwort kann immer zurückgesetzt werden, und dies sind häufig die Arten von Kunden, die Sie erneut einstellen, um die routinemäßige Website-Wartung für sie durchzuführen.

Der wichtigste Grund, mit Administratorkonten zu geizen, ist, dass sie eine Sicherheitslücke darstellen. Ein angenehmer Nebeneffekt ist, dass WordPress-Einsteiger die Benutzeroberfläche des Dashboards oft weniger überwältigend finden, wenn sie sich als Autoren oder Redakteure anmelden, da weniger Menüs zu durchsuchen sind, während grundlegende Fähigkeiten wie das Hinzufügen oder Bearbeiten von Beiträgen erlernt werden.

Verwenden Sie mu-Plugins

Das Verzeichnis mu-plugins/ existiert schon lange, aber die meisten WordPress-Hacker, die ich treffe, haben noch nie davon gehört. Das „mu“ steht für must use . Das Verzeichnis ist ein alternativer Ort, an dem Plugins installiert werden können.

Muss die Plugin-Schnittstelle im Wordpress-Dashboard verwenden
Muss die Plugin-Schnittstelle im WordPress-Dashboard verwenden. (Große Version anzeigen)

Der Unterschied besteht darin, dass „Must Use“-Plugins automatisch aktiv sind und nicht versehentlich im gesamten Dashboard deaktiviert werden können. Sie werden auch vor den anderen Plugins geladen. Dies ist ideal für Plugins, die vorhanden sein müssen, damit die Website ordnungsgemäß funktioniert. Es ist auch eine großartige Alternative für nicht präsentationsbezogene Hacks, die normalerweise in der Datei functions.php Ihres benutzerdefinierten Designs blockiert werden. Zum Beispiel definiere ich gerne benutzerdefinierte Beitragstypen in einem mu-Plugin, weil dieser Inhalt bestehen bleiben soll, unabhängig davon, ob ein bestimmtes Thema aktiv ist oder nicht.

Das Verzeichnis mu-plugins/ ist standardmäßig nicht vorhanden. Du erstellst es manuell in wp-content/ .

 wp-content/ mu-plugins/ plugins/ themes/ ...

Die größte Einschränkung besteht darin, dass WordPress nur nach Dateien auf der obersten Ebene von mu-plugins/ sucht und Code in einem Unterverzeichnis ignoriert. Sie können dies jedoch umgehen, indem Sie eine einzelne PHP-Datei am Anfang von mu-plugins/ erstellen, die Code aus einem gleichgeordneten Unterverzeichnis lädt. Denken Sie auch daran, dass Update-Benachrichtigungen nicht für mu-Plugins gelten. Ich denke an mu-plugins/ als den Ort, an dem wichtiger Code abgelegt wird, über den der Client niemals nachdenken muss.

Lesen Sie mehr über obligatorische Plugins im Codex. Wenn Sie andere Plugins anfordern möchten, indem Sie verhindern, dass sie deaktiviert werden können, finden Sie möglicherweise die WDS-Required-Plugins-Bibliothek hilfreich.

Schlussbemerkung

Möglicherweise finden Sie es kontraintuitiv, Funktionen zu deaktivieren, die WordPress Ihnen kostenlos zur Verfügung stellt. Denken Sie jedoch daran, dass Ihr Kunde Sie nicht dafür bezahlt, ihm viele Schaltflächen zu geben. Ihre Aufgabe ist es, eine effektive, robuste Website zu erstellen, die auf die Ziele des Kunden zugeschnitten ist. Indem Sie problematische oder irrelevante Funktionen deaktivieren, liefern Sie tatsächlich mehr Wert .

Wenn Sie mehr Snippets möchten, habe ich ein öffentliches GitHub-Repository mit nützlichen WordPress-Snippets erstellt, das aktuelle Versionen der oben genannten Hacks sowie andere enthält, die ich regelmäßig hinzufüge. Wenn Sie Ihre eigenen praktischen Snippets haben, die Sie teilen möchten, sind Pull-Anfragen mehr als willkommen!