Capita in WordPress che abbiamo fatto un’installazione completa di un sito web, abbiamo comprato il tema e abbiamo preparato il tutto. Siamo pronti per andare online ma in alcuni punti del sito magari vorremmo una maggiore customizzazione del comportamento o delle funzionalità di una sezione o di una pagina. Per raggiungere il nostro scopo il core di WordPress mette a disposizione le funzionalità hook: esse sono delle azioni che possono essere svolte quando WordPress sta eseguendo qualcosa o succede qualcosa all’interno del nostro CMS.
Questo significa che se dobbiamo modificare il comportamento di una funzionalità all’interno di WordPress, non dobbiamo andare a modificare direttamente il codice (rischiando che un aggiornamento del tema porti via le funzionalità introdotte da codice appunto) ma possiamo farlo tramite qesti hooks.
Essi coinvolgono le azioni (Action hooks) oppure il filtraggio di variabili (Filter hooks). Ma come funzionanao esattamente?
Essi per il loro funzionamento sfruttano il nome di un’azione che diventa un hook quando viene abbinato ad essa una funzione da eseguire in PHP. Nell’esempio che segue sfruttiamo l’hook wp_head che inserisce un tag nella head della pagina:
function inserisci_autore() { //funzione che verrà eseguita al caricamento della head della pagina
echo '<meta name="author" content="Renzo Cappelli">\n';
} //fine inserisci_autore()
/* Action Hook */
add_action( 'wp_head', 'inserisci_autore' );//impostiamo l'azione e gli diciamo quando deve essere eseguita la funzione sopra
Il codice precedente va inserito nel file functions.php del tema che vogliamo customizzare. Esso può essere anche trovato dal menu Aspetto => Editor del tema: alla vostra sinistra selezionate Funzioni del tema, quindi functions.php ed editatelo.
Questa è un’ottima comodità di WordPress per personalizzare ad hoc un tema. Di questi hooks ce ne sono veramente tanti da utilizzare per le più svariate funzioni. Qui sotto vi riporto alcuni metodi che uso e che possono tornarvi utili se state sviluppando un sito web in WordPress.
ESEMPI
Hook per aggiungere degli scripts o dei css personalizzati al codice WordPress:
function renzo_enqueue()
{
wp_enqueue_style('stylecustom', get_template_directory_uri() . '/custom.css', array(), '1.0.0');
wp_enqueue_script('custom', get_template_directory_uri() . '/assets/js/custom.js', array('jquery'), '1.0.0');//qui gli stiamo dicendo che deve prima caricare jQuery e poi lo script
}
add_action('wp_enqueue_scripts', 'renzo_enqueue');
Hook per aggiungere una firma automatica alla fine degli articoli
function add_signature( $content ) {
if ( is_single() ) {
$content .= '<div class="firma">Articolo scritto da Renzo Cappelli</div>';
}
return $content;
}
/* Filter Hook*/
add_filter( 'the_content', 'add_signature' );
Hook per escludere una categoria di post dalla homepage del sito web
function themeprefix_exclude_category( $query ) {
if ( $query->is_home() ) {
$query->set( 'cat', '-28' );//add your category number
}
return $query;
}
add_action( 'pre_get_posts', 'themeprefix_exclude_category' );
Hook per aggiungere una frase prima del titolo delle pagine del sito web:
function filter_example( $title ) {
return 'Questo é il mio titolo: ' . $title;
}
add_filter( 'the_title', 'filter_example' );
Hook per aggiungere testo nel footer del sito web:
function action_example( ) {
echo "© Copyright - all rights reserved.";
}
add_action( 'wp_footer', 'action_example' );
Questi sono solo alcuni degli hooks fondamaentali. Nei prossimi articoli parlerò di hooks più complessi di WordPress e tratterò anche di quelli per WooCommerce (plugin per WordPress per realizzare e-commerce).