Shortcodes en php (sans wordpress)

Eléphanteau du PHP | 13 Messages

18 févr. 2016, 21:18

Bonjour,

J'aimerais pouvoir créer et utiliser des shortcodes à la manière de wordpress (mais en dehors d'une installation wordpress). Il s'agit de repérer et traiter des shortcodes qui sont parsemés dans un texte.

exemple :
<p>Donec [A] id elit non mi porta [E] gravida at eget metus. [/E] Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Sed posuere consectetur est at lobortis. Donec id elit non mi porta gravida at eget metus. [C class="a"] Cras justo odio, dapibus ac facilisis in, [D]egestas [/D]eget quam. Integer posuere [/C] erat a ante venenatis dapibus posuere velit aliquet. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec id elit non mi porta gravida at eget metus. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Maecenas sed diam eget risus varius blandit sit amet non magna.</p>
J'ai cherché des infos sur le web, mais je n'ai rien trouvé de consistant. Je m'étonne de ne pas trouver de doc sur ce sujet ...

Je cherche surtout comment gérer des shortcodes inbriqués, ou avec des paramètres, enfin : comment se gère la détection des shortcodes dans un texte...

Des pistes ?

Eléphant du PHP | 243 Messages

19 févr. 2016, 00:10

Bonjour,
Je pense que la meilleure des méthodes est de passer par le str_replace.
Avec cette fonction, il suffit alors de remplacer tous les [ b ] par des <b>, tous les [ /b ] par des </b>, tous les [ br ] par des <br>, etc...
http://php.net/manual/fr/function.str-replace.php
Modifié en dernier par Ascla le 19 févr. 2016, 01:50, modifié 1 fois.
"Nos études ont montré que la probabilité qu’un programme corrigé fonctionne comme avant la correction est seulement de cinquante pour cent"
~~Lorenzo Strigini

Avatar du membre
Mammouth du PHP | 1609 Messages

19 févr. 2016, 01:14

Bonsoir, à moins que tu veuilles développer ta propre api de shortcodes tu pourrais utiliser celle de wordpress qui se trouve dans wp-include/shortcodes.php.
Elle est documentée ici : https://codex.wordpress.org/Shortcode_API
Tu peux aussi t'en inspirer pour faire la tienne.
A noter qu'aucun shortcode n'est défini de base c'est à toi de tous les créer.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 13 Messages

19 févr. 2016, 09:38

@Saian : merci. Tu veux dire qu'il est possible de se servir directement de l'API de wordpress pour la réutiliser telle quelle ? Genre placer le fichier "wp-include/shortcodes.php" sur son site, puis en faire un include. Et ensuite "déclarer" ses shortcodes comme l'on fait dans un site wordpress avec "add_shortcode", etc ? Cela fonctionnerait ? (ou faut-il importer d'autres éléments, ou utiliser une autre méthode ?).

Avatar du membre
Mammouth du PHP | 1609 Messages

19 févr. 2016, 11:16

C'est tout à fait ce que je suggère. A priori non, rien d'autre à importer.
Développeur web depuis + de 20 ans

Eléphanteau du PHP | 13 Messages

19 févr. 2016, 11:19

@Saian, ah je n'imaginais pas que cela soit possible ... cela serait pratique, je pourrais conserver toutes mes définitions de shortcodes deja crées.

Avatar du membre
Mammouth du PHP | 1609 Messages

19 févr. 2016, 11:22

J'ai fait le test hier soir et dans la version de wordpress que j'avais, il y avait juste un add_filter à enlever à la fin du fichier. ;)
Développeur web depuis + de 20 ans

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 févr. 2016, 23:47

+1 c'est effectivement la meilleure approche :)
Quand tout le reste a échoué, lisez le mode d'emploi...