WordPress
Podstawy motywów podrzędnych
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' );