Adăugarea unui editor wp într-un plugin personalizat și salvarea datelor

19 mar. 2015, 17:39:14
Vizualizări: 16.2K
Voturi: 3

Î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!

0
Toate răspunsurile la întrebare 4
1

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!

20 mar. 2015 11:24:36
Comentarii

Ar trebui să sanitizezi asta cu wp_kses_post() înainte de a o salva în baza de date.

GhostToast GhostToast
19 mar. 2016 01:10:17
0

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

26 oct. 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'] ) );
    }

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'] ) );
}
25 mar. 2017 12:50:26
1

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' );
20 aug. 2017 16:44:58
Comentarii

Problema a fost deja rezolvată!

Interactive Interactive
21 aug. 2017 14:36:30