在可视编辑器中显示HTML的自定义编辑器字段

时间:2013-04-02 作者:Scruffy Paws

我正在尝试将自定义WordPress编辑器字段添加到管理中的常规设置页面。我有它的工作,除了当你用HTML保存任何东西时,它会将所有代码转换成HTML实体,所以HTML在前端显示为文本。例如

我在Text 编辑器组件<a href="http://www.example.com">Link</a>Visual 编辑器和一切看起来都很正常

  • Visual = Link
  • Text = <a href="http://www.example.com">Link</a>
  • 我单击底部的“保存”,现在重新加载页面时,我得到了这个
    • Visual = <a href="http://www.example.com">Link</a>
    • Text = &lt;a href="http://www.example.com"&gt;Link&lt;/a&gt;
  • 我是不是错过了某个设置?我的代码当前为。。。

    /**
     * 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 个回复
    最合适的回答,由SO网友:Scruffy Paws 整理而成

    我发现我需要添加html_entity_decode() 所以我的最终代码是。。。

    /**
     * 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);
        }
    }
    
    然后将其输出到主题中,并维护任何短代码和换行符。。。

    echo nl2br(html_entity_decode(do_shortcode(get_option(\'footer_text\', \'\'))));
    

    SO网友:vancoder

    codex:

    请注意,传递给wp\\u editor()函数的ID只能由小写字母组成。No underscores, 没有连字符。任何其他操作都会导致所见即所得编辑器出现故障。

    您的代码:

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

    结束

    相关推荐

    如何防止options.php从数据库中删除有效的现有数据

    我正在设置一个插件,并首次使用设置API在设置中创建表单。默认情况下,当插件被激活并以序列化格式存储在数据库中时,最初会创建插件的数据。今天,我添加了验证回调函数,它可以很好地进行验证。但是,当任何字段验证失败并且函数返回false(我也尝试返回NULL)时,数据库中现有的有效数据将被删除。问题是事情是怎么发生的,还是我在做傻事?在这种情况下,我原本预计数据库中现有的有效数据将保持不变,直到用户提供了一组有效数据来修改它为止。感谢您的任何建议。