Appeler des fonctions wordpress en dehors du blog – 2
Ce qu’il y a de bien, fascinant, amusant, exaspérant (surtout à 3 heures du matin) avec l’informatique, windows ou WordPress, c’est qu’une fois ça marche, une fois ça ne marche pas.
Bref, sur le site de l’Oasis de Mezgarne, qui vend des vacances au Maroc (et hop… un lien, c’est de bonne guerre), j’utilise depuis longtemps les fonctions WordPress en dehors du blog, et sans aucun problème d’erreur 404. J’en avais parlé dans cet article.
Tout marchait bien, les pages apparaissaient avec un statut 200.
Dans le cadre de la migration vers une nouvelle version, je créé un autre domaine, je copie tous mes fichiers, j’installe un blog, et là… patatras, sans que je comprenne pourquoi, les pages sont en 404 OK.
J’ai passé trois heures à comparer les options des deux blogs, à changer l’ordre d’include des fonctions (avec peu de marge de manoeuvre, pourtant), rien n’y faisait, ça ne marchait pas.
Finalement, en appliquant la solution trouvée déjà chez Ardamis, qui consiste à ne pas appeler le fichier blog-header, mais le wp-config, et ensuite à faire les initialisations soi même, cela marche.
< ? 'php require('./wp-config.php');
$wp->init();
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
'?'>
L’essentiel est que cela marche…
Merci beaucoup =)
Salut, as-tu trouvé une solution pour activer les plugins?
Il faut inclure le fichier wp-load.php pour charger les fonctions de WordPress. Voici le code que j’insère au tout début des fichiers PHP lorsque j’ai besoin d’utiliser des fonctions de WordPress:
<?php $file = 'wp-load.php'; $i = 0;
while ((!file_exists($file)) && ($i < 8)) { $file = '../'.$file; $i = $i + 1; }
include_once $file;
L’intérêt de ce code, c’est qu’il fonctionne pratiquement à tous les coups quel que soit l’emplacement du fichier, grâce à la boucle.
Bonjour,
Désolé de déterrer ce topic qui dormait depuis un moment mais je planche sur le problème de l’intégration depuis des jours et je n’arrive à rien ! Si j’en crois tous les sujets que j’ai consulté, vous êtes à l’aise avec le procédé et avez aidé beaucoup de monde. Mais j’avoue que je n’arrive pas vraiment à m’y retrouver dans la masse d’informations.
J’ai bien intégré le code PHP ci-dessus et le “require” semble avoir fonctionné pourtant la page devant contenir le blog reste vide. Je suppose qu’il faut que j’y intègre d’autres choses, mais quoi ? Ce n’est précisé sur aucun forum d’aide. J’ai essayé d’intégrer index.php sans succès : Warning: Cannot modify header information – headers already sent by (output started at /home/yatacrea/www/index.php:108) in /home/yatacrea/www/wordpress/wp-includes/pluggable.php on line 1121
Concrètement je ne veux faire apparaître que les articles et les commentaire sur ma page “blog”.
Pourriez-vous m’en dire un peu plus sur la manipulation svp ?
Une fois que vous avez chargé les fonctions du blog, il est effectivement inutile de charger index.php qui charge tous les fichiers. La page “devant contenir le blog” doit avec un template défini, avec des fonctions qui chargent et affichent les différents articles. C’est ce qui se passe, par exemple, dans le fichier index.php d’un thème (et pas de wordpress). A vous de la créer en fonction de vos besoins, vous avez tous les outils nécessaires sous la main.
Merci beaucoup pour votre réponse rapide. Visiblement ça s’annonce donc plus compliqué qu’une simple intégration php :-/ Le site contenant le blog n’est pas un WordPress, donc pas de template applicable, il va falloir que je trouve une solution manuelle.
PS : je crois qu’il y a un bug sur votre blog, le dernier commentaire n’apparaît qu’une fois qu’un nouveau a été posté. C’est assez étrange. (testé sur Chrome et FF)
Oui je sais, c’est bizarre, je pense que c’est dû à un réglage du cache sur les articles anciens.
En fait l’objectif de l’intégration des fonctions wordpress c’est exactement ça : dans un site Prestashop, rajouter une sidebar wordpress, dans un site “autre” rajouter des éléments.
Par exemple, sur le site que je faisais quand j’ai plongé là dedans, http://www.mezgarne.com, le blog est en sous répertoire http://www.mezgarne.com/maroc/blog mais une page comme est faite avec les fonctions wordpress pour lister les derniers articles du blog. De la même façon, sur la page https://o-maroc.com/lieux/marrakech.php, le carré de gauche “et sur le blog” utilise les fonctions wordpress.
Après rien ne vous empêche de reprendre des templates de base de thèmes “sans style” (sandbox, que j’utilise sur Mezgarne, bootstrap, zen) et d’utiliser les morceaux qui vous intéressent dans votre site.
Après il est toujours possible de voir plus en détail votre problème et ce que vous cherchez à faire, mais dans ce cas envoyez moi un message via le formulaire de contact
Vos commentaires m’ont aiguillé sur la bonne voie et je suis enfin arrivé à quelque chose ! Comme vous le suggériez j’ai installé un thème minimaliste et je le retravaille pour qu’il s’adapte correctement (pas facile de faire cohabiter les CSS du site et du blog !)
Je pense pouvoir m’en sortir maintenant. Merci beaucoup pour votre patience et votre savoir faire !
Vu les difficultés que j’ai eu pour en arriver là je vais laisser un mini récap’ pour les futurs naufragés qui atterriront ici :
1 – Copier le code suivant entre les balises de votre site (penser à adapter le chemin du fichier wp-config.php) :
init();
$wp->parse_request();
$wp->query_posts();
$wp->register_globals();
?>
2 – Installer un thème WordPress “basique” ou s’adaptant à vos besoins.
3 – Copier/coller le contenu du fichier index.php du thème (et non pas ceux de WordPress !) dans votre page qui doit accueillir le blog.
4 – Modifier les divers fichiers du thème (toujours pas ceux de WordPress !) pour adapter le blog à votre site. Bon courage avec les CSS car de nombreux conflit interviennent entre les styles du site et du blog.
Merci à vous :)
Pour les css je n’avais pas eu de problème, mais la feuille de style de sandbox était plus qu’hyper minimaliste… ce n’est plus le cas maintenant.
Question quand même pourquoi ne pas faire la totalité du site en WP ?
Mon site est déjà développé depuis longtemps donc j’ai un peu la flemme de le refaire sur WordPress surtout que je ne maîtrise pas assez l’outil pour faire un site complet dessus. Vous pensez que ça aurait facilité les choses ?
J’ai un petit soucis avec les liens sur le blog… ils renvoient tous à mon dossier de blog, du coup on quitte le site dès qu’on ouvre un article :( J’ai vu que vous n’aviez pas ce problème sur votre site bien que les articles de blog renvoient au dossier “blog” mais je ne comprends pas comment vous vous y êtes prise. Avec des réécritures d’url peut-être ?
Oui je pense que ça faciliterait nettement les choses, d’après ce que j’ai vu il n’est pas hyper complexe. A l’époque où j’ai fait le site de Mezgarne, j’ai fait cette erreur (ne pas passer tout d’un coup sur WordPress), et je le regrette aujourd’hui, il faut absolument que je le migre et c’est nettement plus compliqué.
Je n’ai aucune réécriture d’url, j’ai défini dans les paramètres généraux l’url du blog avec le /blog/ et j’utilise la fonction permalink normale. Les autres liens sont écrits en absolu, avec le préfixe http , sinon WordPress les transforme en liens internes au blog
Bonjour,
Alors je vais commencer par dire que, bien que je comprends vite et que parfois j’arrive à faire toute seule les choses assez complexe sans chercher une notice, là je sens que pour ce que je souhaiterais c’est beaucoup plus difficile car il faut (si je comprend bien) intégrer des codes et là je sèche complet!
Pour faire simple, je viens de créer un site d’art ou je voudrais que se soit un site ou il y a les pages “accueil”; “a propos” etc… avec une page qui redirigera les abonnés sur un blog où ils auront la possibilité de s’enregistrer via un mot de passe etc… pour poster leurs œuvres (c’est un site / blog sur le dessin et la peinture plus précisément).
Alors pour l’instant, dans mon menu j’ai intégrer le bouton “blog” mais evidemment, il n’y a encore rien parce que je ne sais pas comment faire pour comme tous les sites (le votre par exemple), le mien ait la partie blog où quand ont clique dessus il y est ce que je voudrais.
Il faudrait m’expliquer très en détail comment fait-on.
J’ai installé mon site wordpress directement via l’hébergeur OVH.
Je vous remercie d’avance pour votre réponse.
Sabrina