Добавление редактора WP в пользовательский плагин и сохранение данных
Я создаю пользовательский плагин. Одно из полей плагина позволяет пользователю добавлять данные.
Если я добавлю обычный 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
в базе данных, но не сохраняет значение.
Надеюсь, кто-то сможет увидеть, что я делаю неправильно!

Проблема решена!
Надеюсь, это решение поможет кому-то другому или ответит на их вопрос. Если есть более оптимальный способ, пожалуйста, поделитесь и объясните почему.
$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' );
И это всё, что нужно!

Вот как это реализовано в одном из моих плагинов:
<?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

$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
, но не обновляется в базе данных, пожалуйста, проверьте и решите проблему?

Привет, вот решение вашей проблемы. Просто скопируйте и вставьте код, чтобы увидеть результат...
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' );
