web-dev-qa-db-fra.com

Champ de l'éditeur personnalisé affichant HTML dans l'éditeur visuel

J'essaie d'ajouter un champ d'édition WordPress personnalisé à la page Paramètres généraux de l'administrateur. Je le fais fonctionner, sauf que lorsque vous enregistrez quoi que ce soit avec HTML, il convertit tout le code en entités HTML afin que le HTML apparaisse sur l'interface sous forme de texte. Par exemple...

  1. J'ajoute un lien dans l'éditeur Texte en tant que <a href="http://www.example.com">Link</a>
  2. Je clique sur l'éditeur Visual et tout semble normal ...
    • visuel = lien
    • Texte = <a href="http://www.example.com">Link</a>
  3. Je clique sur Enregistrer en bas et lorsque la page se recharge, je reçois ce message ...
    • visuel = <a href="http://www.example.com">Link</a>
    • Texte = &lt;a href="http://www.example.com"&gt;Link&lt;/a&gt;

Est-ce que je manque un réglage quelque part? Mon code est actuellement ...

/**
 * Add Copyright text to general settings menu
 */
$custom_general_settings = new FD_Custom_General_Settings();
class FD_Custom_General_Settings
{
    function __construct()
    {
        add_filter('admin_init', array(&$this , 'register_fields'));
    }
    function register_fields()
    {
        register_setting('general', 'footer_text', 'esc_attr');
        add_settings_field('footer_text', '<label for="footer_text">'.__('Footer Text' , 'footer_text' ).'</label>' , array(&$this, 'fields_html') , 'general');
    }
    function fields_html()
    {
        $value = get_option('footer_text', '');
        wp_editor($value, 'footer_text', array('textarea_rows'=>4), false);
    }
}
2
Scruffy Paws

J'ai découvert que j'avais besoin d'ajouter html_entity_decode() autour de la valeur pour que mon code final soit ...

/**
 * Add Copyright text to general settings menu
 */
$custom_general_settings = new FD_Custom_General_Settings();
class FD_Custom_General_Settings
{
    function __construct()
    {
        add_filter('admin_init', array(&$this , 'register_fields'));
    }
    function register_fields()
    {
        register_setting('general', 'footer_text', 'esc_attr');
        add_settings_field('footer_text', '<label for="footer_text">'.__('Footer Text' , 'footer_text' ).'</label>' , array(&$this, 'fields_html') , 'general');
    }
    function fields_html()
    {
        $value = html_entity_decode(get_option('footer_text', ''));
        wp_editor($value, 'footer_text', array('textarea_rows'=>4), false);
    }
}

et ensuite pour le sortir dans le thème et maintenir tous les codes courts et les sauts de ligne ...

echo nl2br(html_entity_decode(do_shortcode(get_option('footer_text', ''))));
2
Scruffy Paws

Du codex :

Notez que l'ID transmis à la fonction wp_editor () ne peut être composé que de lettres minuscules. Aucun trait de soulignement , aucun trait d'union. Tout le reste entraînera un dysfonctionnement de l'éditeur WYSIWYG.

Votre code:

wp_editor($value, 'footer_text', array('textarea_rows'=>4), false);
0
vancoder