I am trying to add a custom WordPress editor field to the General Settings page in the admin. I have it working except that when you save anything with HTML it converts all the code to HTML entities so the HTML displays on the frontend as text. For example…
- I add a link in the Text editor as
<a href="http://www.example.com">Link</a>
- I click to the Visual editor and everything looks normal…
- Visual = Link
- Text =
<a href="http://www.example.com">Link</a>
- I click save at the bottom and when the page reloads now I get this…
- Visual =
<a href="http://www.example.com">Link</a>
- Text =
<a href="http://www.example.com">Link</a>
- Visual =
Am I missing a setting somewhere? My code currently is…
/**
* 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);
}
}
I found out I needed to add
html_entity_decode()
around the value so my final code is…and then to output it into the theme and maintain any shortcodes and linebreaks…
From the codex:
Your code: