xr:d:DAFZ08eXPuc:7,j:46536872311,t:23020620
Come creare box da associare ad una page/post
Come creare box da associare ad una page/post

Questo tipo di attività, cioè l’aggiunta di box con campi personalizzati nella scheda di inserimento o di modifica di una pagina o di un articolo, è richiesta molto spesso per mostrare un sottotitolo, un banner o qualsiasi altra infomazione che l’autore dell’articolo ha necessità di tenere separata dall’editor principale di WordPress.

Il codice seguente chiamerà una funzione di callback che mostrerà nell’editor un nuovo box contenente i campi:

add_action( 'add_meta_boxes', 'meta_box_CampiPersonalizzati' );

Quella che segue è la funzione di callback (cioè che viene richiamata) meta_box_CampiPersonalizzati(): che utilizza add_meta_box() per per configurare il box.

function meta_box_CampiPersonalizzati(){
    add_meta_box(
        'CampiPersonalizzati-meta-box-id', // ID dell'elemento HTML
        'Campi Personalizzati',            // Titolo visibile
        'CampiPersonalizzati_callback',    // Nome della funzione da chiamare per gestire il box
        'page',                            // Il box sarà visibile in tutte le pagine "page"
        'normal',                          // Dove lo visualizzi in pagina
        'high'                             // Priorità
    );
}

Anche questa funzione che imposta il box, ha una callback, ma questa serve a mostrare i campi nel box:

function CampiPersonalizzati_callback(){?>
    <fieldset><?php
        global $post;
        $campo_personalizzato_1 = '';
        $custom = get_post_custom( $post->ID );
        
        if(isset($custom[ "campo_personalizzato_1" ]) && isset($custom[ "campo_personalizzato_1" ][ 0 ])){
            $campo_personalizzato_1 = $custom[ "campo_personalizzato_1" ][ 0 ];
        }
        ?>
        <div for="_campo_personalizzato_1"><?php _e( 'Campo personalizzato' )?></div><?php
        echo '<input placeholder="Campo personalizzato" type="text" name="campo_personalizzato_1" id="campo_personalizzato_1" value="'.$campo_personalizzato_1.'"/>';
        ?>
    </fieldset>
    <?php
}

L’effetto visibile nell’editor delle pagine di WordPress sarà più o meno questo:

Il valore eventualmente digitato in “Campo personalizzato” dovrà essere salvato da qualche parte nel database, e per questo abbiamo una funzione specifica.

add_action( 'save_post', '_save_post_meta_boxes' );

La callback in questo caso è _save_post_meta_boxes() dove viene ignorato l'autosave e va ad aggiornare il valore del post_meta ‘campo_personalizzato_1’ con quanto digitato manualmente nel campo e passato da WordPress nella $_POST.

function _save_post_meta_boxes(){
    global $post;
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }
    if(isset($post)){
        if ( get_post_status( $post->ID ) === 'auto-draft' ) {
            return;
        }
    }
    if(isset($_POST[ "campo_personalizzato_1" ])){
        update_post_meta( $post->ID, "campo_personalizzato_1", sanitize_text_field( $_POST[ "campo_personalizzato_1" ] ) );
    }

Lascia un commento

Programmatore WordPress
Panoramica privacy

Questo sito Web utilizza i cookie in modo che possiamo fornirti la migliore esperienza utente possibile. Le informazioni sui cookie sono memorizzate nel tuo browser ed eseguono funzioni come riconoscerti quando ritorni sul nostro sito Web e aiutare il nostro team a capire quali sezioni del sito Web ritieni più interessanti e utili.