Szukaj…


Składnia

  • template –– to nazwa głównego motywu WordPress, nadrzędnego.
  • child-theme –– to pakiet, który przesłania szablon .

Uwagi

Reklamowałem, że użycie motywu podrzędnego jest zawsze dobrą rzeczą, ale zawsze istnieje But ...

W naszym przykładzie nadpisywania szablonów wyobraźmy sobie, że autor motywu dodaje własne ulepszenia do szablonu paska bocznego i będzie nowy w

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

Teraz nasza strona internetowa nie będzie korzystać z nowej specyfikacji role="complementary" ponieważ nasz motyw potomny wciąż zastępuje szablon własnym plikiem na /themes/child-theme/sidebar.php

Naszym obowiązkiem jako twórców stron internetowych jest śledzenie, które szablony nadpisujemy, aw najbliższym przypadku aktualizacji uważnie przyjrzeć się dziennikowi zmian, aby w razie potrzeby zaktualizować pliki motywów potomnych.

2) Cel

Motywy potomne mają być bezpiecznym sposobem na zachowanie dostosowań głównego szablonu bez obawy, że zostaną utracone podczas aktualizacji motywu.

Zasadniczo za każdym razem, gdy chcesz edytować plik w aktywnym szablonie ze swojej witryny, musisz zadać sobie pytanie: „ Co się stanie, kiedy zaktualizuję motyw?

Odpowiedź jest prosta: tracisz je, ponieważ aktualizacja wprowadzi zupełnie nowy folder motywów .

Spójrzmy więc na motyw podrzędny jako folder z plikami, który zastąpi pliki tą samą ścieżką w motywie nadrzędnym. Teraz przynieśmy kilka prawdziwych przykładów:

Definicja i wymagania

Motyw podrzędny jest identyfikowany przez WordPress, gdy w katalogu /wp-content/themes/ znajduje się katalog (na przykład child-theme ) z następującymi plikami:

  • style.css

    Ten plik musi zaczynać się od szablonu komentarza takiego:

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

    Najważniejsze rzeczy do rozważenia tutaj to:

    • Nazwa Template musi być dokładnie nazwą folderu zawierającego motyw nadrzędny (inaczej ślimak motywu nadrzędnego)

    • Nazwij motyw dziecka w taki sposób, aby można go było łatwo zidentyfikować na pulpicie nawigacyjnym (zwykle po prostu dołącz Child do imienia rodzica, np. Example Child )

  • index.php

  • functions.php

3) Nadpisywanie szablonu

Najczęstszym zastosowaniem motywu potomnego jest zastępowanie części szablonu. Na przykład pasek boczny, jeśli mamy motyw z następującym plikiem w

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

Zdecydowanie możemy dodać własny plik w motywie potomnym (ze specyfikacjami z pierwszego przykładu) z następującym plikiem

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

Teraz my-own-awesome-class jest bezpieczna w motywie podrzędnym i nie będzie usuwana przy żadnej aktualizacji motywu, a WordPress zawsze wybierze szablon z motywów podrzędnych, gdy znajdzie go na tej samej ścieżce.

Wymiana zasobów

Nawet jeśli nie jest to najlepsza praktyka, czasami trzeba wymienić zasoby, takie jak pliki CSS lub JS lub biblioteki.

Pamiętaj, że system nadpisywania szablonów WordPress nie działa z niczym innym niż plikami .php , więc kiedy mówimy o zasobach, odnosimy się do zarejestrowanych zasobów

Jednym z przykładów może być zastąpienie biblioteki jQuery wybraną wersją. W naszym pliku functions.php potomnych theme.php musimy dodać funkcję, która usuwa bieżącą wersję jQuery i dodać własną z CDN (pamiętaj, że to tylko przykład).

/**
 * 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow