Adăugarea unui editor wp într-un plugin personalizat și salvarea datelor
În prezent creez un plugin personalizat. Unul dintre câmpurile din plugin permite utilizatorului să adauge date.
Dacă adaug un textarea
, utilizatorul nu are control asupra textului. Așa că aș dori să adaug un editor.
Știu că WordPress oferă funcția wp_editor();
.
După o scurtă căutare pe Google, am descoperit că este foarte ușor să implementez editorul:
$content = '';
$editor_id = 'mycustomeditor';
wp_editor( $content, $editor_id );
Aceasta afișează un editor frumos. Problema este că conținutul nu se salvează.
Editorul face parte dintr-un formular, așa că am crezut că pot adăuga funcția de salvare în funcția de salvare a formularului astfel:
if( isset( $_POST[ 'mycustomeditor' ] ) ) {update_post_meta( $post_id, 'mycustomeditor', array_map('sanitize_text_field', $_POST[ 'mycustomeditor' ]) );}
Însă WordPress vede lucrurile altfel. Acesta creează cheia meta meta_key
în baza de date, dar nu și valoarea.
Sper că cineva poate identifica ce fac greșit!

Am rezolvat!
Sper că altcineva va putea folosi această soluție sau că le va răspunde la problemă. Dacă există o metodă mai bună, vă rog să împărtășiți și să explicați de ce.
$editor_id = 'custom_editor_box';
$uploaded_csv = get_post_meta( $post->ID, 'custom_editor_box', true);
wp_editor( $uploaded_csv, $editor_id );
Pentru a salva datele:
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' );
Și asta este tot ce trebuie făcut!

Așa am implementat în unul dintre plugin-urile mele:
<?php
wp_nonce_field('nonce_action', 'nonce_field');
$content = get_option('my_content');
wp_editor( $content, 'settings_wpeditor' );
?>
function settings_save_wpeditor(){
// verifică nonce, actualizează opțiunea etc...
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);
Asigură-te că adaugi prefixe variabilelor și numelor de opțiuni și verifică wp_nonce și wp_verify_nonce în codex-ul WordPress.
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'] ) );
}
valoarea se actualizează în wp_editor
dar nu se actualizează valoarea în baza de date, te rog verifică și rezolvă problema?
Problema poate fi din cauza variabilei $post_id
care nu este definită corect. Ar trebui să folosești $post->ID
în loc de $post_id
:
if( isset( $_REQUEST['product_summary'] ) ){
update_post_meta( $post->ID, 'product_summary', wp_kses_post( $_POST['product_summary'] ) );
}

Salut, acesta este soluția problemei tale. Doar copiază și lipește codul de mai jos:
function dhansikhi_hukamnama_post_page(){
?>
<div class='wrap'>
<h2>Pagina mea Super Admin</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('Salvează', 'primary');
?>
</form>
</div><!-- .wrap -->
<?php
}
add_action( 'admin_menu', 'dhansikhi_hukamnama_page' );
