Comment rendre WordPress difficile à gâcher pour les clients
Publié: 2022-03-10WordPress est un CMS merveilleusement puissant qui est livré avec de nombreuses fonctionnalités polyvalentes lui donnant la flexibilité de fonctionner immédiatement pour un large éventail d'utilisateurs. Cependant, si vous êtes un professionnel de la création de thèmes et de plugins personnalisés, ces fonctionnalités peuvent parfois poser problème. Les mêmes fonctionnalités et options qui permettent aux thèmes prêts à l'emploi de s'adapter à de nombreux cas d'utilisation différents peuvent parfois également être utilisées pour saper un thème personnalisé soigneusement conçu pour un cas d'utilisation spécifique.
L'article suivant comprend une collection d'extraits de code que j'utilise encore et encore sur presque tous les projets WordPress. Ce qu'ils ont tous en commun, c'est qu'ils limitent les fonctionnalités inutiles, déroutantes ou dangereuses. Tout ce qui suit peut être utilisé sur n'importe quel site, mais ces conseils sont particulièrement applicables aux professionnels qui créent des thèmes et des plugins personnalisés pour les clients.
Lectures complémentaires sur SmashingMag :
- Comment créer et personnaliser un thème enfant WordPress
- Rédiger une documentation efficace pour les utilisateurs finaux de WordPress
- Limiter la visibilité des messages dans WordPress via les noms d'utilisateur
- Utilisation des rôles d'utilisateur dans WordPress
La distinction notable est que les thèmes personnalisés peuvent être créés pour servir un objectif spécifique. Ainsi, les blancs pour le contenu des auteurs peuvent et doivent également être beaucoup plus étroits. Un thème WordPress bien conçu devrait prendre autant de décisions de conception que possible afin que l'auteur n'ait pas à le faire.
Désactiver les plugins et l'éditeur de thème
Il n'y a aucune bonne raison pour que quiconque modifie en direct votre thème personnalisé ou vos fichiers de plug-in via le tableau de bord WordPress. Les professionnels ne fonctionnent pas de cette façon, et les moldus ne réalisent généralement pas à quel point il est facile de casser un site en sautant un seul point-virgule. Il s'agit également d'une vulnérabilité de sécurité que les pirates peuvent exploiter. Heureusement, nos amis de WordPress.org ont rendu très facile la désactivation de cette fonctionnalité. Ajoutez simplement l'extrait de code suivant au fichier wp-config.php .
define( 'DISALLOW_FILE_EDIT', true );
En plus de l'éditeur de thème, cela désactivera également l'éditeur de plugin. Je considère cela comme une fonctionnalité et non comme un bug.
Limiter l'éditeur visuel et textuel
Par défaut, l'éditeur WordPress WYSIWYG prend en charge beaucoup trop d'options de formatage pour un thème personnalisé bien conçu. Permettre aux clients de remplacer les couleurs de texte ou les tailles de police est un moyen rapide de donner l'impression que même le site le plus chic a l'air bon marché et moche. Si le texte d'un article de blog est conçu pour être toujours aligné à gauche, pourquoi donner à l'auteur un bouton pour l'aligner à droite ? Pensez-vous que le texte de la page À propos sera beau si le texte est en violet, en gras et en italique ? Alors n'armez pas votre client avec les moyens de le faire. Dans la plupart des situations, je recommande de désactiver complètement l'éditeur visuel.
Désactivation de l'éditeur visuel
Ajoutez l'extrait suivant au fichier functions.php de votre thème et l'onglet pour basculer l'éditeur WYSIWYG disparaîtra.
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);
C'est un bon début, mais vous remarquerez que les boutons gras et italique sont toujours présents sur l'éditeur de texte brut. D'après mon expérience, les clients abusent beaucoup moins souvent de ces boutons lorsque la gratification instantanée de l'éditeur WYSIWYG a disparu. Mais je préfère quand même les supprimer s'ils ne sont pas nécessaires.
Suppression des balises rapides en gras et en italique de l'éditeur de texte
L'éditeur de texte comporte des boutons de balises rapides qui envelopperont le texte sélectionné avec les balises <strong>
et <em>
. Ajoutez le code suivant dans le fichier functions.php de votre thème et les auteurs n'auront plus de boutons en gras ou en italique.
# 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');
Cela supprime la possibilité que votre client décide, par exemple, de mettre en italique un article entier. Mais cela ne supprime pas la possibilité d'écrire manuellement le balisage dans l'éditeur de texte. De temps en temps, cela peut s'avérer utile lorsque vous êtes pressé.
Si vous êtes dans une situation rare où l'utilisateur doit formater lui-même le texte, vous pouvez laisser l'éditeur visuel activé mais désactiver des boutons spécifiques individuellement.
Désactiver les boutons de l'éditeur visuel
L'une des rares fois où je laisse l'éditeur visuel activé, c'est lorsque les auteurs écrivent de longs articles ou des pages qui ont leur propre structure interne. Par exemple, l'auteur d'un article de 10 pages peut avoir besoin de pouvoir ajouter des sous-titres. Dans ces situations, je configure des classes personnalisées pour les sous-sections, puis désactive tous les autres boutons de formatage qui ne sont pas nécessaires.
L'API WordPress pour modifier l'éditeur TinyMCE est un peu délicate car vous devez rechercher les noms de code utilisés pour faire référence à chaque bouton que vous souhaitez supprimer. Vous en avez pour votre argent en supprimant le bouton "évier de cuisine" qui bascule toute la deuxième rangée contenant les boutons de formatage les plus problématiques. Pour ce faire, ajoutez le code suivant au fichier functions.php de votre thème.
# 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' );
Une astuce pour déterminer le nom de code du bouton que vous souhaitez supprimer consiste à inspecter le balisage du formulaire. Au moment de l'écriture, chaque bouton a un nom de classe qui commence par mce-i-
suivi du nom de code que vous placeriez dans le tableau ci-dessus.
Supprimer le bouton "Ajouter un média"
Le bouton "Ajouter un média" apparaît par défaut chaque fois qu'un type de publication personnalisé prend en charge la fonction d'éditeur. Mais les types de publication personnalisés peuvent être utilisés pour un large éventail de choses, et il est souvent inapproprié que ce champ inclue des images.
La plupart du temps, lorsque je m'attends à ce que l'auteur publie une image pour accompagner le texte, j'utilise des vignettes de publication (c'est-à-dire des images en vedette). Cela facilite l'intégration des images dans les modèles de thème et donne également au développeur plus de contrôle sur la taille et les spécifications des images.
Les photos ad hoc intégrées à l'aide du bouton "Ajouter un média" dans l'éditeur sont difficiles à contrôler et elles ont tendance à paraître bizarres selon l'endroit où l'auteur insère l'image par rapport au texte environnant. Ils causent également de la confusion pour de nombreux auteurs, car en un coup d'œil, le bouton "Ajouter un média" est facilement confondu avec le bouton de téléchargement "Image en vedette" qui apparaît plus bas dans la page (par défaut), et peut être utilisé très différemment par le thème. Je le supprime presque toujours, en ajoutant le code suivant au fichier functions.php du thème.
# 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');
Vous pouvez ajouter une logique avant remove_action()
pour supprimer uniquement le bouton multimédia de manière conditionnelle pour certains types de publication. Par exemple, vous pouvez autoriser les auteurs à ajouter des images aux pages, mais pas les articles de blog qui utilisent à la place des vignettes.
Désactiver les options de personnalisation du thème
Si vous travaillez sur un thème enfant, le thème parent peut proposer des options de personnalisation inappropriées pour l'enfant. Les options de personnalisation peuvent être inutilisées dans votre thème enfant ou avoir le potentiel de casser des choses. Quoi qu'il en soit, l'API de personnalisation de thème WordPress facilite leur suppression en ajoutant l'extrait suivant au fichier functions.php de votre thème.
# 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);
Chaque ligne de l'extrait ci-dessus correspond à une option de personnalisation de thème individuelle que vous pouvez désactiver en la décommentant.
Masquer les éléments de menu du tableau de bord inutilisés
Tous les sites n'ont pas les mêmes types de contenu ; certains sites n'ont pas de blog, par exemple. Si nous appliquons la même logique au tableau de bord WordPress que nous appliquons à toute autre interface utilisateur, il est déroutant et inutile d'afficher des boutons qui ne font rien. Dans cet exemple, l'élément de menu Posts serait inutile, alors supprimons-le en ajoutant l'extrait suivant à functions.php :
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' );
Chaque ligne correspond à un menu spécifique du tableau de bord. Les noms de fichiers ne correspondent pas toujours au nom qui apparaît dans le menu du tableau de bord, les lignes commentées sont donc conservées comme référence rapide.
Il est important de comprendre que la suppression de ces éléments de menu ne révoque pas réellement les autorisations de l'utilisateur. Un utilisateur peut toujours accéder à l'élément de menu masqué directement à l'aide de l'URL. Si l'objectif est de rendre le tableau de bord moins encombré en masquant les commandes superflues, alors c'est probablement bien. Si l'objectif est d' empêcher réellement un utilisateur d'accéder à ces contrôles, vous devrez alors modifier les capacités du rôle de l'utilisateur. Pour ce faire, ajoutez un extrait comme celui-ci au crochet d'activation d'un plugin (il n'a besoin de s'exécuter qu'une seule fois) :
global $wp_roles; // global class $role = 'author'; $cap = 'delete_published_posts'; $wp_roles->remove_cap( $role, $cap );
Utilisez ce tableau complet de toutes les fonctionnalités pour trouver les fonctionnalités spécifiques que vous pouvez ajouter ou supprimer pour chacun des rôles par défaut.
Ajouter un indice sur le fonctionnement des sauts de ligne dans l'éditeur
Par défaut, l'éditeur visuel (TinyMCE) crée un nouveau paragraphe lorsque l'auteur appuie sur Retour . Si vous voulez juste un saut de ligne à l'ancienne (alias retour chariot), vous devez appuyer sur Maj+Retour . C'est astucieux et puissant mais pas intuitif pour de nombreux auteurs. J'ai commencé à ajouter un rappel rapide pour éviter l'inévitable plainte concernant "un tas d'espaces blancs étranges" apparaissant dans un article ou une page.
Ajoutez l'extrait de code suivant à votre fichier functions.php . Changez la valeur de $tip
pour dire ce que vous voulez rappeler à vos auteurs.
# 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' );
Cette technique peut être utilisée pour injecter un rappel sur tout ce dont vous voulez que les auteurs se souviennent lors de l'ajout ou de la modification de contenu.
Ne distribuez pas de comptes d'administrateur
Le rôle d'administrateur WordPress est très puissant et un grand pouvoir s'accompagne d'une grande responsabilité. Certains clients sont des utilisateurs expérimentés de WordPress qui administrent leur site avec compétence. Beaucoup d'entre eux ne le sont pas. Ces derniers ne devraient pas tergiverser en tant qu'administrateurs. Au lieu de cela, faites-en un éditeur et créez un compte administrateur séparé avec un mot de passe super fort. Si vous avez une affiliation continue avec le client, vous pouvez conserver ces informations d'identification jusqu'à ce que le client soit prêt à administrer lui-même le site.
Vous pouvez également donner au client les deux ensembles d'informations d'identification et lui demander de stocker les informations d'identification d'administrateur dans un endroit sûr et de ne les utiliser que pour effectuer des tâches d'administration. De nombreux clients perdront rapidement les informations d'identification d'administrateur, mais ce n'est pas grave : le mot de passe peut toujours être réinitialisé, et ce sont souvent les types de clients qui vous réembaucheront pour effectuer la maintenance de routine du site pour eux de toute façon.
La raison la plus importante d'être avare avec les comptes d'administrateur est qu'ils constituent une faille de sécurité. Un effet secondaire agréable est que les utilisateurs débutants de WordPress trouvent souvent l'interface utilisateur du tableau de bord moins écrasante lorsqu'ils se connectent en tant qu'auteurs ou éditeurs, car il y a moins de menus à trier tout en apprenant des compétences de base telles que l'ajout ou la modification de publications.
Utiliser les plugins mu
Le répertoire mu-plugins/ existe depuis longtemps, mais la plupart des hackers WordPress que je rencontre n'en ont jamais entendu parler. Le « mu » signifie doit utiliser . Le répertoire est un emplacement alternatif où les plugins peuvent être installés.
La différence est que les plugins "doit utiliser" sont automatiquement actifs et ne peuvent pas être désactivés par accident dans tout le tableau de bord. Ils sont également chargés avant les autres plugins. C'est idéal pour les plugins qui doivent être présents pour que le site fonctionne correctement. C'est aussi une excellente alternative pour les hacks non présentationnels qui pourraient normalement se coincer dans le fichier functions.php de votre thème personnalisé. Par exemple, j'aime définir des types de publication personnalisés dans un mu-plugin, car ce contenu doit persister, qu'un thème particulier soit actif ou non.
Le répertoire mu-plugins/ n'existe pas par défaut. Vous le créez manuellement dans wp-content/ .
wp-content/ mu-plugins/ plugins/ themes/ ...
La plus grande limitation est que WordPress ne recherche que les fichiers au niveau supérieur de mu-plugins/ et ignorera le code à l'intérieur d'un sous-répertoire. Cependant, vous pouvez contourner ce problème en créant un seul fichier PHP en haut de mu-plugins/ qui charge le code à partir d'un sous-répertoire frère. Gardez également à l'esprit que les notifications de mise à jour ne s'appliquent pas aux mu-plugins. Je pense que mu-plugins/ est l'endroit où mettre du code important auquel le client ne devrait jamais avoir à penser.
En savoir plus sur les plugins obligatoires dans le Codex. Si vous souhaitez exiger d'autres plugins en empêchant la possibilité de les désactiver, la bibliothèque WDS-Required-Plugins peut vous être utile.
Remarque finale
Vous trouverez peut-être contre-intuitif de désactiver les fonctionnalités que WordPress vous offre gratuitement. Mais rappelez-vous que votre client ne vous paie pas pour lui donner beaucoup de boutons. Votre travail consiste à créer un site Web efficace et robuste, adapté aux objectifs du client. En désactivant les fonctionnalités problématiques ou superflues, vous offrez en fait plus de valeur .
Si vous voulez plus d'extraits, j'ai créé un référentiel GitHub public d'extraits WordPress utiles qui contient des versions à jour des hacks ci-dessus, ainsi que d'autres que j'ajoute périodiquement. Si vous avez vos propres extraits pratiques que vous souhaitez partager, les demandes d'extraction sont plus que bienvenues !