web-dev-qa-db-fra.com

WP_Editor - Enregistrement de valeur dans une option de plug-in - Stripping HTML

J'ai un wp_editor(); sur la page des paramètres de mon plugin.

J'ai également activé le menu déroulant "Taille de la police" dans TinyMCE.

Après avoir sélectionné du texte dans wp_editor(); et sélectionné une taille de police dans le menu déroulant de l'éditeur, la taille de la police est ajustée de manière appropriée (directement dans l'éditeur).

Cependant, après avoir enregistré mes paramètres de plug-in à l'aide de update_option(); et rechargé la page de paramètres de plug-in ... Le <span style="font-size: 18px;">highlighted text</span> est supprimé, ce qui me laisse uniquement du "texte en surbrillance" sans balises span pour ajuster la taille de la police.

J'ai essayé de rechercher le code wp_editor();, ainsi que le code add_option();/update_option();, pour voir si une sorte de nettoyage/nettoyage était en cours.

Avez-vous une idée du pourquoi une balise wp_editor(); span serait supprimée lors de la sauvegarde de son contenu dans une option?

Note latérale: Il semble que seules les balises span soient supprimées pour une raison quelconque. Je viens d'essayer d'utiliser soulignement, et cela a également été supprimé.

1
Michael Ecklund

le problème

Cela s'est avéré être un cas courant de nécessité d'utiliser stripslashes(); .

Comment ai-je compris cela?

Je me suis connecté à phpMyAdmin, j'ai navigué dans le tableau des options, trouvé le nom de mon option et l'ai modifié.

Voici ce que j'ai découvert ...

s:11:"description";s:90:"<span style=\"text-decoration: underline;\">This is supposed to be underlined text.</span>";

Donc, évidemment, mon plugin fonctionne. C'est sauver des choses correctement. Le texte que j'ai entré dans la wp_editor(); est là et le code HTML approprié enveloppe également mon texte.

Notez les barres obliques qui ont été ajoutées automatiquement. C'est ce qui causait le problème lors de la sortie du contenu de la wp_editor(); qui avait été enregistré dans l'option de plug-in.

Solution simple

  1. Utilisez stripslashes(); après avoir récupéré vos données d’option avant de les exporter.
  2. Cela devrait être fait en sortie et non en entrée.
1
Michael Ecklund