Добавление редактора WP в пользовательский плагин и сохранение данных

19 мар. 2015 г., 17:39:14
Просмотры: 16.2K
Голосов: 3

Я создаю пользовательский плагин. Одно из полей плагина позволяет пользователю добавлять данные.
Если я добавлю обычный textarea, у пользователя не будет контроля над текстом. Поэтому я хочу добавить редактор.
Я знаю, что WordPress предоставляет функцию wp_editor();.
После некоторого поиска в Google я обнаружил, что реализовать редактор очень просто:

$content = '';
$editor_id = 'mycustomeditor';

wp_editor( $content, $editor_id );

Это показывает красивый редактор. Проблема в том, что контент не сохраняется.
Редактор является частью формы, поэтому я подумал добавить функцию сохранения в обработчик формы вот так:
if( isset( $_POST[ 'mycustomeditor' ] ) ) { update_post_meta( $post_id, 'mycustomeditor', array_map('sanitize_text_field', $_POST[ 'mycustomeditor' ]) ); } Однако WordPress думает иначе. Он создает meta_key в базе данных, но не сохраняет значение.

Надеюсь, кто-то сможет увидеть, что я делаю неправильно!

0
Все ответы на вопрос 4
1

Проблема решена!

Надеюсь, это решение поможет кому-то другому или ответит на их вопрос. Если есть более оптимальный способ, пожалуйста, поделитесь и объясните почему.

$editor_id = 'custom_editor_box';
$uploaded_csv = get_post_meta( $post->ID, 'custom_editor_box', true);
wp_editor( $uploaded_csv, $editor_id );

Для сохранения данных:

function save_wp_editor_fields(){
    global $post;
    update_post_meta($post->ID, 'custom_editor_box', $_POST['custom_editor_box']);
}
add_action( 'save_post', 'save_wp_editor_fields' );

И это всё, что нужно!

20 мар. 2015 г. 11:24:36
Комментарии

Перед сохранением в базу данных следует обработать этот текст с помощью wp_kses_post().

GhostToast GhostToast
19 мар. 2016 г. 01:10:17
0

Вот как это реализовано в одном из моих плагинов:

<?php
wp_nonce_field('nonce_action', 'nonce_field');
$content = get_option('my_content');
wp_editor( $content, 'settings_wpeditor' );
?>

function settings_save_wpeditor(){
// проверяем nonce, обновляем опцию и т.д...

if(isset($_POST['settings_wpeditor']) && isset($_POST['nonce_field']) && wp_verify_nonce($_POST['nonce_field'], 'nonce_action') ){
update_option('my_content', wp_kses_post($_POST['settings_wpeditor']));
}
}

add_action('admin_init', 'settings_save_wpeditor', 10);

Обязательно добавляйте префиксы к вашим переменным и именам опций, а также изучите wp_nonce и wp_verify_nonce в WordPress Codex.

https://codex.wordpress.org/Function_Reference/wp_nonce_field https://codex.wordpress.org/Function_Reference/wp_verify_nonce

26 окт. 2016 г. 21:24:09
0
$editor_id = 'product_summary';

$summary = get_post_meta( $post->ID, 'product_summary', true );
wp_editor( $summary, $editor_id );
if( isset( $_REQUEST['product_summary'] ) ){
        update_post_meta( $post_id, 'product_summary', wp_kses_post( $_POST['product_summary'] ) );
    }

Значение обновляется в wp_editor, но не обновляется в базе данных, пожалуйста, проверьте и решите проблему?

25 мар. 2017 г. 12:50:26
1

Привет, вот решение вашей проблемы. Просто скопируйте и вставьте код, чтобы увидеть результат...

    function dhansikhi_hukamnama_post_page(){
    ?>
    <div class='wrap'>
    <h2>Моя страница супер-администратора</h2>
    <form method='post'>
    <?php
    wp_nonce_field('nates_nonce_action', 'nates_nonce_field');
    $content = get_option('special_content');
    wp_editor( $content, 'special_content' );
    submit_button('Сохранить', 'primary');
    ?>
    </form>
    </div><!-- .wrap -->
    <?php
    }
    add_action( 'admin_menu', 'dhansikhi_hukamnama_page' );
20 авг. 2017 г. 16:44:58
Комментарии

Проблема уже была решена!

Interactive Interactive
21 авг. 2017 г. 14:36:30