Il vous est peut-être déjà arrivé de tomber sur ce message d’avertissement :
Function eregi() is deprecated.
En fait, “deprecated” signifie que les versions récentes de PHP considèrent cette fonction comme obsolète, c’est un peu comme si la fonction ereg() n’existait plus.
Par conséquent, mieux vaut dorénavant utiliser la fonction preg_match qui a pris sa place.
La fonction ereg() ou eregi() est donc remplacée par la fonction preg_match() depuis PHP 5.3 :
Voici la liste des fonctions devenues obsolètes sous PHP 5.3 :
call_user_method() (use call_user_func() instead)
call_user_method_array() (use call_user_func_array() instead)
define_syslog_variables()
dl()
ereg() (use preg_match() instead)
ereg_replace() (use preg_replace() instead)
eregi() (use preg_match() with the ‘i’ modifier instead)
eregi_replace() (use preg_replace() with the ‘i’ modifier instead)
set_magic_quotes_runtime() and its alias, magic_quotes_runtime()
session_register() (use the $_SESSION superglobal instead)
session_unregister() (use the $_SESSION superglobal instead)
session_is_registered() (use the $_SESSION superglobal instead)
set_socket_blocking() (use stream_set_blocking() instead)
split() (use preg_split() instead)
spliti() (use preg_split() with the ‘i’ modifier instead)
sql_regcase()
mysql_db_query() (use mysql_select_db() and mysql_query() instead)
mysql_escape_string() (use mysql_real_escape_string() instead)
Passing locale category names as strings is now deprecated. Use the LC_* family of constants instead.
The is_dst parameter to mktime(). Use the new timezone handling functions instead.Code language:JavaScript(javascript)
Le problème : le code des vidéos n’est pas valide en HTML5
Maintenant que nous avons mis à jour le code des oEmbed Youtube, nous allons rendre le code de l’iframe valide. Voici ce que le code oEmbed de WordPress donne par défaut avec un lien Youtube :
Or le petit problème, c’est que tout cela n’est pas vraiment valide au niveau W3C et je commence à me lasser de voir ces erreurs de validation sur toutes les pages du site avec des vidéos :
Erreur 1 : Attribute allowfullscreen not allowed on element iframe at this point.
Erreur 2 : The frameborder attribute on the iframe element is obsolete. Use CSS instead.Code language:JavaScript(javascript)
La solution : filtrer le rendu oEmbed de WordPress pour purifier le code
Voici donc la solution que j’ai mise en place sur le site : je filtre le code oEmbed de WordPress de manière à retirer le tag allowfullscreen qui n’a rien à faire là et à supprimer l’attribut frameborder, que je remplace par un style="border: none".
Éditez le fichier functions.php de votre thème et ajoutez-y cette fonction:
<?php/*
|-----------------------------------------------------------------------
| Sky oEmbed Filter by Matt - www.skyminds.net
|-----------------------------------------------------------------------
|
| The sky_oembed_filter() function attempts to validate WordPress
| video oEmbeds for HTML5.
| $return is the normal HTML that the oEmbed process would return.
| $data is the data received from the oEmbed call, in an object format.
| $url is the original URL being queried for oEmbed info.
|
*/
add_filter('oembed_dataparse', 'sky_oembed_filter', 90, 3 );
functionsky_oembed_filter( $return, $data, $url ){
$return = str_replace('frameborder="0" allowfullscreen', 'style="border: none"', $return);
return $return;
}Code language:HTML, XML(xml)
Notez que WordPress cache les résultats oEmbed dans la table postmeta donc après avoir installé ce code et si vous voulez vérifier que cela fonctionne, éditez un article pour que le postmeta se mette à jour.
Voilà, vos pages avec vidéos YouTube devraient maintenant être valides.
Je me suis rendu compte qu’un des fichiers javascript d’un plugin WordPress est appelé sur chaque article du site et qu’il n’est pas mis en cache par défaut…
C’est très moyen au niveau optimisation étant donné que c’est typiquement le genre de fichier statique qui n’est pas prêt d’être modifié.
Voici donc les en-têtes (headers) qui vont nous permettre de mettre un fichier en cache en PHP :
<?php/*
|--------------------------------------------------------------------------
| Enable Caching with PHP headers by Matt - www.skyminds.net
|--------------------------------------------------------------------------
|
| Let's set it to 90 days caching.
| seconds, minutes, hours, days
|
*/
$expires = 60*60*24*90;
header('Pragma: public');
header('Cache-Control: maxage='.$expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');Code language:HTML, XML(xml)
Et voilà, page mise en cache.
Cela fait moins de requêtes sur le serveur puisque le navigateur n’a pas besoin de redemander la page à chaque visite.
M’étant quelque peu arraché les cheveux pendant les vacances pour trouver comment afficher correctement un shortcode dans une template WordPress, voici comment afficher un shortcode dans un article, une page ou une modèle de page.
Cela me servira de référence ultérieure mais je suis certain que cela en aidera d’autres.
Créer un shortcode
Pour créer un shortcode, on crée une fonction puis le shortcode associé dans le fichier functions.php du thème WordPress :
/* Fonction */functionsky_hello_readers($content){
return'Hello readers !';
}
/* Création du shortcode avec add_shortcode() */
add_shortcode( 'hello', 'sky_hello_readers' );Code language:PHP(php)
Aujourd’hui, je vous livre la solution à un problème auquel vous avez peut-être été confronté lors de la configuration de votre serveur dédié – il s’agit d’une erreur que l’on peut trouver dans les fichiers logs d’Apache :
Dec 1216:19:26 mail suhosin[22860]: ALERT - script tried to increase memory_limit to 268435456 bytes which is above the allowed value (attacker '82.83.84.85', file '/home/skyminds/public_html/wp-admin/admin.php', line 96)Code language:JavaScript(javascript)
Etape 1 : paramétrage de memory_limit dans php.ini
On édite notre fichier php.ini :
nano /etc/php5/apache2/php.ini
On recherche la variable memory_limit et on l’augmente à 256MB :
; Maximum amount of memory a script may consume (128MB)
; http://php.net/manual/en/ini.core.php#ini.memory-limit
memory_limit = 256MCode language:JavaScript(javascript)
Note : vérifiez que vous éditez bien le bon fichier php.ini ! Je me suis aperçu après quelques essais que celui qui correspondait à mon installation était en fait /etc/php5/apache2filter/php.ini.
Lancez un phpinfo();pour être sûr du fichier à éditer.
J’ai laissé la main à une collègue depuis que je suis parti – d’ailleurs on peut voir qu’il y a beaucoup moins d’images et de contenu depuis – mais je garde toujours un œil dessus. C’est dur de se détacher de ses créations!
Aujourd’hui, nous abordons la sauvegarde des fichiers essentiels du serveur.
Backup Manager permet d’effectuer des sauvegardes quotidiennes du système : il crée des archives dans plusieurs formats de compression (tar, gzip, bzip2, lzma, dar, zip) et peut les exporter vers un serveur FTP.
Dans notre cas, nous allons l’installer et le configurer pour envoyer tout ce qui est important sur notre serveur sur le serveur FTP externe de sauvegarde fourni gratuitement par OVH (100 Go).
A la fin de l’installation, un assistant se lance et vous permet de configurer des options par défaut. Ou vous pouvez configurer à la main, comme indiqué dans l’étape suivante.
Cela fait quelques mois que le nouveau serveur est en place et il est temps de faire un petit bilan au niveau des performances.
Charge processeur
Tout d’abord, bien que le serveur soit équipé des mêmes caractéristiques techniques (même CPU, même quantité de RAM), il s’avère qu’il est beaucoup plus réactif que l’ancien.
Le processeur n’est plus surchargé en permanence et lorsque l’on lance un top, la charge du processeur est le plus souvent entre 0.05 et 0.20, ce qui est idéal.
A titre de comparaison, l’ancien serveur avait une charge souvent supérieure à 2.
Analyse du temps de chargement des pages via Google Webmaster Tools
Il y a quelques semaines, je me suis connecté sur Google Webmaster Tools et lorsque j’ai atteint le graphique du temps de chargement des pages du site, j’ai eu l’agréable surprise de découvrir ceci :
Il y a quelques jours, j’ai eu besoin de modifier les permissions de plusieurs dizaines de fichiers PHP.
Plutôt que d’utiliser la fonction CHMOD du client FTP, je me suis dit que ce serait sûrement plus rapide via ligne de commandes.
Chmod sur toute une extension de fichiers
Pour faire un CHMOD 640 récursif sur tous les fichiers PHP d’un répertoire, commencez par vous rendre dans le répertoire puis utilisez cette commande :