Aggiungere un editor WordPress a un plugin personalizzato e salvare i dati

19 mar 2015, 17:39:14
Visualizzazioni: 16.2K
Voti: 3

Sto creando un plugin personalizzato. Uno dei campi del plugin permette all'utente di aggiungere dati.
Se aggiungo un textarea l'utente non ha controllo sul testo. Vorrei quindi aggiungere un editor.
So che WordPress offre la funzione wp_editor();.
Dopo alcune ricerche su Google ho scoperto che è molto semplice implementare l'editor:

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

wp_editor( $content, $editor_id );

Questo mostra un bell'editor. Il problema è che il contenuto non viene salvato.
L'editor fa parte di un form, quindi ho pensato di aggiungere la funzione di salvataggio alla funzione di salvataggio del form in questo modo:
if( isset( $_POST[ 'mycustomeditor' ] ) ) {update_post_meta( $post_id, 'mycustomeditor', array_map('sanitize_text_field', $_POST[ 'mycustomeditor' ]) );} Tuttavia WordPress la pensa diversamente. Crea effettivamente il meta_key nel database ma senza alcun valore.

Spero che qualcuno possa capire dove sto sbagliando!

0
Tutte le risposte alla domanda 4
1

Risolto!

Spero che qualcun altro possa usarlo o che risolva il loro problema. Se c'è un modo migliore per favore condividilo e spiega perché.

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

Per salvare i dati:

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' );

E questo è tutto ciò che serve!

20 mar 2015 11:24:36
Commenti

Dovresti sanificare questo con wp_kses_post() prima di salvarlo nel database.

GhostToast GhostToast
19 mar 2016 01:10:17
0

Ecco come l'ho implementato in uno dei miei plugin:

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

function settings_save_wpeditor(){
// verifica il nonce, aggiorna l'opzione ecc...

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);

Assicurati di aggiungere dei prefissi alle tue variabili e ai nomi delle opzioni e consulta wp_nonce_field e wp_verify_nonce dal codex di WordPress.

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

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

Il valore si aggiorna nell'wp_editor ma non aggiorna il valore nel database, per favore controlla e risolvi il problema?

25 mar 2017 12:50:26
1

Ciao, questa è la soluzione al tuo problema. Copia e incolla e vedrai...

    function dhansikhi_hukamnama_post_page(){
    ?>
    <div class='wrap'>
    <h2>La Mia Pagina 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('Salva', 'primary');
    ?>
    </form>
    </div><!-- .wrap -->
    <?php
    }
    add_action( 'admin_menu', 'dhansikhi_hukamnama_page' );
20 ago 2017 16:44:58
Commenti

Il problema era già stato risolto!

Interactive Interactive
21 ago 2017 14:36:30