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, som Example 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' );


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow