Créer un mode maintenance sur WordPress

Lors d’une mise à jour de plugins WordPress ou même du CMS complet, une ligne apparaît stipulant le passage du site en mode maintenance et une autre à la fin stipulant la sortie. Qu’est ce que ce mode maintenance ?

Le mode maintenance est un mode durant lequel le site indique être inaccessible pour cause de maintenance. Ceci permet, lors d’une mise à jour, d’éviter tout bug dû à du trafic et d’indiquer aux visiteurs que des travaux sont en cours sur le site au lieu de risquer d’afficher des messages d’erreurs.

Pour des travaux plus longs comme une adaptation de template, l’installation d’un nouveau plugin lourd, un ré-agencement des articles, … , il peut être intéressant de passer soit même le site en mode maintenance.

Pour ce faire, rien de plus simple, il suffit de créer un fichier .maintenance à la racine du site dans lequel on mettra le code :

<?php $upgrading = time(); ?>

La page de maintenance est personnalisable. Il suffit, en plus du fichier .maintenance précédemment ajouté, de créer un fichier maintenance.php dans le dossier wp-content, présent à la racine de site, qui contiendra le contenu à afficher en cas de présence du fichier .maintenance

Pour les personnes frileuses des modifications à la main, comme d’habitude avec WordPress, il existe des plugins comme Maintenance, Ultimate maintenance mode ou Maintenance Mode Notify qui proposent différentes options et réglages.

Enfin, il arrive, après une mise à jour d’un plugin ou de WordPress, que WordPress reste bloqué en mode maintenance. Pour corriger le problème, rien de plus simple, il suffit de supprimer le fichier .maintenance à la racine du site pour retrouver son site comme avant.

Gestion des droits utilisateurs WordPress

WordPress joui d’un système de droits assez fin et bien pensé. En effet, un certain nombre de profils d’utilisateurs existent déjà avec des possibilités différentes et il est aisé de jongler entre eux pour donner l’autorisation de réaliser un certain nombre de tâches, et en empêcher d’autres, à chaque compte.

Cependant, il n’est pas facile de modifier ces droits de base ou de créer de nouveau profils correspondant à un rôle précis attribué à un utilisateur. Comme nous sommes sur WordPress, un plugin existe pour résoudre ce facétieux problème. En l’occurrence, il s’agit de Capability Manager Enhanced.

Celui ci permet non seulement de créer de nouveaux profils totalement personnalisés en plus des 5 existants mais permet aussi de modifier très finement les droits accordés à chaque catégorie. On peut ainsi imaginer créer un groupe qui a le droit d’ajouter du contenu dans les médias téléchargés mais jamais d’en enlever. On peut aussi penser à un designer qu’on autorise à modifier l’intégralité du thème du site sans jamais pouvoir modifier les articles ou gérer des utilisateurs.

Un plugin pratique, selon les besoins, même si de manière générale, pour une utilisation de type blog conventionnelle, les profils Abonné, Administrateur, Auteur, ContributeurÉditeur sont largement suffisants.

Problème d’arrêt du plugin WordPress Move

Un problème auquel j’ai été confronté et dont je n’ai pas trouvé la solution sur internet m’est arrivé récemment. Le plugin WordPress Move dont j’ai déjà parlé et que j’utilise pour sauvegarder régulièrement mon blog était devenu inopérant et affichait une page blanche. Pensant juste à un problème d’affichage, j’ai tenté de le laisser tourner une bonne heure voir si quelque chose changeait mais il s’avérait que non. Les archives avaient la même taille et ne grossissaient pas.

J’ai fini par trouver la solution lorsque j’ai enlevé un dossier de partage que j’avais créé à la racine du blog pour passer une vidéo que j’avais faite pour un concours. La vidéo pesait dans les 60 Mo. Je ne sais donc pas exactement pourquoi le plugin s’arrête au lieu de tenter de comprimer la vidéo dans les backup mais tout fichier trop gros dans le répertoire du site entraîne cette coupure brutale dans la sauvegarde.

La solution est donc d’enlever tous les plus gros fichiers uns par uns jusqu’à ce que la sauvegarde s’effectue convenablement.

Une solution, que j’avais trouvé sur internet pour un cas similaire mais qui n’était pas le mien, consistait à changer dans les réglages la « Chunk Size » à savoir la taille maximal de chaque archive. Là encore le problème était dû à un problème de compression.

Il doit être possible de régler ces deux problèmes de la même manière en modifiant les paramètres du serveur web et dont certains doivent limiter les ressources attribuées à la compression. Je ne me suis cependant pas penché sur la question mes sauvegardes ayant pu reprendre sans encombres.

Forum bbPress

Il y a quelques mois, après avoir remis à neuf avec un ami la plateforme internet de notre association, nous avons souhaiter mettre en place un forum afin de pouvoir communiquer facilement. La solution finale que nous avons retenu a été phpBB mais avant de se fixer sur ce choix, j’ai testé de très nombreux autres CMS, plugins ou types de forums. Certains comme fluxBB présentaient des intérêts certains mais nous n’étions pas vraiment limité par la légèreté ou le nombre de base de données disponibles. De plus nous avions besoin de beaucoup d’options différentes et d’une grosse communauté pour corriger facilement les problèmes que nous risquions de rencontrer.

Cependant, je ne vais pas parler de ces solutions ici, de très nombreux tests existent déjà et leurs réputations les précèdent. phpBB pour la quantité de plugins disponibles et pour sa communauté et fluxBB pour sa légèreté. Je vais par contre parler de la solution qu’est bbPress. Je l’ai trouvé intéressante dans certains cas comme par exemple lorsqu’on est limité en nombre de base de données.Ce forum est un plugin intégré à WordPress directement. Il utilise ainsi directement la base de données de la plateforme de blogging pour fonctionner.

En dehors de cet avantage non négligeable pour les petits hébergements ou les sites installés par applications (comme le propose 1&1 par exemple), bbPress est un forum complet avec une bonne gestion des topics et des posts. En plus, il peut lui même contenir des plugins afin de rajouter des fonctionnalités.

Une bonne alternative de forum donc, dont l’avantage est de se gérer exactement comme le blog WordPress et sans besoins extérieurs.

Créer une pagination sur WordPress

Je trouve la navigation de base sur WordPress assez fouillis  En effet, passer de page en page pour retrouver un article n’est pas des plus pratique et je voulais pouvoir remonter de plusieurs pages d’un coup sans avoir à modifier l’adresse dans la barre du navigateur.

Ainsi, esprit WordPress oblige, j’ai cherché un plugin qui me permettrait ça. J’en ai trouvé deux que j’ai jugé digne d’intérêt. WP-Paginate et Simple Pagination. Tous les deux facilement configurables, l’étape la plus embêtante était de le intégrer dans la page.

Pour ce faire, il faut aller modifier le style des pages dans le menu Appearance -> Editor de WordPress ou à la main directement dans les fichiers. L’emplacement à modifier va dépendre du thème utilisé. Utilisant le thème TwentyEleven, la fonction d’affichage se trouve dans le fichier functions.php dans la fonction twentyeleven_content_nav. D’autres thèmes utilisent un fichier loop.php.

Afin de ne pas créer de bug si le plugin se trouvait désactivé pour une raison ou une autre, il suffit de rajouter une vérification de présence de la fonction au lieu de remplacer l’affichage. On aura ainsi une fonction qui ressemblera à ceci :

function twentyeleven_content_nav( $nav_id ) {
    global $wp_query;

    if (function_exists('<FONCTION DU PLUGIN>')) {
        <FONCTION DU PLUGIN>();
    }
    else {
        if ( $wp_query->max_num_pages > 1 ) : ?>
            <nav id="<?php echo $nav_id; ?>">
                <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentyeleven' ); ?></h3>
                <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentyeleven' ) ); ?></div>
                <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentyeleven' ) ); ?></div>
            </nav><!-- #nav-above -->
        <?php endif;
    }
}

La <FONCTION DU PLUGIN> peut être : wp_simple_pagination pour Simple Pagination ou wp_paginate pour WP-Paginate.

Les deux plugins permettent de faire la même chose avec les commentaires mais cette fonctionnalité m’intéresse beaucoup moins donc je ne l’ai pas mise en place. La procédure reste cependant la même mais dans le fichier comments.php autour des deux lignes contenant les fonctions previous_comments_link() et next_comments_link().

Ma préférence va actuellement à Simple Pagination pour son template de base qui s’intègre mieux dans ma page sans avoir à la retoucher mais les deux barres de navigation sont personnalisables.

Ajouter une favicon à un blog WordPress

Je voulais ajouter une favicon à mon blog WordPress pour rendre le stockage en favoris plus attractif que les icônes de base des différents navigateurs.

Je connaissais la manière classique d’ajouter une favicon en mettant dans le <head> d’un page la ligne :

<link rel="icon" type="<MIME_DE_LA_FAVICON>" href="<ADRESSE_DE_LA_FAVICON>" />

J’aurais ainsi pu appliquer cette méthode en modifiant le fichier header.php et en ajoutant cette ligne mais je me suis dis : « Je suis sous WordPress, il existe des plugins pour tout, choisissons en un qui va bien ». J’ai donc choisi le plugin All in one Favicon.

Ce plugin permet beaucoup plus de configuration qu’en ligne par ligne et simplifie réellement la mise en place d’une favicon. Me voilà à présent avec un magnifique logo !

Déplacer un WordPress sur un autre serveur

L’autre jour, j’ai essayer d’aider un copain (http://www.lebuffetplaylist.fr/) à s’occuper de son WordPress qui avait été installé en un clic avec l’option application de 1&1. Cette option s’avère être un vrai calvaire pour toutes les opérations de maintenance pour plusieurs raisons.

La première est que les droits accordés à l’application ne permettent pas d’ajouter ou de modifier quoi que ce soit à la main. Toutes les opérations ne peuvent être faites que depuis WordPress. De plus les permaliens ne peuvent pas fonctionner puisque sur 1&1, le module pour l’url rewriting ne s’active qu’en modifiant le .htaccess.

La deuxième est l’impossibilité d’accéder à la base de données créée pour l’occasion. On ne peut même pas la dumper sans passer par un plugin WordPress.

Après avoir cherché des solutions pendant un bon moment, et vu la faible marge de manœuvre qu’autorise l’application pré installée 1&1, nous avons finis par faire une exportation depuis l’onglet « Outils« , copier le thème directement dans le dossier wp-content/themes/ et noté pour réinstallation le nom des plugins qui l’intéressaient. Ceci  a aussi permis de faire du trie vu la quantité prodigieuse de plugins qui s’entremêlaient. Il fallut cependant refaire quelques configurations comme l’agencement de certains modules/liens.

Cette solution était un peu particulière vu la nature du problème mais il existe un plugin incroyablement efficace et qui a l’avantage d’être simple à utiliser.

L’offre iKoula que je possède actuellement n’ayant qu’une durée d’un an, je me retrouverais avec cette nécessité de transfert donc j’ai préféré prendre les devant. En plus de me fournir un transfert immédiat le jour où j’en aurais besoin, le plugin que j’ai choisis me permet de faire des sauvegardes régulières pour le cas où un problème survienne.

Le plugin que j’ai choisis est WordPress Move. Il suffit de recréer une installation basique standard sur le nouvel emplacement et d’y installer le plugin pour faire le transfert et réinstaller plugins/thèmes/posts/commentaires comme si ils avaient étés fait sur ce nouveau serveur et pas sur l’ancien. Redoutable !

Plugin de statistiques identique à celui de WordPress.com

J’avais mis en place il y a un certain temps le script pour avoir mes statistiques de Google Analytics sur mon Blog. Cependant, j’aimais bien les statistiques disponibles sur la plateforme de blog WordPress.

Google Analytics faisait parfaitement l’affaire mais l’option « statistiques » disponible sur l’application WordPress sur Android ne fonctionne qu’avec le plugin Jetpack. Pour le faire fonctionner, il faut obligatoirement un compte sur le site http://www.wordpress.com/

La mise en place du plugin est rapide, les configurations sont nombreuses et faciles et l’affichage des statistiques est agréable. Jetpack fait parfaitement ce pour quoi il est fait.

Inclure du code dans des articles WordPress

Il m’arrive de temps en temps d’illustrer certains articles avec des portions de code. Cependant, sur WordPress, la disposition du texte casse toutes les indentations et, de plus, aucune coloration syntaxique n’est possible automatiquement de base.

J’ai ainsi testé quelques plugins dont WP-syntax avec WP-syntax Button pour simplifier l’insertion mais ils ne m’ont pas convenus car ils ne sont pas assez paramétrables ou efficaces.

Mon choix a fini par se porter sur WP SyntaxHighlighter qui correspond parfaitement à mes critères, embarque déjà le bouton d’importation rendant l’édition facile et qui est presque entièrement configurable.

Mise en place de Google Analytics

J’aimais bien les statistiques de connexion disponibles sur les blogs hébergés WordPress. J’ai donc cherché à avoir quelque chose de semblable sur mon blog. Pour ce faire, j’ai donc ouvert un compte Google Analytics.

Pour fonctionner, il est nécessaire de copier un bout de code donné par Google sur toutes les pages du site que l’on souhaite observer.

J’ai tout d’abord testé un plugin nommé Google Analytics for WordPress. Après l’avoir un peu tourné dans tous les sens j’ai trouvé que c’était une usine à gaz étant donné que je ne compte pas configurer quoi que ce soit pour l’instant.

J’ai donc décidé de copier à la main le code dans la page header.php. Comme son nom l’indique, elle est insérée en haut de toutes les pages du blog. Une remarque cependant : utilisant le thème WordPress de base, cette page est présente mais tous les thèmes ne l’intègre pas.

Des plugins comme le All in One SEO Pack prennent directement en charge le code à ajouter aux pages et nous évite d’avoir à le faire manuellement. Un espace est prévu pour entrer le tracking ID correspondant.

La dernière configuration que j’ai appliquée à Google Analytics a été de filtrer mon adresse IP afin de ne pas prendre en compte mes visites sur mon blog comme élément de trafic. Pour ce faire, dans les paramètres de compte correspondant à mon profil sur Google Analytics, cliquer sur Admin, puis Filters, New Filter, donner un nom au filtre et choisir exclude, traffic from the IP addresses, that are equal to, puis rentrer l’adresse IP correspondante.