Содержание статьи
Сразу: забудьте про ручную настройку темы при клонировании сайта. Это не только неудобно, но и опасно – высок риск потерять детали: шрифты, отступы, цвета, кастомные виджеты, позиционирование. Решение? Используйте прямое копирование настроек интерфейса из одного проекта в другой.
Механизм работает через сериализованные массивы, где хранятся все значения, установленные через визуальный редактор WordPress. Поддерживаются темы, использующие WP_Customize_Manager
, включая Astra, OceanWP, GeneratePress и большинство современных оболочек.
Процесс прост: на одном сайте выгрузка, на другом – загрузка. Все через файл .dat
. Внутри – JSON с привязкой к идентификаторам настроек. Ошибка – и сайт поедет. Именно поэтому важно внимательно сверять версии темы и активные модули до запуска переноса.
Вот базовый код, если хотите реализовать ту же функцию вручную:
$mods = get_theme_mods();
file_put_contents(\'backup.txt\', serialize($mods));
На новом сайте:
$mods = unserialize(file_get_contents(\'backup.txt\'));
foreach ($mods as $key => $value) {
set_theme_mod($key, $value);
}
Поддержка шорткодов, кастомных CSS и пользовательских секций – частичная. То, что находится вне области действия customize_register
, придется переносить вручную или через другие решения.
Важно: предварительно очистите кэш и отключите CDN, иначе вы можете не увидеть изменений даже после успешного копирования данных.
Настройки привязаны к конкретной теме. Измените оболочку – получите пустой экран. Некоторые шаблоны добавляют уникальные идентификаторы, которые при несоответствии версий приводят к конфликту. Разбираться с этим вручную – то еще удовольствие.
Есть подводный камень: поля с типом image
и file
сохраняют абсолютные ссылки. Если домены отличаются, путь будет битым. В таких случаях используется фильтрация по wp_get_upload_dir()
и ручная замена домена в теле JSON.
Внимание! Перед импортом убедитесь, что тема и все дочерние элементы активны. Без этого данные игнорируются или затираются.
Настройка – это не просто фон и логотип. Это визуальная логика, точные отступы, семантическая структура. Одна пропущенная переменная – и весь вид летит к чертям.
Если вам нужен один в один результат, копируйте настройки строго с учетом совместимости, без попыток \»обновить на ходу\». Никаких импровизаций. Только точность.
Как создать файл экспорта настроек Customizer в текущей теме
Открой functions.php
активной темы. Вставь следующий фрагмент:
add_action( \'admin_menu\', function() {
add_submenu_page(
\'themes.php\',
\'Экспорт настроек\',
\'Экспорт\',
\'manage_options\',
\'customizer-export\',
function() {
echo \'<div class=\"wrap\"><h1>Экспорт настроек</h1>\';
echo \'<form method=\"post\">\';
submit_button( \'Создать файл\' );
echo \'</form></div>\';
if ( $_SERVER[\'REQUEST_METHOD\'] === \'POST\' ) {
$mods = get_theme_mods();
header( \'Content-Type: application/json\' );
header( \'Content-Disposition: attachment; filename=\"theme-settings.json\"\' );
echo json_encode( $mods );
exit;
}
}
);
});
Этот код добавляет раздел Экспорт в меню Внешний вид. После нажатия кнопки «Создать файл» произойдет скачивание текущих параметров в формате JSON.
Файл содержит все пользовательские изменения, внесенные через пользовательский интерфейс темы: цвета, шрифты, изображения, виджеты, лейауты.
Важно: JSON сохраняется напрямую из
get_theme_mods()
, без фильтрации. Удаляй лишнее вручную перед передачей.
- Файл не пригоден для прямой загрузки без валидации.
- Некоторые настройки могут быть сериализованными массивами или объектами.
- Содержимое зависит от текущей темы. Установишь другую – файл будет бесполезен.
Хочешь переносить между разными сайтами? Бесполезно, если ID вложений и структура кастомных полей не совпадает.
Помните: скачанный файл не содержит медиафайлы, только ссылки и ID. Переносить изображения нужно вручную или скриптами.
Не уверен в стабильности? Сделай дамп базы через phpMyAdmin, а не полагайся на этот JSON.
И наконец. Что ты будешь с ним делать? Обратно вставить? Тогда понадобятся другие хуки. Но это уже другая история.
Какие настройки WordPress сохраняются при экспорте Customizer
Сохраняются только те параметры, что связаны с функцией get_theme_mod()
. Ни один кастомный мета-блок, пользовательская таксономия или произвольно добавленные данные через update_option()
– не попадут в выгрузку. Чисто и жестко: только то, что прописано в теме как модификации внешнего вида.
Цвета заголовков? Да. Шрифты? Да. Логотип сайта, фавикон, фон, позиционирование меню – да. Но не более.
Вот пример кода, который точно попадет в экспорт:
$wp_customize->add_setting( \'header_background_color\', array(
\'default\' => \'#ffffff\',
\'type\' => \'theme_mod\'
) );
А вот такой блок проигнорируется при переносе:
update_option( \'custom_admin_email\', \'admin@example.com\' );
Внимание! Все, что сохраняется через
option
, в выгрузке отсутствует. Эти данные хранятся в другой таблице и не подхватываются при восстановлении интерфейса.
Нельзя опереться на автоподстановку: если разработчик темы не использует theme_mod
– настройка не уедет. Проверяйте структуру темы. Если это кастомная разработка, смотрите исходный код.
Типовые данные, включаемые в экспорт: логотип (custom_logo
), слоган (blogdescription
), изображение фона (background_image
), фиксированные цвета кнопок, шрифты заголовков, ссылки соцсетей (если добавлены через theme_mod
), положение элементов, скрытие заголовка, навигационные пункты (если связаны с темой).
Не попадут в сохранение: виджеты, меню, кастомные поля, повторяющиеся поля ACF, любые данные из сторонних расширений, если они не интегрированы в тему через get_theme_mod()
.
Важно помнить: экспорт касается только визуальных параметров оформления. Контент, структура, логика – вне зоны действия.
Хочешь сохранить точную копию внешнего вида? Проверь, какие именно параметры подтягиваются из базы через get_theme_mod()
. Всё остальное придется восстанавливать вручную или отдельными средствами.
Список ключевых модификаций, чаще всего встречающихся в выгрузках:
background_color
header_textcolor
custom_logo
blogname
,blogdescription
link_color
(если добавлен разработчиком)
Вся сила – в структуре темы. Выгружается только то, что встроено правильно. Остальное теряется. Бесповоротно.
Как импортировать файл настроек Customizer на другом сайте
Зайдите в административную панель сайта, куда необходимо перенести внешний вид. Перейдите в раздел «Внешний вид» → «Настроить». В нижней части панели слева выберите пункт «Импорт/Экспорт».
В открывшемся окне найдите кнопку «Выбрать файл». Укажите файл с расширением .dat
, заранее полученный с другого ресурса. Не перепутайте: это не .json
и не .xml
. Только бинарный формат!
Далее активируйте опцию «Импортировать медиафайлы», если планируется полная реконструкция визуального стиля. Эта галочка подтянет изображения, иконки, логотипы. Не включайте, если структура медиа отличается – получите хаос.
Важно: резервная копия перед процедурой – не рекомендация, а обязанность. Нельзя предугадать, как поведёт себя текущая тема при подмене параметров.
Нажмите «Загрузить и импортировать». Браузер может зависнуть. Терпите. Время выполнения зависит от объёма данных и сервера. Перезагрузка в процессе – риск полной потери кастомизации.
По завершении обновите сайт. Оцените: цвета, отступы, шрифты, поведение элементов. Что-то поехало? Проверьте совместимость темы. Некоторые шаблоны некорректно воспринимают сторонние конфигурации.
Внимание! Если файл не открывается или отображается ошибка – проверьте версию WordPress и шаблона. Старые релизы не дружат с новыми схемами настроек.
Для ручной проверки корректности можно распаковать .dat
через PHP:
$data = file_get_contents(\'settings.dat\');
$decoded = unserialize($data);
print_r($decoded);
Если массив пуст – файл повреждён или зашифрован нестандартно. Не тратьте время, запросите новый экспорт.
Завершающий штрих – очистить кэш. Особенно если используете плагин оптимизации или CDN. Иначе увидите старую версию страницы.
Настройки перенесены? Отлично. Но это ещё не гарантия стабильности. Проверьте мобильную адаптацию, виджеты и кастомные хуки. Ручная корректировка может понадобиться.
Что делать, если импортированный файл не применяет изменения
Сначала убедитесь: файл завершён, не обрезан, расширение правильное – .dat
, а не случайно .txt
. Откройте его в текстовом редакторе и проверьте наличие массива theme_mods_
или customize_changeset
. Пусто? Тогда экспорт был некорректным – повторите выгрузку с активной темой.
Если содержимое на месте, но интерфейс молчит – проверьте права доступа на сервере. Каталог wp-content/uploads
должен иметь права не менее 755
. Файл настроек, если используется временно, может удаляться автоматически из-за ограничений хостинга.
Внимание! Настройки применяются только к той теме, в рамках которой они были выгружены. При несовпадении слетает всё. Проверьте имя темы: даже символ отличается – настройки игнорируются.
Активируйте нужную тему вручную через wp admin → Внешний вид → Темы
, затем повторите загрузку. Не помогает? Тогда отключите все дополнения. Некоторые из них перезаписывают настройки внешнего вида на лету.
Проверьте таблицу wp_options
. Поле theme_mods_{slug}
должно содержать массив настроек. Если оно не обновляется – вмешивается кэш. Очистите его: WP Super Cache
, W3 Total Cache
или встроенный объектный.
Важно помнить: изменения не видны, если кастомайзер открыт до импорта. Закройте вкладку. Перезагрузите админку. Только потом проверяйте визуально.
Поддержка multisite? Тогда файл может быть загружен не в ту сеть. Перейдите в нужный сайт через панель администратора сети, выполните импорт ещё раз.
Если всё выше перепробовано, используйте CLI: wp option update theme_mods_{slug} \"$(cat settings.dat)\"
. Это обходит UI и записывает напрямую в базу. Но предварительно сделайте резервную копию.
Ощущение, что всё верно, а ничего не работает – ложное. Проверьте каждый шаг. Там, где один байт не совпадает, WordPress отказывается принимать файл. Без объяснений. Без намёков.