Appeler les fonctions WordPress en dehors du blog.
Pour un site comme l’Oasis de Mezgarne qui mélange une (bientôt deux) installations WordPress, du pur html, du CMS maison, et bientôt une boutique, du type Magento ou OS-commerce, une bonne stratégie de linking nécéssite de faire des liens internes sur le blog.
Pour ce faire, soit on recode tout à la main, ou on parse son flux RSS, si on souhaite faire quelques chose de simple, soit, si on veut plus de souplesse et de puissance, on cherche à utiliser les fonctions WordPress.
La solution est d’ajouter dans l’en-tête un appel au fichier wp-config-blog.php qui se trouve à la racine de votre répertoire WordPress, et qui va initialiser les fonctions et les classes.
Et c’est à faire en utilisant la fonctionphp require($_SERVER[‘DOCUMENT_ROOT’].’cheminaudossierwordpress/wp-blog-header.php’)
où cheminaudossierwordpress représente le chemin à partir de la racine (pour Mezgarne, dont le blog est à www.mezgarne.com/maroc/blog/, moncheminaudossierwordpress serait /maroc/blog
Si votre blog est à la racine du nom de domaine, le chemin est vide.
Mais voilà… en cherchant sur le net, j’étais tombé sur un post expliquant que dans ce cas, WordPress n’aimant pas ce qui lui est extérieur, renvoie une erreur 404, comprise comme telle par Google. Très néfaste en termes de référencement, bien sûr, et de nature à vous faire reconsidérer soit l’architecture de votre site (hors de question dans ce cas), soit finalement recoder vos fonctions (et presque autant hors de question).
Les différentes propositions de workaround ne fonctionnant pas vraiment, je commençais à désespérer.
Après avoir un peu erré, je suis tombé sur un exemple de site qui utilisait la fonction en question, sans erreur 404.
Et un test avec web-sniffer montre un bel en-tête 200 sur mon fichier de test.
Alors ? Sans doute une des multiples améliorations des fonctions WordPress, au fur et à mesure des différentes versions. En tout cas, l’utilisation des fonctions du blog est maintenant possible sans problème de référencement.
Il semble que cela ne marche pas toujours. Une autre solution est expliquée dans ce post.
Bonjour :) (Re plutôt !)
J’ai tente aussi de comprendre comment utiliser les fonctions wordpress dans un dossier parent, j’ai bien compris comment ajouter le require() dans mon header, mais je n’ai pas compris la suite…
Tu dis que ça donne une erreur 404 ? Et je n’ai pas compris la solution à cette erreur… (J’ai peut-être mal lu aussi :P )
Donc je teste ça pour voir si ça fonctionne chez moi ;)
Merci
Non il n’y a pas de 404.
Il y a peut être eu, “avant”, mais ce n’est pas le cas maintenant. :)
Bonsoir =)
Je suis tombé sur votre article depuis le forum wordpress.
J’aurais une question.
Si j’ai 2 blogs wordpress, chacun dans un sous-domaine différents ainsi qu’une base de donnée différents, est-il possible de récupérer les informations dans une troisième base (si y a besoin, je cherche à me renseigner donc pas vraiment sûr…) ?
Par exemple, voici les 2 blogs: et
J’aimerais faire apparaitre le gravatar de l’auteur, le titre et la date des derniers articles sur cette page: http://www.ecleoz.com
Est-ce techniquement possible ? Je pense que oui, mais je n’arrive pas à trouver d’information à propos. Pouvez vous me conseillez des liens, ou des mots clés ? Merci beaucoup ^^
Bonne soirée
Bonjour Snook,
votre commentaire était passé en attente de modération à cause des liens.
A mon avis, le plus simple est d’utiliser les flux rss.
La méthode que j’ai donné ici ne peut pas être utilisée, puisqu’elle ne permet pas de spécifier “le blog”. Vous avez deux blogs, avec deux bases de données différentes, donc ça ne peut pas marcher.
Bonjour.
D’accord, je m’étais renseigné à propos des flux RSS pour les mettre sur une page. Alors maintenant j’ai un autre problème ^^’ je suis arrivé à mettre le flux RSS de mon forum SMF sur cette page, mais pas les flux des 2 blogs :s Je me sers de magpierss, mais d’après ce que j’ai pu lire, magpierss est intégré à WordPress, mais je n’arrive pas à trouver plus d’information à ce propos.
J’ai fait une demande bien sûr au support français de wordpress, mais aucune réponse. (ha si, quelqu’un qui a un autre problème ^^’ je vais lui répondre).
Donc voila, si vous avez des liens ou idées ça serait super.
Merci beaucoup. ^^
Tssttttt on ne tape pas sur le forum wordpress français, auquel je participe beaucoup :) et où on répond autant que possible en fonction des dispos de chacun.
Je ne vois pas vraiment la difficulté pour mettre des flux rss ? Il suffit d’utiliser les widgets ?
Nan nan, j’me suis peut être mal exprimé mais je ne taille pas le forum wordpress fr. ^^’
Sinon quel widgets ? Parce que honnêtement j’ai passé 2 journées à chercher y a quelques semaines et je n’ai rien trouvé.
Les widgets RSS de base :) Tu peux en mettre autant que tu veux dans la “sidebar” et avec à partir de la version 2.5 tu peux “widgetiser” n’importe quelle zone. Tu te fais donc une “sidebar” n°3 que tu inclus où tu veux dans ta page, et voilà c’est simple.
Merci pour ta réponse. ;)
Pour ceux qui passeront derrière moi et que ça intéresse, voici un lien très intéressant:
Bonne soirée.
Bonjour,
très intéressant mais ca marche pas chez moi, j’ai fait ($_SERVER[‘DOCUMENT_ROOT’].’uneexpo/wp-blog-header.php’)
puis j’ai coller le code de “recents post” sur la home
erreur sql etc
oui je sais je suis très nul mais si vous avez des idées ça peut m’aider
merci beaucoup
Il doit manquer un slash avant le /uneexpo je pense ?
Que vous dit exactement l’erreur php ?
Je ne vois pas…
/home.34/u/n/e/uneexpo/www/wp-blog-header.php est le bon chemin ? Autrement dit wordpress est bien à la racine ?
Et l’ordre d’insertion des includes est correct ? Vous ne faites appel à aucune fonction WP avant l’include de wp-blog-header ?
Bonjour,
merci pour votre rapidité
il y a ca comme erreur pour ce code
Warning: Division by zero in /home.34/u/n/e/uneexpo/www/accueil.php on line 98
et ca pour le code recent posts :
<a href=””>
Fatal error: Call to undefined function: query_posts() in /home.34/u/n/e/uneexpo/www/accueil.php on line 173
merci bien
Bonjour,
J’ai trouvé un moyen qui est pour moi plus simple :
integrer le flux rss feedburner.
En tout cas merci pour votre aide, bonne continuation
Cordialement
laurent
Lors d’un appel externe des fonctions wordpress le type du document DTD doit être le même (x)html …
Tu es sûr ? Je fais cohabiter du transitionnel et du strict dans certains blogs ?
Bonjour,
Je suis tombée sur votre site grace au forum wordpress.
Je cherche aussi à intégrer mon blog wordpress à mon site, j’ai suivi ce que vous avez écrit seulement, je bloque un peu..
Dans le header.php, ou dois-je placer mon code require(…) ?
Ensuite, j’aimerai savoir, que dois-je mettre comme code sur mon site pour qu’il s’affiche? J’ai lu dans un des commentaires, qu’il fallait mettre mais je comprends pas et je ne sais pas ou trouver cette partie du code à inserer sur mon site..
Pourriez-vous m’aider?
Merci d’avance pour votre futur réponse.
Re bonjour,
Je ne sais pas si vous avez bien compris mon commentaire datant de hier, j’ai vu que vous l’aviez modéré mais comme vous n’avez pas répondu, je me suis dis que vous avez peut-être mal compris ce que je voulais alors je me permet de vous expliquer du mieux que je peux.
Je possède un site dont j’ai monté la structure, j’ai crée une page /blog.html pour y afficher mon blog. Pour le moment, j’utilise une iframe mais a vrai dire, je n’aime pas du tout les iframes donc j’aimerai y mettre mes articles directement (ils se trouveront dans un “div”).
J’aimerai savoir quel est le code à mettre dans mon pour que, justement, mes articles s’y affiche?
J’imagine que je dois aussi modifié quelque chose dans mon header.php (celui du blog) comme j’ai pu le comprendre dans votre article. Est-ce le code “require($_SERVER[‘DOCUMENT_ROOT’]……” ? Si oui, ou dois-je le placé?
Je vois beaucoup de gens qui ont réussi grâce a votre article et réponse via le forum mais moi je plane complètement.. Peut-être que je n’ai rien compris..
Bonjour,
j’ai bien vu votre message, mais il se trouve qu’entre les trois secondes qu’il faut pour approuver et le temps nécessaire à une réponse il y a une différence.
Par ailleurs, il m’est difficile de dire plus que ce qu’il y a dans mon article, si ce n’est que la modification ne doit pas se faire dans le header.php du blog, mais dans la partie header de votre document blog.html qui devrait être un document php pour que cela fonctionne.
Je vous remercie de votre réponse et je m’excuse d’avoir posté 2 fois.
Je vais donc lâcher l’affaire, car la structure de mon site, ne possède pas de header et encore moins en php. lol
Encore merci de votre réponse.
Je n’ai pas dit “header” mais “la partie header” de votre document. Tout document html a une balise
Bonjour.
Merci beaucoup déjà de ces infos, j’ai réussi à afficher les articles sur la page d’accueil de mon blog! super !
Cependant je sèche à une autre étape, à savoir faire appel aux commentaires ou aux pages des posts précédents. En effet l’appel à ces fonctions ouvre le blog lui même, mais je voudrai rester sur la page du site.
Si vous pouviez me donner des pistes sur votre façon de procéder sur mezgarne, ce serait magique !
niknikko
Hello.
J’ai résolu mon problème en modifiant le thème afin qu’il fusionne avec mon site.
Cependant il me reste un problème, c’est que les plugins (exemple lightbox gallery) ne fonctionnent pas sur mon accueil site qui affiche les articles. L’accueil qui effectue l’appel des fonctions wordpress en dehors du blog.
Il existe un appel particulier à faire pour obtenir ces fonctionnalités ?
Cordialement Nikko.
Bonjour,
Je veux utiliser les même tables d’une seul base de données pour deux blog wordpress pour afficher les même articles et même pages.
Comment je peux faire ça??
Merci.
Selon ce que vous voulez faire, il y a plusieurs méthodes, la plus “brutale” étant d’avoir deux installations différentes avec le même préfixe de table dans le wp-config en y définissant des constantes d’url.
Quelle que soit la méthode, je ne voit pas l’intérêt de mettre un site entier en duplicate content