Personalizzare il “Personalizza tema” di WordPress

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:

customizer-wordpress-add-custom-control
tadaaaaaa

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.

customizer-creare-una-sezione
ecco creata la sezione che contiene la mia opzione.

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

Schermata 2016-08-03 alle 11.11.09

 

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

 


Pubblicato

in

da