Вопрос или проблема
У меня есть мультисайтовая установка WordPress. Каждый подсайт использует свою дочернюю тему, но есть один файл стилей, который содержит CSS-правила, которые должны использоваться на нескольких из этих подсайтов. Я не хочу иметь несколько идентичных файлов стилей для каждого подсайта, потому что, когда я вношу изменения в него, мне придется вносить эти изменения в каждую копию файла стилей или копировать и вставлять его в каждый подсайт.
Как я могу определить каждому подсайту использовать только один экземпляр этого файла стилей? Возможно, я могу создать файл style.css для каждого подсайта и внутри него написать что-то вроде перенаправления на основной style.css (тот, который действительно содержит правила)?
Во-первых, вам, очевидно, нужно использовать одну и ту же родительскую тему для всех сайтов. Затем вы настраиваете каждый подсайт с дочерней темой для этой родительской темы.
Чтобы использовать один и тот же файл стилей на нескольких сайтах, добавьте следующий код в файл functions.php
каждого подсайта:
function import_shared_style_sheet() {
wp_enqueue_style( 'shared-style-sheet', content_url( '/themes/SOURCE-THEME/style.css') );
}
add_action( 'wp_enqueue_scripts', 'import_shared_style_sheet' );
SOURCE-THEME
нужно заменить на имя папки темы, из которой вы делите основной файл styles.css
.
Имейте в виду, что файл styles.css
дочерней темы каждого подсайта все равно будет загружаться. Так что убедитесь, что вы удалили все CSS ниже данных темы в верхней части файла. Например, вы должны иметь что-то вроде следующего (это будет отличаться в зависимости от использованной дочерней темы). В этом примере родительская тема (для всех сайтов) — twentytwenty, так что общий файл styles.css
находится в дочерней теме twentytwenty.
/*
Имя темы: Тема подсайта (дочерняя тема)
URI темы:
Шаблон: twentytwenty
Автор:
Описание: Дочерняя тема Twenty Twenty. Делится style.css дочерней темы XXX.
Версия: 1.01
Обновлено: 2021-02-01 01:14:52
*/
Обратите внимание, что если у вас есть некоторые стили, которые нужно применить только к конкретному подсайту, вы все равно можете добавить эти стили в файл styles.css
дочерней темы этого подсайта.
Используйте функцию wp_enqueue_style и укажите путь к мастер CSS файлу в источнике src="https://wordpress.stackexchange.com/questions/365476/full-path-goes-here"
. Смотрите документацию WP по функции здесь: https://developer.wordpress.org/reference/functions/wp_enqueue_style/
Если вы поместите универсальные стили в файл стилей родительской темы, они будут применяться независимо от дочерней темы. Они просто должны быть более специфичными, чем стили дочерних тем.
У вас не будет нескольких идентичных файлов стилей; MultiSite хранит темы всех сайтов в одном центральном месте, и обычно при настройке родительской и дочерней темы вы включаете как родительский CSS, так и CSS дочерней темы.
Ответ или решение
Как использовать один файл стилей для нескольких подсайтов в мультисайтовой сети WordPress
Ваша задача — оптимизировать использование CSS в мультисайтовой установке WordPress, чтобы избежать дублирования кода и упростить процесс его обновления. Данная инструкция предлагает эффективное решение этой проблемы.
1. Основные требования
Убедитесь, что:
- Все подсайты используют один и тот же родительский шаблон.
- Настроены дочерние темы для каждого подсайта.
2. Подключение общего файла стилей
Для того чтобы подключить общий файл стилей, выполните следующие шаги:
-
Создайте общий файл стилей.
Сначала создайте файл
style.css
в папке родительской темы, который будет содержать все общие CSS-правила для подсайтов. -
Отредактируйте файл
functions.php
каждой дочерней темы.В каждой дочерней теме (каждого подсайта) откройте файл
functions.php
и добавьте следующий код:function import_shared_style_sheet() { wp_enqueue_style( 'shared-style-sheet', get_template_directory_uri() . '/style.css' ); } add_action( 'wp_enqueue_scripts', 'import_shared_style_sheet' );
Обратите внимание на то, что
get_template_directory_uri()
будет возвращать URL папки родительской темы, что позволит подключитьstyle.css
оттуда. -
Ограничьте содержимое файла стилей дочерней темы.
Если в дочерней теме было добавлено содержимое в файл
style.css
, убедитесь, что вы оставили только информацию о теме в верхней части файла. Например:/* Theme Name: Дочерняя тема (Sub-site Theme) Template: родительская-тема Version: 1.0 */
Убедитесь, что ваше основное CSS находится в файле родительской темы.
3. Персонализация стилей для отдельных подсайтов
Если вам необходимо добавить уникальные стили для конкретного подсайта, вы можете сделать это, добавив дополнительные CSS-правила в файл стилей дочерней темы. Это позволяет сохранять общие стили в одном месте, сохраняя возможность кастомизации.
4. Альтернативный подход
Если вы хотите, чтобы общий файл стилей находился в другом месте (например, в папке плагина или на стороннем сервере), модифицируйте функцию подключения следующим образом:
function import_shared_style_sheet() {
wp_enqueue_style( 'shared-style-sheet', 'URL_вашего_style.css' );
}
add_action( 'wp_enqueue_scripts', 'import_shared_style_sheet' );
Подставьте нужный URL в параметр.
Заключение
Следуя предложенной инструкции, вы сможете эффективно управлять стилями на нескольких подсайтах вашей сети WordPress, минимизируя риск возникновения дублирования кода и упрощая процесс ведения и обновления CSS. Это не только ускорит процесс работы, но и сделает его более организованным и безопасным.