web-dev-qa-db-ja.com

ビジュアルエディタでHTMLを表示するカスタムエディタフィールド

カスタムWordPressエディタフィールドを管理者の[一般設定]ページに追加しようとしています。 HTMLで何かを保存すると、すべてのコードがHTMLエンティティに変換されるので、HTMLはフロントエンドにテキストとして表示されます。例えば...

  1. <a href="http://www.example.com">Link</a>としてテキストエディタにリンクを追加します。
  2. Visualエディタをクリックすると、すべて正常に見えます...
    • ビジュアル= リンク
    • テキスト= <a href="http://www.example.com">Link</a>
  3. 一番下の[保存]をクリックしてページをリロードすると、[...]と表示されます。
    • ビジュアル= <a href="http://www.example.com">Link</a>
    • テキスト= &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
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', ''))));
2
Scruffy Paws

コーデックスから

Wp_editor()関数に渡されるIDは、小文字のみで構成できることに注意してください。 アンダースコアなし、ハイフンなし。それ以外のものはWYSIWYGエディタを誤動作させるでしょう。

あなたのコード:

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