WordPress
Nozioni di base sui temi del bambino
Ricerca…
Sintassi
- template - è il nome del tema principale di WordPress, il genitore.
- child-theme - è il pacchetto che sovrascrive il modello .
Osservazioni
Ho fatto pubblicità che l'uso di un tema figlio è sempre una buona cosa, ma c'è sempre un Ma ...
Nel nostro esempio di sovrascrittura dei modelli immaginiamo che l'autore di un tema stia aggiungendo i propri miglioramenti al modello della barra laterale e ce ne sarà uno nuovo a
/themes/template/sidebar.php
<?php
/**
* The template for the sidebar containing the main widget area
*
* @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
*/
if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
<aside id="secondary" class="sidebar widget-area" role="complementary">
<?php dynamic_sidebar( 'sidebar-1' ); ?>
</aside><!-- .sidebar .widget-area -->
<?php endif; ?>
Ora il nostro sito Web non trarrà vantaggio dalla nuova specifica role="complementary"
perché il nostro tema figlio sta ancora sovrascrivendo il modello con il proprio file in /themes/child-theme/sidebar.php
È nostro dovere, in qualità di manutentori del sito Web, tenere traccia dei modelli che sovrascriviamo e, nel caso imminente di un aggiornamento, esaminare attentamente il log delle modifiche in modo da aggiornare i file del tema figlio, se necessario.
2) Lo scopo
I temi figli sono pensati per essere un modo sicuro per mantenere le personalizzazioni del modello principale senza temere di perderli su un aggiornamento del tema.
Fondamentalmente, ogni volta che vuoi modificare un file all'interno del template attivo dal tuo sito web devi chiederti " Cosa succederà quando aggiornerò il tema?
E la risposta è semplice: li perdi perché l'aggiornamento porterà una cartella di temi completamente nuova .
Diamo un'occhiata a un tema figlio come una cartella con file che sovrascriverà i file con lo stesso percorso nel tema principale. Ora portiamo alcuni esempi reali:
Definizione e requisiti
Un tema figlio viene identificato da WordPress quando esiste una directory (ad esempio child-theme
) all'interno di /wp-content/themes/
con i seguenti file:
style.css
Questo file deve iniziare con un modello di commento come questo:
/* Theme Name: Example Child Author: Me Author URI: https://example.com/ Template: example Text Domain: example-child-theme Domain Path: /languages/ */
Le cose più importanti da considerare qui sono:
Il nome del
Template
deve essere esattamente il nome della cartella che contiene il tema principale (ovvero lo slug del tema principale)Assegna un nome al tuo tema figlio in modo che tu possa facilmente identificarlo in Dashboard (di solito basta aggiungere
Child
al nome del genitore, comeExample Child
)
index.php
functions.php
3) Sovrascrittura modello
L'uso più comune di un tema figlio consiste nell'override delle parti del modello. Ad esempio, una barra laterale, se abbiamo un tema con il seguente file in
/themes/template/sidebar.php
<?php
/**
* The sidebar containing the main widget area.
*
* @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
*/
if ( ! is_active_sidebar( 'sidebar-1' ) ) {
return;
}?>
<div id="sidebar" class="widget-area">
<?php dynamic_sidebar( 'sidebar-1' ); ?>
</div>
Possiamo sicuramente aggiungere il nostro file in tema figlio (con le specifiche del primo esempio) con il seguente file
/themes/child-theme/sidebar.php
<?php
/**
* The sidebar containing the main widget area.
*/
if ( ! is_active_sidebar( 'sidebar-1' ) ) {
return;
}?>
<div id="my-sidebar" class="my-own-awesome-class widget-area">
<div class="my-wrapper">
<?php dynamic_sidebar( 'sidebar-1' ); ?>
</div>
</div>
Ora my-own-awesome-class
è sicuro nel tema secondario e non verrà rimosso in alcun aggiornamento del tema e WordPress sceglierà sempre un modello da temi figlio quando ne trova uno sullo stesso percorso.
Sostituzione delle risorse
Anche se non è una buona pratica, a volte è necessario sostituire risorse come file CSS o JS o librerie.
Nota che il sistema di sovrascrittura dei template di WordPress non funziona con nient'altro che i file .php
, quindi quando parliamo di risorse ci riferiamo alle risorse registrate
Un esempio potrebbe essere la sostituzione della libreria jQuery con la versione desiderata. Nel file functions.php
tema figlio è necessario aggiungere una funzione che rimuova la versione corrente di jQuery
e aggiunga la nostra da CDN (ricordare è solo un esempio).
/**
* Dequeue the jQuery script and add our own version.
*
* Hooked to the wp_print_scripts action, with a late priority (100),
* so that it is after the script was enqueued.
*/
function my_own_theme_scripts() {
// remove the current version
wp_dequeue_script( 'jquery' );
// register my desired version
wp_register_script( 'jquery', 'https://code.jquery.com/jquery-3.1.0.min.js', false, '3.1.0' );
// load my version, here or somewhere else
wp_enqueue_script( 'jquery' );
}
add_action( 'wp_print_scripts', 'my_own_theme_scripts' );