updlw

Intégration de WordPress dans un site existant

Ce tuto a intégralement été repris du site de Julien Falque

WordPress a l’avantage de fonctionner entièrement en PHP y compris pour les thèmes, ce qui le rend assez flexible. C’est pourquoi il est relativement facile d’intégrer WordPress à un site existant, pour y apporter un moteur de blog efficace tout en gardant le design du site. Il suffit de créer un nouveau thème et de le bidouiller un peu.

Le thème WordPress

Si vous avez bien construit votre site, vous avez probablement des fichiers header et footer que vous incluez dans chacune de vos pages ou un système équivalent. WordPress fonctionne également de cette manière avec les fichiers header.php et footer.php du thème. Tout ce que vous avez à faire est de mettre dans ces templates les instructions pour récupérer vos propres fichiers.

header.php :
1. require_once('chemin/vers/mon/fichier/header.php');

et footer.php :
1. require_once('chemin/vers/mon/fichier/footer.php');

Dans votre propre header, vous faites sûrement appel à d’autres fichiers (configuration, textes, …). Si ces fichiers contiennent des variables que vous réutilisez un peu partout sur votre site — notamment les textes — celles-ci ne seront pas accessibles dans les fichiers de votre thème et la raison est simple : les variables globales ne sont par défaut pas accessibles à l’intérieur d’une fonction, le code exécuté par get_header() n’a donc pas accès à vos textes et autres variables utiles.

Lorsque vous ne pouvez pas utiliser get_header() dans votre thème, vous devez inclure manuellement les fichiers :
1. // TEMPLATEPATH = chemin du thème
2. require_once(TEMPLATEPATH.'/header.php');

Le principe est le même pour tous les éléments de votre thème à une exception près : les commentaires. Ce template s’insère via la fonction comments_template(). Ici cette fonction est obligatoire car en plus de récupérer votre template, elle va initaliser la plupart des variables dont vous aurez besoin pour afficher les commentaires. Il va donc falloir bidouiller pour accéder à la fois aux variables des commentaires et à vos propres variables, en ajoutant au début de comments.php le code suivant :
1. if (empty($do_comments_template))
2. {
3. return false;
4. }

Ainsi l’appel à comments_template() permettra d’initialiser les variables des commentaires sans afficher le template. Il ne reste plus qu’à placer le code suivant juste après l’appel :
1. $do_comments_template = true;
2. require(TEMPLATEPATH.'/comments.php');

Rien ne vous empêche d’utiliser un autre nom de variable que $do_comments_template, l’important étant qu’elle soit initialisée entre la première et la seconde inclusion du template.

Vous devrez également adapter le template pour le formulaire de réponse. WordPress mémorise les informations des utilisateurs qui postent des commentaires pour remplir automatiquement le formulaire. Dans les thèmes classiques, ces informations sont stockées dans les variables $comment_author, $comment_author_email, $comment_author_url mais avec la méthode ci-dessous, elles sont perdues. Voici comment les retrouver :
1. $commenter = wp_get_current_commenter();
2. $comment_author = $commenter['comment_author'];
3. $comment_author_email = $commenter['comment_author_email'];
4. $comment_author_url = $commenter['comment_author_url'];

Après ça il ne vous reste plus qu’à adapter le reste du thème à vos feuilles de style. Bien entendu le fichier style.css n’a plus aucune utilité à partir du moment où vous avez déjà votre propre feuille de style, si ce n’est éventuellement préciser les informations de votre thème.

Fonctions WordPress dans vos pages

Maintenant votre blog est stylé comme votre site mais il manque des éléments dans vos pages. Il faut au moins ajouter des informations dans le header — le ou les flux RSS par exemple — et pour cela vous aurez besoin des fonctions de WordPress :
1. if (!$blog) // Cette page n'est pas une page WordPress (adapter à votre code)
2. {
3. $_post = $_POST;
4. $_get = $_GET;
5. }
6. require_once('chemin/vers/votre/installation/wordpress/wp-load.php');
7. if (isset($_get) && isset($_post))
8. {
9. $_POST = $_post;
10. $_GET = $_get;
11. }

Avec ça vous aurez accès aux fonctions telles que bloginfo() ou wp_head(). Ce code, en plus de charger WordPress, va empêcher que celui-ci ne modifie vos données GET ou POST avec son mécanisme Magic Quotes maison.

Les Magic Quotes sont une fonctionnalité dont l’utilisation est déconseillée (deprecated depuis PHP 5.3 et supprimée dans PHP 6). Toutefois, WordPress implémente son propre système en modifiant les données, notamment $_GET et $_POST. Cela fonctionne très bien pour le blog mais avec le code ci-dessus, ce système est appliqué à tout votre site, ce qui peut poser problème si vous avez des formulaires. C’est pourquoi lorsqu’on n’est pas sur une page WordPress on stocke les variables $_GET et $_POST originales pour les rétablir juste après avoir chargé WordPress.

URL Rewriting

Vous avez probablement installé WordPress dans un répertoire bien à lui. Si vous souhaitez que l’URL soit différente vous pouvez le faire via l’URL Rewriting. Il faut d’abord indiquer la nouvelle adresse dans les réglages généraux de WordPress. Le champ « Adresse web du blog » passe donc de http://monsite.com/wordpress à http://monsite.com/blog. Il ne reste plus qu’à mettre un .htaccess à la racine de votre site avec la ligne suivante :
RewriteRule ^blog(/?)(.*)$ wordpress/$2 [L,QSA]

Dans le même genre, voir l’intégration de script php dans WordPress.

Au Suivant Poste

Précedent Poste

© 2024 updlw

Thème par Anders Norén