WordPress 3.2.1, 1and1 et erreur Out Of Memory In /wp-Includes/Class-Http.Php On Line 1426

Si comme moi vous avez récemment essayé de mettre à jour votre wordpress de manière automatique alors que votre hébergeur est 1and1 vous avez du avoir une erreur du type :

Fatal error Out Of Memory In /wp-Includes/Class-Http.Php On Line 1426

Gnnaaa un bug!! Hum non en fait, il s’agit tout simplement d’un manque de mémoire allouée à php par 1and1. Heureusement comme les choses ne sont pas trop mal faites, vous avez moyen de corriger le problème!

Il vous faut créer avec un éditeur de texte de type notepad un fichier php.ini codé en UTF-8 et dans lequel vous ajouterez une ligne contenant :

memory_limit=64M

Par défaut 1and1 n’alloue que 32 mégas à la mémoire php … ce qui est insuffisant pour la mise à jour!. Une fois le fichier enregistré sur votre disque local il faut le transférer à la racine de votre site wordpress ainsi que dans le répertoire wp-admin. Lorsque les transferts sont terminés, retournez dans le panel administration de votre site, désactivez tous les plugins (la valeur fonctionne pour une mise à jour sans plugin) lancez la mise à jour automatique.

Normalement tout se passe bien! Retournez alors dans l’onglet Extentions installées->récemment désactivées et réactivez vos plugins!

Franciser un thème WordPress

Certains l’ont peut être remarqué mais le thème que j’utilise est petit à petit devenu en français alors qu’il était à la base … en anglais. Comme beaucoup d’informaticiens je passe allégrement du français à l’anglais dans mes lectures et j’ai mis un moment à me dire que quand même ce n’était pas bien propre d’avoir un blog Français avec un thème Anglais !

La transformation s’est faite petit à petit, en effet, plutôt que de lire simplement les classes de mon thème et de traduire hors contexte les phrases anglaises j’ai modifié cas par cas les éléments que je voyais apparaître en anglais sur mes pages. Pour une édition rapide j’ai utilisé l’éditeur de thème de WordPress. La seule difficulté est de faire le lien entre l’affichage et le fichier d’origine (s’agit il d’un affichage se raccrochant à la page d’accueil, à une fonction du thème …) Heureusement la fonction de recherche rapide des navigateurs (Ctrl + F) permet de vérifier rapidement que l’on se trouve dans le bon fichier et de traduire en ayant connaissance du contexte d’affichage.

En réalité il existe une alternative à cette méthode qui force à modifier le code : créer un version entièrement en français de votre thème. Pour cela aller dans le dossier lang de votre thème, il devrait se trouver des fichiers du nom en_US.po et en_US.mo. Le fichier po est la version humaine du fichier la mo est la version anglaise ! Pour générer le mo le mieux est d’utiliser poedit dont vous pourrez trouver des version pour tous les OS. Reprenez un couple de fichier existant et copiez / renommez le en fr_FR.mo et fr_FR.po . Ouvrez le .po avec poedit! sur la colonne de gauche le texte anglais, sur la colonne de droite le texte qui devra devenir en français!!

Une fois la traduction effectuée uploadez les deux fichiers. Normalement votre wordpress en français détectera la présence de ces fichiers (au besoin désactivez / réactivez le thème)

Problèmes de mises à jour wordpress

Si comme moi vous connaissez des problèmes dans la mise à jour des widgets ou même de wordpress tout court ceci est peut être du à la configuration adoptée par votre hébergeur. Le mien (1&1) a besoin que l’on rajoute un petit élément dans le ficiher .httaccess

AddType x-mapp-php5 .php

Une fois cette ligne ajoutée tout roule !

Ajouter une favicon à votre site wordpress

Comme vous pouvez le remarquer quasiment tous les sites de la toile disposent d’une ‘favicone’ : petite icône qui s’affiche à gauche de la barre d’adresse et sur les onlget, à côté du nom de la page sur tous les navigateurs à peu près récents. Je me suis penché à la question très important : comment faire pour en ajouter une à mon site wordpress ?!

Là je vois déjà venir les utilisateurs d’internet explorer : de quoi il parle son site il a pas d’icône particulière associée ?! Et ben oui l’icône que j’ai choisit ne respecte pas les standards internet explorer … et je le revendique :) Pour en savoir plus sur les favicon en général je vous conseille ce lien .

Je vais considérer que vous avez votre icône que tout est bien, qu’elle est en ligne sur un serveur et que vous souhaitiez maintenant la voir s’afficher à l’ouverture de votre site. Direction le paneau d’administration -> Apparence -> Editeur.  Cherchez le modèle header.php et insérez y la ligne

<link rel="icon" type="image/png" href="http://yudi.fr/*--*/fav.png" />

en dehors de toute balise php et le tour est joué. Pourquoi mettre le lien dans le header ? simplement parce qu’il est présent sur toutes vos pages ! Pourquoi mettre le lien en adresse absolu est pas en lien relatif ? tout simplement parce que ça marchera tout le temps :) -ouais argument minable mais bon si ça marche, ça marche !

Problème SyntaxHighlighter et WordPress 2.7.1

Je suis, et comme beaucoup d’utilisateurs WordPress passé à la version 2.7.1 récemment et là, ô rage ô désespoir une erreur moche du type

Warning: htmlspecialchars_decode() expects parameter 1 to be string, NULL

surgissait à chaque fois que j’essayai d’insérer du code en utilisant le plugin SyntaxHighlighter ! Heureusement , des gens intelligents se sont penchés sur la question et il existe une solution pas très compliquée ce problème :

There is a variable name mismatch in the WordPress version of the function htmlspecialchars_decode (introduced in PHP5.1). Parameter 1 is $str, but the validation tests $string, and thus the function will never execute, because $string is always null and fails the test.

This is a regression because it broke the AZIndex plugin (version 0.7.5) when the « ignore characters » option was set for an index. It will also break any code, plugin, or theme that uses this function when running on PHP < 5.1.

The line in error is line 104 in wp-includes/compat.php:

if ( !is_scalar( $string ) ) {

should be

if ( !is_scalar( $str ) ) {

Il suffit donc de remplacer $string par $str à l’endroit indiqué (tant qu’a fait à la ligne suivante vous pouvez aussi faire la modification !) et tout refonctionnera bien, testé et approuvé :)

Version originale de la solution : ici !