wp_json_encode()
Définition : wp_json_encode() encode une donnée PHP au format JSON en tenant compte de certaines contraintes de compatibilité. Elle permet de transmettre des structures exploitables par JavaScript ou des systèmes extérieurs.
Comprendre et utiliser
À quoi sert ce terme ?
Elle aide à produire une représentation sérialisée cohérente pour des informations qui doivent circuler entre PHP et JavaScript. L’exemple classique est une configuration non sensible nécessaire au rendu d’un composant.
Fonctionnement technique
La fonction utilise l’encodage JSON de PHP avec une couche de traitement WordPress selon les cas. Elle ne garantit pas à elle seule qu’une valeur soit sûre pour être insérée dans n’importe quel contexte HTML.
Dans quels contextes l’utiliser ?
Employer pour des données structurées générées par du PHP. Lorsqu’un JSON est injecté dans une page, maîtriser son emplacement, ses options d’encodage et les délimiteurs HTML adjacents.
Cas concret : ATOOLPHA
ATOOLPHA doit sérialiser un petit état de navigation contenant une page courante et des indicateurs publics pour un script de démonstration.
Exemple de code commenté
Extrait PHP destiné à un plugin ou à un template WordPress, dans le contexte indiqué ; pas au contenu HTML de l’article.
<?php
$data = array( 'page' => 2, 'mode' => 'lecture', 'public' => true );
$json = wp_json_encode( $data, JSON_UNESCAPED_UNICODE );
if ( false !== $json ) {
error_log( 'JSON valide, taille : ' . strlen( $json ) );
}
Décryptage de l’exemple
Le tableau est encodé sous forme de chaîne JSON. Le code contrôle l’échec éventuel avant de journaliser seulement sa taille : il n’insère pas directement la chaîne dans un attribut HTML.
Résultat attendu
Une chaîne JSON représentant les trois propriétés est produite si les valeurs sont encodables ; aucun script n’est exécuté.
Exercice pratique et vérification
Encoder un tableau contenant accents, booléens et nombres. Décoder le résultat sur une machine de test et comparer les types récupérés.
Précautions et limites
Ne pas exposer clés privées, secrets API ou métadonnées personnelles dans le JSON destiné au navigateur. Encoder ne signifie ni chiffrer ni autoriser.
À ne pas confondre
wp_json_encode() transforme une structure PHP en JSON ; wp_add_inline_script() gère le chargement de JavaScript associé à un handle ; les rôles ne sont pas interchangeables.
Diagnostic avancé
Si l’encodage retourne false, examiner les types de données et l’encodage de chaînes. Éviter d’écraser silencieusement la valeur d’origine.
Choix d’architecture et déploiement
Le JSON facilite l’interopérabilité, mais sa destination détermine les précautions : fichier, réponse REST, attribut HTML ou script inline ne présentent pas les mêmes contraintes. Éviter d’exposer une configuration serveur interne au navigateur sous prétexte qu’elle est encodée.
Contrôle avant intégration
Contrôler l’absence de secrets, la validité des types, les options d’échappement adaptées au contexte HTML et la gestion des erreurs.
Notions associées
- wp_add_inline_script()
- JavaScript
- API REST
