Aller au contenu

Posts from the ‘Divers’ Category

22
mai

Migration sous wordpress

Pour des raisons techniques, il fallu migrer le contenu de mon blog qui était sous dotclear v2, vers du wordpress.

En effet, dotclear n’est apriori pas compatible avec la version 5.3 de PHP.  Après quelques recherches sur le net, j’ai appris à ma grande surprise que cela venait d’un problème lié aux paramètres passés par référence dans une fonction.

Le passage par référence, évite la copie du contenu d’une variable lorsque cette dernière est utilisée dans une fonction.

function incr_1 ($a) {++$a;}
$v1 = 1;
incr_1 ($v1);
echo $v1; // Affiche 1.

function incr_2 (&$a) {++$a;}
$v2 = 1;
incr_2 ($v2);
echo $v2; // Affiche 2.

Si vous avez bien analysé le code ci-dessus, vous comprenez que le paramètre de incr_1 est passé par copie, et celui de incr_2 par référence. En d’autres termes, dans incr_2 c’est la variable $a en mémoire qui est bien incrémentée.

Or en PHP, il était aussi possible de faire ceci:

function incr_1 ($a) {++$a;}
$nb = 1;
incr_1 (&$nb);
echo $nb; // Affiche 2.

Le procédé était identique, sauf que le passage par référence se réalisait au moment de l’appel de la fonction incr_1, ce qui désormais, depuis la version 5.3 de PHP est interdit! Donc ne fonctionne plus sous dotclear.

Bien entendu, un correctif va très prochainement être apporté si ce n’est pas déjà le cas au moment où je rédige cet article. D’ailleur, j’ai eu le droit à un tweet d’un certain Noé Cendrier, me conseillant d’installer une nightly build de dotclear … des fois que … mais en production, je préfère travailler sur du stable plutôt que sur du béta. Mais ça n’engage que moi!

Pour ce qui est de mes anciennes URL sous dotclear qui commençaient à être relativement bien référencées par google, j’ai dû patcher wordpress afin qu’il réalise une redirection permanente de mes anciennes URL. Et oui, les url sous wordpress sont différentes!

$redirect_http_patch = true;
switch ($_SERVER['REQUEST_URI']) {
    case 'ancienne_adresse':
        header ('Location: nouvelle_adresse');
    break;
    // ... etc ...
    default: $redirect_http_patch = false;
}
if ($redirect_http_patch) {
    header ('HTTP/1.0 301 Moved Permanently');
    exit;
}

Un peu barbare je l’avoue, surtout s’il y a une 50aines d’articles, fort heureusement, j’en suis encore loin! Désormais, il ne me reste plus qu’à Françiser le thème que j’ai installé … une autre histoire!