Вопрос или проблема
У меня есть плагин, используемый в родительской теме, который использует шорткод. Плагин (шорткод) работает в родительской теме, но когда я переключаюсь на дочернюю тему, он больше не работает. Я добавил только код дочерней темы в функции дочерней темы… это единственный скрипт, который в настоящее время находится в дочерней функции.
function prpin_scripts_child_theme_scripts() {
wp_enqueue_style( 'parent-theme-css', get_template_directory_uri() . '/style.css' );
}
add_action( 'wp_enqueue_scripts', 'prpin_scripts_child_theme_scripts' );
Я думал, что такие функции наследуются от родительской темы. Есть ли какие-нибудь советы?
Для наследования родительской темы вам нужно добавить строки Template в дочерней теме. Пожалуйста, прочитайте это https://codex.wordpress.org/Child_Themes
/*
Theme Name: Twenty Fifteen Child
Theme URI: http://example.com/twenty-fifteen-child/
Description: Дочерняя тема Twenty Fifteen
Author: John Doe
Author URI: http://example.com
Template: twentyfifteen
Version: 1.0.0
License: GNU General Public License v2 или позже
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Tags: light, dark, two-columns, right-sidebar, responsive-layout, accessibility-ready
Text Domain: twenty-fifteen-child
*/
Здесь “Template: twentyfifteen” важно для вызова родительской темы. Пожалуйста, проверьте это в вашей дочерней теме.
Также вы можете использовать этот плагин для генерации дочерней темы. https://wordpress.org/plugins/one-click-child-theme/
Надеюсь, это поможет вам решить вашу проблему.
Если ваш файл style.css дочерней темы содержит фактический CSS-код (как это обычно бывает), вам также нужно будет его подключить. Установка «parent-style» в качестве зависимости обеспечит загрузку таблицы стилей дочерней темы после нее. Включение номера версии дочерней темы гарантирует, что вы сможете сбросить кеш и для дочерней темы. Полный (рекомендуемый) пример выглядит так:
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
function my_theme_enqueue_styles()
{
$parent_style="parent-style"; // Это 'twentyfifteen-style' для темы Twenty Fifteen.
wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ));
}
где parent-style – это тот же $handle, используемый в родительской теме при регистрации ее таблицы стилей. Смотрите здесь
Ответ или решение
Проблема с функцией parent в дочерней теме WordPress
Когда вы создаёте дочернюю тему (child theme) в WordPress, важно помнить, что хотя она наследует большинство функциональных возможностей родительской темы (parent theme), некоторые аспекты могут потребовать дополнительной настройки. Одной из распространённых проблем является то, что шорткоды, использующиеся в родительской теме, могут не работать в дочерней теме. Давайте разберёмся, что может быть причиной этого и как это исправить.
Основные причины неработоспособности шорткода
-
Отсутствие правильного подключения стилей и скриптов: Чтобы дочерняя тема корректно работала с функционалом родительской темы, необходимо правильно подключить её стили и скрипты. Ваша текущая функция
prpin_scripts_child_theme_scripts
, которые вы используете, лишь подключает файл стилей родительской темы, но не включает возможности дочерней темы. -
Неправильное использование
Template
в файлеstyle.css
: Убедитесь, что ваш файлstyle.css
в дочерней теме содержит правильную строку с указанием шаблона. Например:/* Theme Name: Название вашей дочерней темы Template: имя_родительской_темы */
Здесь
имя_родительской_темы
должно соответствовать имени директории вашей родительской темы. -
Отсутствие хуков для подключения функций родительской темы: Некоторые функции могут быть зарегистрированы в хук
init
или других хуках, которые не обязательно будут вызываться автоматически в дочерней теме. Если вы использовали специальные функции или шорткоды в родительской теме, убедитесь, что они активируются и в дочерней.
Решение проблемы с подключением стилей и скриптов
Чтобы гарантировать, что стили и скрипты подключаются правильно, используйте следующий код в вашем файле functions.php
дочерней темы:
add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' );
function my_theme_enqueue_styles()
{
$parent_style = 'parent-style'; // Это 'имя-стиля-родительской-темы'.
wp_enqueue_style( $parent_style, get_template_directory_uri() . '/style.css' );
wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array( $parent_style ));
}
Данный код гарантирует, что стили родительской темы будут загружены перед стилями дочерней темы, а также обеспечит корректное наследование всех необходимых стилей.
Рекомендации по диагностике
-
Проверьте наличие ошибок в консоли браузера: Используйте инструменты разработчика, чтобы найти ошибки JavaScript или проблемы с загрузкой файлов.
-
Деактивируйте плагины: Иногда другие плагины могут конфликтовать с шорткодами. Попробуйте временно отключить их, чтобы увидеть, устранит ли это проблему.
-
Проверьте файлы на наличие синтаксических ошибок: Ошибки в PHP коде могут помешать выполнению функций.
Заключение
Если вы внимательно выполнили все вышеперечисленные шаги, ваш шорткод должен заработать в дочерней теме. Убедитесь, что подключены все необходимые гемприбавления и что используете правильные пути к стилям. В случае возникновения дополнительных вопросов или сложностей, не стесняйтесь обращаться к документации WordPress или к сообществу разработчиков.
Помните, что правильное использование дочерних тем помогает не только сохранить стили и функционал родительской темы, но также предоставляет возможность кастомизировать ваш сайт, не теряя при этом возможности обновления основной темы.