WordPress
Barntema Grunder
Sök…
Syntax
- mall –– är namnet på det huvudsakliga WordPress-temat, föräldern.
- child-tema –– är det paket som åsidosätter mallen .
Anmärkningar
Jag har annonserat att användningen av ett barntema alltid är bra men det finns alltid en Men ...
I vårt exempel på mallöverskrift kan vi föreställa oss att författaren till ett tema lägger till sina egna förbättringar i sidofältmallen och att det kommer att finnas en ny på
/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; ?>
Nu kommer vår webbplats inte att dra nytta av den nya role="complementary"
spec eftersom vårt barntema fortfarande skriver över mallen med sin egen fil på /themes/child-theme/sidebar.php
Det är vår plikt som webbplatsunderhållare att hålla koll på vilka mallar vi skriver över och i det överhängande fallet med en uppdatering, titta noggrant på ändringsloggen så att du vid behov uppdaterar tematecknen för barn.
2) Syftet
Barntema är tänkta att vara ett säkert sätt att behålla anpassningar av huvudmallen utan att vara rädda för att förlora dem på en temainformation.
I princip, när du vill redigera en fil i den aktiva mallen från din webbplats måste du fråga dig själv " Vad kommer att hända när jag kommer att uppdatera temat?
Och svaret är enkelt: Du förlorar dem eftersom uppdateringen kommer att få en helt ny temamapp .
Så låt oss titta på ett barntema som en mapp med filer som kommer att skriva över filerna med samma sökväg i överordnade temat. Låt oss nu ta med några verkliga exempel:
Definition och krav
Ett barn-tema identifieras av WordPress när det finns en katalog (till exempel child-theme
) inuti /wp-content/themes/
med följande filer:
style.css
Den här filen måste börja med en kommentarmall som denna:
/* Theme Name: Example Child Author: Me Author URI: https://example.com/ Template: example Text Domain: example-child-theme Domain Path: /languages/ */
De viktigaste sakerna att tänka på här är:
Template
måste vara exakt det mappnamn som innehåller överordnade temat (alias föräldertema-slug)Namnge ditt barntema på ett sådant sätt att du enkelt kan identifiera det i instrumentpanelen (vanligtvis lägger du bara
Child
till förälderns namn, somExample Child
)
index.php
functions.php
3) Mallöverskridande
Den vanligaste användningen av ett barntema är att åsidosätta malldelar. Till exempel en sidofält om vi har ett tema med följande fil på
/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>
Vi kan definitivt lägga till vår egen fil i underordnatema (med specifikationerna från det första exemplet) med följande fil
/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>
Nu är my-own-awesome-class
säker i barntema och det kommer inte att tas bort vid någon temauppdatering och WordPress kommer alltid att välja en mall från underordnade teman när den hittar en på samma väg.
Utbyte av tillgångar
Även om det inte är en bra praxis måste du ibland byta ut tillgångar som CSS- eller JS-filer eller bibliotek.
Observera att WordPress-mallens överskrivningssystem inte fungerar med något annat än .php
filer, så när vi talar om tillgångar hänvisar vi till registrerade tillgångar
Ett exempel kan vara att du ersätter jQuery-biblioteket med önskad version. I vår child-tema functions.php
fil måste vi lägga till en funktion som tar bort den aktuella jQuery
versionen och lägga till vår egen från CDN (kom ihåg är bara ett exempel).
/**
* 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' );