8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je suis en train de développer un thème WordPress dans lequel je dois intégrer des infos récupérées avec une API externe.

J'ai choisi de créer une extension dans laquelle j'y ai mis tous mes traitements de données, ça me permet de pouvoir générer ensuite un shortcode avec lequel l'utilisateur pourra interagir, par exemple, pour modifier combien d'items on affiche sur la page d'accueil.

De ce côté-là, tout fonctionne, mon souci se trouve par contre du côté de l'éditeur Gutenberg ; à partir du moment où j'ajoute mon shortcode à la page, et que je veux enregistrer, il me dit :

upload/1614773612-68566-capturedaeacran2021-03-03aa11.png

Alors qu'en fait, la page s'enregistre comme il faut (mes modifs sont bien prise en compte). Ce message est assez embêtant dans le sens où :
- C'est un gros message d'erreur rouge qui fait peur aux utilisateurs
- Au moment de quitter, WordPress averti via une belle alert JS que les modifs seront perdues (mais c'est faux)
- Et à chaque fois qu'on revient sur la modification de la page, il nous propose de récupérer les anciennes versions de la page (et c'est un peu lourd Smiley lol )

Du côté des functions PHP de mon extension, il y en a évidement dont le but est de renvoyer du HTML et de l'afficher. Je pensais d'abord que le souci venait d'ici, vu qu'on est du côté backoffice admin, pas besoin d'exécuter quoi que ce soit, du coup j'ai tenté de mettre mes appels de fonctions au sein d'une condition qui vérifie qu'on est pas sur une page admin :

if(!is_admin()) {
        maFonction($args);
    }


Avec ça, je suis sûr que plus rien ne s'exécute mais j'ai toujours ce foutu message d'erreur Smiley decu

Une idée ?

Merci d'avance,
Modifié par Loraga (03 Mar 2021 - 13:23)
Salut Parsimonhi,

Pour déboguer, on m'a indiqué de checker les réponses JSON de l'onglet réseau des outils de développement du navigateur. Et effectivement, il y avait du HTML dans la réponse, ce qui l'invalidait (logique)

J'ai repris tous mes appels de fonctions qui affichent du HTML, j'avais initialement essayé ceci :
if(!is_admin()) {
        maFonctionQuiAfficheDuHTML($args);
    }


Que j'ai remplacé par :
ob_start();
maFonctionQuiAfficheDuHTML($args);  
return ob_get_clean();


Et la réponse JSON est désormais propre et le problème résolu Smiley smile
Meilleure solution