Многоразовые пользовательские мета-боксы WordPress

Я использую многоразовые пользовательские мета-боксы WordPress, чтобы добавлять пользовательские мета-боксы в моя тема.

Одним из требований является наличие WYSIWYG Editor в метабоксе.

Часть кода для получения этой вещи:

array(
        'label' => __('Availability content'),
        'desc'  => __('Some desc'),
        'id'    => 'availability_text',
        'type'  => 'editor'
    ),  

Теперь, когда я сохраняю пост, информация в метабоксе сохраняется, но не форматируется и изображения, которые были в редакторе, теряются.

Почему это может произойти и как это решить?

Я заметил, что он удаляет форматирование, удаляет теги p <br> h1 и т. д.


person RhymeGuy    schedule 04.07.2014    source источник
comment
Не могли бы вы поделиться со мной содержимым, которое вы сохраняете, чтобы я мог воспроизвести проблему?   -  person Vinod Dalvi    schedule 04.07.2014
comment
Ваш контент нормально работает в редакторе сообщений по умолчанию?   -  person Vinod Dalvi    schedule 04.07.2014
comment
@VinodDalvi да, он отлично работает в редакторе сообщений. Содержимое, которое я пытаюсь сохранить, представляет собой форматированный текст (заголовок, теги абзаца и изображения). Также я попытался создать свой собственный метабокс с помощью редактора WYSIWYG, и он отлично работает, что позволяет мне сделать вывод о том, что существует проблема с сохранением пользовательских метабоксов из github.com/tammyhart/Reusable-Custom-WordPress-Meta-Boxes   -  person RhymeGuy    schedule 05.07.2014


Ответы (1)


Проблема связана с функцией meta_box_sanitize, расположенной по адресу https://github.com/tammyhart/Reusable-Custom-WordPress-Meta-Boxes/blob/master/metaboxes/meta_box.php, строки 333–355.

я заменил:

default:
return sanitize_text_field( $string );

с участием

default:
return wp_kses_post( $string );

И это работает!

Только что обнаружил, что это также будет работать:

array(
        'label' => __('Availability content'),
        'desc'  => __('Some desc'),
        'id'    => 'availability_text',
        'type'  => 'editor',
        'sanitizer' => array( // array of sanitizers with matching kets to next array
            'type' => 'wp_kses_post'
        ),
), 
person RhymeGuy    schedule 05.07.2014