Zoeken…


Syntaxis

  • sjabloon –– is de naam van het hoofdthema van WordPress, de ouder.
  • child-theme –– is het pakket dat de sjabloon overschrijft.

Opmerkingen

Ik heb geadverteerd dat het gebruik van een kindthema altijd een goede zaak is, maar er is altijd een Maar ...

Laten we ons in ons voorbeeld voor het overschrijven van een sjabloon voorstellen dat de auteur van een thema zijn eigen verbeteringen toevoegt aan de zijbalksjabloon en er komt een nieuwe bij

/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 zal onze website niet profiteren van de nieuwe role="complementary" specificatie omdat ons onderliggende thema de sjabloon nog steeds overschrijft met zijn eigen bestand op /themes/child-theme/sidebar.php

Het is onze plicht als website-onderhouders om bij te houden welke sjablonen we overschrijven en, in het geval van een update, zorgvuldig naar de changelog te kijken, zodat u de onderliggende themabestanden indien nodig bijwerkt.

2) Het doel

De onderliggende thema's zijn bedoeld als een veilige manier om aanpassingen van de hoofdsjabloon te houden zonder bang te zijn ze te verliezen bij een thema-update.

Kortom, wanneer u een bestand in de actieve sjabloon van uw website wilt bewerken, moet u zich afvragen: " Wat gaat er gebeuren als ik het thema update?"

En het antwoord is simpel: je verliest ze omdat de update een geheel nieuwe themamap brengt .

Laten we een kindthema dus bekijken als een map met bestanden die de bestanden met hetzelfde pad in het bovenliggende thema overschrijven. Laten we nu enkele echte voorbeelden brengen:

Definitie en vereisten

Een child-thema wordt geïdentificeerd door WordPress wanneer er een directory (bijvoorbeeld child-theme ) in /wp-content/themes/ met de volgende bestanden:

  • style.css

    Dit bestand moet beginnen met een opmerkingensjabloon als deze:

     /*
     Theme Name: Example Child
     Author: Me
     Author URI: https://example.com/
     Template: example
     Text Domain: example-child-theme
     Domain Path: /languages/
     */
    

    De belangrijkste dingen om te overwegen zijn:

    • De Template moet exact de mapnaam zijn die het bovenliggende thema bevat (ook bekend als de bovenliggende themaslak)

    • Geef het thema van je kind een naam zodat je het gemakkelijk kunt herkennen in Dashboard (voeg meestal gewoon Child aan de naam van de ouder, zoals Example Child )

  • index.php

  • functions.php

3) Sjabloon overschrijven

Het meest voorkomende gebruik van een kindthema is het vervangen van sjabloononderdelen. Bijvoorbeeld een zijbalk, als we een thema hebben met het volgende bestand op

/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>

We kunnen zeker ons eigen bestand in onderliggende thema (met de specificaties van het eerste voorbeeld) toevoegen met het volgende bestand

/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 is my-own-awesome-class veilig in het thema van het kind en het zal niet worden verwijderd bij elke thema-update en WordPress zal altijd een sjabloon kiezen uit het thema van het kind wanneer het er wel een op hetzelfde pad vindt.

Activa vervanging

Zelfs als dit geen best practice is, moet u soms middelen zoals CSS- of JS-bestanden of bibliotheken vervangen.

Merk op dat het WordPress-sjabloonoverschrijvingssysteem niet werkt met iets anders dan .php bestanden, dus als we het over activa hebben, verwijzen we naar geregistreerde activa

Een voorbeeld zou de vervanging van jQuery-bibliotheek door uw gewenste versie kunnen zijn. In ons onderliggende thema functions.php bestand moeten we een functie toevoegen die de huidige jQuery versie verwijdert en die van ons toevoegen vanaf CDN (onthoud dit is slechts een voorbeeld).

/**
 * 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow