Mercoledì
30
Agosto 2023
Come creare pannelli Meta Box con funzioni personalizzate nella schermata admin di backend delle pagine e articoli di WordPress?
Se stai sviluppando un tema è giunto il momento di creare le funzioni che ti servono per ogni elemento del tuo sito, anche per i campi personalizzati.
In questa guida utilizzeremo la funzione add_meta_box() del core di WordPress che ti consente di aggiungere pannelli personalizzati al backend di ogni pagina.
Per prima cosa apri il file functions.php del tuo tema o tema child, lì inserirai il codice.
Per creare Meta Box personalizzati useremo la funzione add_meta_box() del core di WordPress, in questo modo:
function custom_meta_box() {
add_meta_box(
"custom", //$id
"Nuovo Metabox", //$title
"meta_box_function", //$callback
"post", //$screen
"side" //$context
);
}
add_action( "add_meta_boxes", "custom_meta_box" );
I parametri che si possono inserire per creare pannelli Meta Box sono:
Abbiamo finora creato un pannello vuoto che non esegue nessuna azione. Vediamo ora come inserire elementi personalizzati e azioni.
Per questo useremo la funzione che abbiamo definito nel parametro $callback, in questo modo:
function meta_box_function() {
?>
<input type="text" name="my-custom-input" id=”my-custom-input” value="">
//resto del codice
<?php
}
In questo codice possiamo inserire caselle di testo, input e pulsanti ma anche un elenco di post, pagine o campi personalizzati.
Questa funzione non necessita di codice aggiuntivo perché viene richiamata dal Meta Box.
Per salvare le impostazioni del nostro Meta Box personalizzato utilizzeremo l’hook ‘save_post’ che si attiva quando premiamo sul tasto “salva” di WordPress.
Di base, i campi di input sono contenuti in una form con method=”post”, quindi non dovrebbero necessitare di ulteriori modifiche.
function ekw_save_meta_box($post_id) {
set_theme_mod(‘mod-name’, $_POST["my-custom-input"]);
//oppure
update_post_meta($post_id, ‘post-meta-name’, $_POST["my-custom-input"]);
}
I valori di questa funzione possono essere richiamati grazie alle funzioni.
get_theme_mod(‘mod-name’, false);
//oppure
get_post_meta($post_id, ‘post-meta-name’);
Scrivi un commento