Mes plugins maison
Ayant la fâcheuse habitude de ré-écrire les plugin dont je ne trouve pas de version satisfaisante (et étant assez difficile sur la qualité du codage, les possibilité de paramétrage, etc., ça arrive souvent), je me dis qu’ils peuvent également servir à d’autres, donc autant les partager.
Vous trouverez donc ici les différents plugins assez stables pour être publiés.




21 juin 2009 à 22:45
Bonjour,
je me permets de vous contacter suite au commentaire que vous avez fait sur ce billet: http://www.webinventif.fr/query-inside-post-plugin-wordpress-pour-inserer-facilement-une-boucle-dans-un-billet/
Je voudrai en effet insérer une nouvelle boucle dans mon single.php et j’ai donc tapé ce code
qui me permets d’afficher deux images tirées de billets aléatoires. Sauf que la suite du single.php c’est les commentaires et que je me retrouve avec les commentaires du dernier billet aléatoire et pas du billet principal. C’est un problème que vous avez résolu dans la fonction du plugin cité plus haut mais comme je n’y connais que pouic en programmation, j’espèrais que vous pourriez me donner le bout de code php à insérer dans mon code pour obtenir ce que vous proposez, à savoir
puis
Si vous n’avez pas le temps, ce n’est pas grave, je vais tâcher de me dém… débrouiller :-) J’ai au moins une piste.
21 juin 2009 à 22:48
Désolé, ça ne passe pas. Bon, bref, c’était l’insertion d’une loop à l’intérieur de la loop du billet principal et comment en sortir pour retrouver le billet principal…
22 juin 2009 à 07:04
Ouais le code dans les commentaire c’est un peu la galère avec WordPress
D’autant qu’il prend pas les shortcodes… faudra que je voie pour lui faire prendre mes balises [code]…
Bref, j’ai un peu retouché le code pour qu’il s’affiche un peu mieux (en ajoutant les < et > qui vont bien)…
Sinon, le code de sauvegarde / restauration du contexte se trouve dans mon plugin PostLister, dans
inludes/WlistBlock.class.phpdans les méthodessaveCurrentdata()etrestoreCurrentdata(). En gros il y a essentiellement 3 variables globales à sauvegarder avant et restaurer ensuiteRien de bien compliqué, encore faut-il le savoir…
22 juin 2009 à 09:51
J’ai tenté de rajouter vos fonctions saveCurrentdata() et restoreCurrentdata() dans functions.php et de les appeler dans mon single.php mais ça couine au niveau de l’appel des headers. Si vous pouvez m’expliquer ça en 15 secondes je suis preneur sinon tant pis pour moi.
22 juin 2009 à 14:08
Là ce sont des méthodes dans une classes (références à l’instance courante via $this), donc effectivement, copiées telles-quelles, ça ne va pas passer
Une solution c’est de faire une petite classe “ContextSaver” comme suit :
Avant la bouche d’instancier le un objet de cette classe et d’appeler saveCurrentdata() dessus puis après la boucle, d’appeler restoreCurrentdata() sur cette même instance :
J’ai pas testé mais en théorie ça devrait marcher.
Par contre il faut PHP5 sinon, ça va péter… Mais en principe de nos jours y a plus des masses d’hébergeurs sans PHP5 (il n’est juste pas toujours activé par défaut).
22 juin 2009 à 14:51
Ça va, j’ai changé d’hébergeur pour avoir du bon php5 :-)
Alors si j’ai tout bien compris, je copie la première partie dans le fichier functions.php et par contre je ne peux pas insérer ces variables comme ça dans mon fichier single.php.
Il faut que je fasse
Je dois avoir l’air très noob, je suis désolé…
22 juin 2009 à 14:55
Rahhhh ce !?!! de code. Bon je voulais savoir comment appeler ces variables dans le single.php
Je ne peux pas les rentrer tels quels et si je fais ça ne passe pas
22 juin 2009 à 14:57
Je vais devenir fou. Même en trifouillant le code pour tromper WP, il réussit à reconnaitre. Bon bref, ma question est toujours la même.
Je m’excuse platement pour ces commentaires à répétition.
22 juin 2009 à 15:01
Vous avez quoi comme erreurs ? Parce que là c’est difficile de voir ce qui peut ne pas marcher sans plus de précisions…
Le seul truc potentiellement que je vois c’est que peut-être les deux fichiers ne sont pas exécutés dans le bon ordre et qu’il faudrait mettre la classe dans le même fichier que la boucle… Mais bon, c’est pas sûr du tout que ce soit ça…
22 juin 2009 à 15:41
Est-ce que je peux vous envoyer les fichiers par mail que vous voyiez bien ce que j’ai tapé (parce que là, le code c’est galère) (mais il me faudrait votre adresse :-)) ?
Si je mets simplement
$contextSaver = new ContextSaver();
$contextSaver->saveCurrentdata();
dans le single.php WP l’affiche comme du texte.
Si j’entoure ces appels avec du “plus petit”"point d’interrogation”php et fermeture “point virgule” “point d’interrogation”"plus grane” (mais c’est purement empirique), j’ai le message suivant:
Fatal error: Call to private method ContextSaver::saveCurrentdata() from context '' in /home/lian/public_html/blog/wp-content/themes/arthemia/single.php on line 50
22 juin 2009 à 15:52
Ah ben voilà, avec le message d’erreur c’est tout ce suite plus clair : j’ai fait une boulette dans mes copié/collé et oublié de passer les deux méthodes en accès publique (là, seule une méthode de la classe est autorisée à les appeler).
Donc il faut remplacer les
private functionpar despublic functionet ça devrait tout de suite aller mieuxEt il faut bien les encadrer de
<?phpet>, car ça doit être exécuté comme du PHP.22 juin 2009 à 19:03
Ça marche enfin ! Un grand merci. Je suis étonné que ce code ne soit pas trouvable sur le Web vu le nombre de plugins qui permettent d’insérer des boucles indépendantes dans les billets et l’ergonomie que ça apporte. Ça fait déjà un certain temps que je cherchais quelque chose de ce genre.
23 juin 2009 à 18:47
Faudrait que je prenne le temps d’en faire un tuto propre… Un jour