Ajout d’un bouton avec un shortcode (Créer un compte)

  • WordPress :6.6
  • Statut : non résolu
5 sujets de 1 à 5 (sur un total de 5)
  • Auteur
    Messages
  • #2481815
    sndelep
    Participant
    Initié WordPress
    6 contributions

    Bonjour,

    Ma configuration WP actuelle

    • Version de PHP/MySQL :8.3.13
    • Thème utilisé : Astra
    • Extensions en place : elementor, woocomerce, makeconnector
    • Nom de l’hébergeur : ovh
    • Adresse du site : tantemarguerite.fr

    Problème(s) rencontré(s) :

    Contexte :
    Je développe un site WordPress utilisant WooCommerce et Elementor. J’essaie de créer un shortcode qui récupère une URL stockée en tant que méta-donnée utilisateur et qui renvoie un lien de téléchargement vers un PDF personnalisé.

    Problème :

    • Lorsque j’insère le shortcode [lien_pdf] sur une page (avec Gutenberg ou Elementor), j’obtiens l’erreur suivante :
      « La mise à jour a échoué. La réponse n’est pas une réponse JSON valide. »
    • Un shortcode simple fonctionne correctement, mais mon shortcode personnalisé ne renvoie rien, et je suspecte qu’il pourrait y avoir un problème dans la façon dont il est codé.

     

    Code du Shortcode :

    function afficher_lien_pdf() {
    $current_user_id = get_current_user_id();
    $lien_pdf = get_user_meta($current_user_id, 'première_chasse_', true);

    // Debug : Afficher l'URL récupérée
    error_log('Lien PDF récupéré: ' . $lien_pdf);
    if (empty($lien_pdf)) {
    return 'Lien non disponible';
    }

    return '<a href="' . esc_url($lien_pdf) . '" target="_blank">Télécharger votre PDF</a>';
    }
    add_shortcode('lien_pdf', 'afficher_lien_pdf');

    Tentatives de Résolution :

    • Vérifié que le shortcode est correctement enregistré.
    • Utilisé esc_url() pour sécuriser l’URL.
    • Modifié le code pour retourner une chaîne plutôt que d’utiliser echo.
    • Activé le mode debug, mais le fichier debug.log ne montre pas d’erreurs évidentes.
    • Testé avec un shortcode simple (texte) qui fonctionne.
    • Testé avec un shortcode simple (avecdatauserdebase):
       get_user_meta($current_user_id, 'first_name', true); // Utilisez une clé existante pour tester

      qui fait le même problème

    Questions :

    1. Que pourrait-il se passer pour que l’erreur JSON se produise lors de l’utilisation du shortcode personnalisé ?
    2. Y a-t-il d’autres méthodes ou meilleures pratiques pour déboguer ce type de problème avec des shortcodes ?

    Merci d’avance pour votre aide !

    #2481821
    Rock4Temps
    Participant
    Maître WordPress
    1127 contributions

    Bonjour,

    Utiliser ob_start & ob_get_clean comme dans cette Exemple

    #2481830
    Rock4Temps
    Participant
    Maître WordPress
    1127 contributions
    ob_start();
    echo'<a href="' . esc_url($lien_pdf) . '" target="_blank">Télécharger votre PDF</a>';
    return ob_get_clean();

    #2481834
    sndelep
    Participant
    Initié WordPress
    6 contributions

    bonjour pas de différence

     

    nouvelle info non négligeable, lorsque je mets un code court dans elementor, le lien fonctionne, c’est dans la fonction elementor ’boutton »  ou titre que ça ne marche pas

     

    pour résumer :

    • bloc shortcode : OK
    • bloc boutton ou titre avec shortcode NOK

     

     

    Fichiers joints :
    Vous devez être connecté pour voir les fichiers joints.
    #2481862
    Rock4Temps
    Participant
    Maître WordPress
    1127 contributions

    Comme je n’ai pas elementor pro, je ne peut vous
    aider davantage , et la DOC d’elementor est succincte.

    Voyez avec le support de l’extension Elementor.

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