WordPress
Основы детской темы
Поиск…
Синтаксис
- template - это название основной темы WordPress, родительской.
- child-theme - это пакет, который переопределяет шаблон .
замечания
Я рекламирую, что использование детской темы всегда хорошо, но всегда есть но ...
В нашем примере перезаписи шаблонов давайте представим, что автор темы добавляет свои собственные улучшения к шаблону боковой панели, и там будет новый
/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; ?>
Теперь наш веб-сайт не будет использовать новую role="complementary"
спецификация, потому что наша /themes/child-theme/sidebar.php
тема по-прежнему перезаписывает шаблон со своим собственным файлом в /themes/child-theme/sidebar.php
Наша обязанность как хранителей веб-сайта отслеживать, какие шаблоны мы перезаписываем, и в неотложном случае обновления внимательно посмотрите на журнал изменений, чтобы при необходимости обновить файлы дочерних тем.
2) Цель
Детские темы должны быть безопасным способом сохранить настройки основного шаблона, не опасаясь потерять их при обновлении темы.
В принципе, всякий раз, когда вы хотите редактировать файл внутри активного шаблона с вашего сайта, вы должны спросить себя: « Что произойдет, когда я обновлю тему?
И ответ прост: вы теряете их, потому что обновление принесет совершенно новую папку темы .
Итак, давайте рассмотрим дочернюю тему как папку с файлами, которые будут перезаписывать файлы одним и тем же путем в родительской теме. Теперь приведем примеры:
Определение и требования
Детская тема определяется WordPress, когда в /wp-content/themes/
есть каталог (например, child-theme
) со следующими файлами:
style.css
Этот файл должен начинаться с шаблона комментария следующим образом:
/* Theme Name: Example Child Author: Me Author URI: https://example.com/ Template: example Text Domain: example-child-theme Domain Path: /languages/ */
Самые важные вещи, которые следует учитывать здесь:
Имя
Template
должно быть точно именем папки, которое содержит родительскую тему (например, родительскую тему)Назовите свою дочернюю тему таким образом, чтобы ее можно было легко идентифицировать в Dashboard (обычно просто добавьте
Child
к имени родителя, напримерExample Child
)
index.php
functions.php
3) Перезапись шаблона
Наиболее распространенное использование дочерней темы - переопределение частей шаблона. Например, боковая панель, если у нас есть тема со следующим файлом на
/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>
Мы можем определенно добавить собственный файл в дочернюю тему (со спецификациями из первого примера) со следующим файлом
/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>
Теперь my-own-awesome-class
безопасен в дочерней теме, и он не будет удален при любом обновлении темы, и WordPress всегда будет выбирать шаблон из дочерних тем, когда он найдет один на одном пути.
Замена активов
Даже если это не лучшая практика, иногда вам нужно заменить такие активы, как CSS или JS-файлы или библиотеки.
Обратите внимание, что система перезаписи шаблонов WordPress не работает ни с чем .php
файлами, поэтому, когда мы говорим об активах, мы ссылаемся на зарегистрированные активы
Одним из примеров может быть замена библиотеки jQuery на нужную вам версию. В нашей детской теме functions.php
файл нам нужно добавить функцию, которая удаляет текущую версию jQuery
и добавляет ее из CDN (помните, что это всего лишь пример).
/**
* 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' );