VoxelGod
@VoxelGod
Настройка шаблонов WordPress

Почему возникают следующие проблемы с wp_editor()?

Здравствуйте. Пишу плагин, который создает кастомный тип записей и метабокс. В этом метабоксе есть поле ввода, реализованное через wp_editor.
Создание поля.
<div class="meta-row">
            <div class="meta-th">
                <span class="task-row-answer"><strong><?php _e( 'Answer', 'math' ) ?></strong></span>
            </div>
            <br>
            <div class="meta-td">
                <?php

                    $content = get_post_meta( $post->ID, 'task-answer', true );
                    $editor = 'task-answer';
                    $settings = array(
                        'textarea_rows' => 8,
                        'media_buttons' => true,
                        'wpautop' => true
                    );
                    wp_editor( $content, $editor, $settings );

                ?>
            </div>
        </div>


Сохранение значений поля.
if ( isset( $_POST['task-answer'] ) ) {
        update_post_meta( $post_id, 'task-answer', sanitize_text_field( $_POST['task-answer'] ) );
    }


Знаю, что это не безопасно, но мне бы решить для начала следующие проблемы:
1) Картинки не загружаются. Вернее, после нажатия кнопки "Сохранить" в медифайлах около этого wp_editor(), картинка вставляется, а после обновления поста, на котором метабокс висит, картинка исчезает из эдитора и не появляется на самом сайте.
2) Переносы строки не сохраняются. После нажатия "Обновить" пост, все переносы строк слетают.

При этом все нативные эдиторы на сайте работают отлично(в записях, страницах и т.д), а картинки, что вставлял в свой эдитор, сохраняются в библиотеке медиафайлов сайта.

Крайне надеюсь на вашу помощь, ибо в интернете почти нет информации по этим ошибкам.
  • Вопрос задан
  • 294 просмотра
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Потому что sanitize_text_field() не подходит для визуального редактора. Из документации:

Checks for invalid UTF-8, Convert single < characters to entity, strip all tags, remove line breaks, tabs and extra white space, strip octets.

Особенно обрати внимание на:
- strip all tags
- remove line breaks

Смотри в сторону wp_kses() / wp_kses_post(), читай про валидацию:

https://codex.wordpress.org/Data_Validation
https://codex.wordpress.org/Validating_Sanitizing_...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы