Se anche tu non ti accontenti di quello che il tema che hai selezionato ti offre di personalizzare, ecco cosa devi fare per poter implementare dei flag o delle scritte.
Nel mio caso, avevo la necessità di poter escludere, nella pagina principale di un blog, le discutibili “Meta”: data, autore, categoria. Sono importanti e utili, ma non le volevo in home. La soluzione più immediata era cancellare fisicamente la stringa:
<div class="entry-meta"> <?php material_posted_on(); ?> </div>
Sarebbe stato semplicissimo e veloce, ma dov’è il bello? Quindi andiamo avanti e studiamo un po’.
Customizer.php
il file customizer.php (o chiamalo come vuoi, non importa) è un file php che contiene tutte le modifiche fatte appunto al “personalizzatore del tema”. L’ho creato in una nuova cartella “/inc” all’interno della cartella del tema e l’ho richiamato dal mio functions.php con questa semplice stringa:
require get_template_directory() . '/inc/customizer.php';
Usiamo un file separato solo per evitare di infognare il functions.php anche di questi script, ma solo per fare più ordine e basta.
Quello che andremo ad inserire nel customizer.php sarà sostanzialmente “rimpolpare” l’array di wordpress $wp_customize aggiungendo i nostri controlli. Per farlo creiamo una nostra funzione e relativa chiamata. A questa funzione passiamo solo la variabile $wp_customize:
function aculine_option_customize_register( $wp_customize ) { // Meta nel Post: si o no $wp_customize->add_setting('aculine_meta'); $wp_customize->add_control( 'aculine_meta', array( 'label' => __( 'Display meta information on posts', 'aculineMaterial' ), 'section' => 'aculine_options', 'settings' => 'aculine_meta', 'type' => 'checkbox', 'std' => '1', 'priority' => 20 ) ); } add_action( 'customize_register', 'aculine_option_customize_register' );
Analizziamo cosa stiamo facendo:
$wp_customize->add_setting('aculine_meta');
aggiunge alla variabile $wp_customize un nuovo settaggio “aculine_meta”, nome di fantasia che mi ricorda cosa dovrà fare tutto questo.
$wp_customize->add_control( 'aculine_meta',...
dice che al settaggio creato sopra (‘aculine_meta’), voglio aggiungere un controllo che lo farò con un array:
label è l’etichetta, in questo caso scritta usando la funzione di traduzione __(‘testo da visuliazzare’,’dove_si_trova_la_traduzione’)
section è la sezione dove deve essere visualizzata (dopo vediamo meglio)
settings è il nome che andrà scritto nel database, nonchè quello che verrà richiamato nel tema
type è il tipo di scelta (immagina un form). Esso può essere di tipo text /
checkbox /
radio /
select /
textarea /
dropdown-pages /
email /
url /
number /
hidden e
date
. (così dice il CODEX )
std nel caso di questo checkbox è il valore che passa se flaggato (1)
priority gestisce la posizione nella sezione
ed eccolo:

Section
il campo section merita di essere capito un po’ di più. E’ chiaramente la sezione, nella pagina del personalizzatore, nel caso visto sopra ho inserito il valore “aculine_section” che è stata creata per “separare” le opzioni customizzate da me da quelle che sono già presenti da WordPress o dal tema in uso. Ovviamente non basta inserire un nome nuovo per creare una sezione, bisogna usare la funzione (sempre di wordpress) $wp_customize->add_section(
che permette di creare quello di cui abbiamo bisogno.
$wp_customize->add_section( 'aculine_options', array( 'title' => __( 'General options', 'aculineMaterial' ), 'priority' => 20, 'capability' => 'edit_theme_options', 'description' => __('Change general options here.', 'aculineMaterial'), ) );
ormai è semplice dai. L’unica cosa che potrebbe suonarti strano è quel “capability” che però, se ci pensi bene, è il richiamo al ruolo del’utente: Se sei abile a modificare il tema, puoi modificarlo. easy.

Logo! Logo! Logo! Logo!
per dare maggiore importanza a questo tutorial, ecco invece come inserire un logo, o un’immagine…
$wp_customize->add_setting('aculine_theme_logo'); // Add a control to upload the logo $wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, 'aculine_theme_logo', array( 'label' => __( 'Site logo', 'aculineMaterial' ), 'section' => 'aculine_options', 'settings' => 'aculine_theme_logo', 'priority' => 10, ) ) );
ma ormai questo non lo spiego neanche… :D
Fatto, e adesso?
Adesso è abbastanza semplice, basta recuperare il valore dell’opzione che hai creato tramite get_theme_mod('opzione_da_recuperare')
e gestirla come meglio credi. A me serviva per nascondere le Meta informazioni di autore, data e categoria, quindi…
<?if (get_theme_mod( 'aculine_meta' ) == 1) : ?> <div class="entry-meta"> <?php material_posted_on(); ?> </div><!-- .entry-meta --> <?php endif; ?>