Как создать пользовательский пакет установки WordPress?
Я скачал последнюю версию WordPress (3.5) и создал пользовательскую тему. Планирую загружать и устанавливать её для нескольких клиентов. Можно ли настроить параметры по умолчанию, например, чтобы при установке не добавлялись демонстрационные записи, страницы и комментарии? И как установить тему, которая будет активирована по умолчанию?
Я изучил файлы upgrade.php и schema.php - там добавляются демо-материалы, но не могу найти, где выбирается тема по умолчанию. Есть ли статья о том, как редактировать эти файлы, или какие-то советы по этому поводу?

Я уже отвечал на похожий вопрос. Вкратце:
создайте Dropin-плагин в корневой папке
wp-content
с именемinstall.php
внутри
install.php
создайте новую версию заменяемой функцииwp_install_defaults()
удалите все ненужные настройки по умолчанию и настройте по своему усмотрению, например:
update_option('template', 'your-theme');
update_option('stylesheet', 'your-theme');
update_option('current_theme', 'Your Theme');
update_option('my_theme_options', $theme_options_array );
автоматически активируйте некоторые встроенные плагины
соберите всё в один пакет (файлы WordPress и файлы контента: темы, плагины,
install.php
)теперь при каждой установке Dropin будет обработан, и новый сайт запустится с вашими предварительными настройками
Я провёл дополнительные тесты в своей среде разработки и обновил Gist из другого ответа рабочей версией install.php
.
Теперь он содержит функцию wpse_4041_run_activate_plugin($plugin)
(для активации встроенных плагинов) и пустую wp_new_blog_notification()
(ещё одну заменяемую функцию, которая предотвращает отправку WordPress уведомлений по электронной почте об установке сайта).
Для тестирования я использовал тему F8 Lite. Большая часть кода представляет собой адаптацию оригинального скрипта (страницы, записи, комментарии, категории и ссылки по умолчанию). В конце добавлены мои пользовательские команды (изменение темы, настройка параметров темы, активация плагинов, установка параметров плагинов).
Обратите внимание на комментарии в файле.
Не уверен, что это лучший метод, но внутри файла темы functions.php
я разместил этот скрипт, который удалит файл wp-content/install.php
. Он выполнится только один раз (основано на этом ответе от @bainternet) и после установки WordPress.
// Если опция не существует и скрипт установки присутствует, удалите его
if ( wpse_25643_run_once( 'my_custom_install_2013' ) )
{
if( file_exists( WP_CONTENT_DIR.'/install.php' ) )
{
unlink( WP_CONTENT_DIR.'/install.php' );
}
}
/**
* Проверяет существование опции
*
* @param string $key
* @return boolean
**/
function wpse_25643_run_once( $key )
{
$test_case = get_option( 'run_once' );
if ( isset( $test_case[$key] ) && $test_case[$key] )
{
return false;
}
else
{
$test_case[$key] = true;
update_option( 'run_once', $test_case );
return true;
}
}
Связанные вопросы и ответы с другим методом, не использующим install.php
:
Скрипт инициализации для "стандартных" аспектов сайта на WordPress?

Я работаю над сборщиком на PHP с использованием Phing, который устанавливает WordPress вместе с некоторыми настройками по умолчанию (темы, плагины и пользовательский код). Это всё ещё в процессе разработки.
https://github.com/wycks/WordPhing/
В файле build.xml
вы увидите некоторые PHP-опции, которые выполняются во время установки, например:
//удаляем плагин Hello Dolly
delete_plugins(array('hello.php'));
//удаляем стандартный пост "Hello World"
wp_delete_post(1,true);
//удаляем стандартную страницу-пример
wp_delete_post(2,true);
//удаляем стандартный комментарий от Mr.Wordpress
wp_delete_comment( 1, true ) ;
Примечание: Я не тестировал это на последней версии или на Linux.

Настройте свою установку так, как вам нужно, а затем используйте что-то вроде http://infinitewp.com/ для копирования установки на другие сайты. Именно так мы делаем базовую установку для всех наших проектов.
В качестве альтернативы, вместо создания новой установки WordPress для каждого сайта, вы можете сделать резервную копию существующей установки и импортировать её на новый хостинг. Затем скопируйте все файлы через FTP, обновите настройки базы данных в файле wp-config.php для новой базы данных — и всё готово. Это немного сложнее, чем InfiniteWP, но зато вам не придётся платить за плагин.

Что вам нужно сделать, это открыть файл wp-includes/default-constants.php и изменить следующую строку (вы найдёте её в конце документа) на название папки вашей темы:
if ( !defined('WP_DEFAULT_THEME') )
define( 'WP_DEFAULT_THEME', 'twentytwelve' );
С другой стороны, вы всегда можете попробовать Duplicator. Очень удобный плагин, который предоставляет множество дополнительных возможностей.
