[Résolu] Utilisation d’un shortcode de plugin de façon dynamique ? (Créer un compte)

  • WordPress :6.1
  • Statut : résolu
3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Messages
  • #2441568
    kikadikoi
    Participant
    Initié WordPress
    41 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL : 7.4
    • Thème utilisé : Ocean-child
    • Extensions en place : leaflet
    • Nom de l’hébergeur : localhost
    • Adresse du site : localhost

    Problème(s) rencontré(s) :  Commet utiliser un shortcode de façon dynamique ?

    Utilisé de manière statique, ce shortcode de leaflet fonctionne parfaitement, exemple :

    [leaflet-map address= »France, Limoges » fitbounds zoom=12 scrollwheel]
    [leaflet-marker address= »France, Bourges »]Pierre[/leaflet-marker]
    [leaflet-marker address= »France, Poitiers »]Juien[/leaflet-marker]

    … etc.

    Maintenant, je voudrais le même résultat, mais avec des données obtenues dynamiquement. C’est possible avec le shortcode suivant :

    [leaflet-geojson src= »xxx.json »][/leaflet-geojson]

    Seulement voilà, je ne parviens pas à structurer un fichier « GeoJSON » avec juste le nom du pays et le nom de la ville ! …  J’ai fait pas mal de recherches sur le Net, mais les modèles que j’ai pu trouver ne correspondent pas à mon contexte de « Pays », « Ville » …

    Est-ce que quelqu’un pourrait me mettre sur la bonne voie, s.v.p. ?

    #2441629
    mathieu42
    Participant
    Maître WordPress
    1846 contributions

    vous pouvez utiliser « do_shortcode » pour exécuter des shortcode dans une chaine de caractères :

    do_shortcode()

    ça donnera quelque chose comme ça :

    $fichier = "donnees.json";
    $contenu = file_get_contents($fichier);
    $geo = json_decode($contenu);

    $resultat_shortcodes = "";

    foreach (... as ...) { // boucle pour parcourir les données géographiques

    // lecture des informations d'un point
    $ville = ...
    $libelle = ...

    // construction des shortcodes
    $resultat_shortcodes .= "[leaflet-marker address=\"$ville\"]$libelle[/leaflet-marker]";


    }

    // exécution des shortcodes
    echo do_shortcode($resultat_shortcodes);

    #2441720
    kikadikoi
    Participant
    Initié WordPress
    41 contributions

    Merci pour ta réponse ; effectivement c’est la bonne direction 🙂 , ça fonctionne !

    Cependant, il faut corriger une erreur de syntaxe dans le code précédent, à la ligne 14, au niveau de la variable ($libelle), comme ceci :

    $resultat_shortcodes .= "[leaflet-marker address=\"$ville\"]".$libelle."[/leaflet-marker]";

    et ne pas oublier d’inclure en premier le tag suivant :

    [leaflet-map address=\ »France\ » fitbounds zoom=12 scrollwheel]

3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.