Как создать пользовательский пакет установки WordPress?

29 дек. 2012 г., 10:44:29
Просмотры: 15.9K
Голосов: 5

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

Я изучил файлы upgrade.php и schema.php - там добавляются демо-материалы, но не могу найти, где выбирается тема по умолчанию. Есть ли статья о том, как редактировать эти файлы, или какие-то советы по этому поводу?

1
Комментарии

Вы можете настроить базовую установку WordPress, а затем экспортировать таблицы базы данных для использования при создании сайтов ваших клиентов.

shea shea
29 дек. 2012 г. 10:56:58
Все ответы на вопрос 4
0

Я уже отвечал на похожий вопрос. Вкратце:

  • создайте 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?

29 дек. 2012 г. 20:26:45
0

Я работаю над сборщиком на 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.

29 дек. 2012 г. 22:37:23
0

Настройте свою установку так, как вам нужно, а затем используйте что-то вроде http://infinitewp.com/ для копирования установки на другие сайты. Именно так мы делаем базовую установку для всех наших проектов.

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

29 дек. 2012 г. 21:17:38
0
-1

Что вам нужно сделать, это открыть файл wp-includes/default-constants.php и изменить следующую строку (вы найдёте её в конце документа) на название папки вашей темы:

if ( !defined('WP_DEFAULT_THEME') )
        define( 'WP_DEFAULT_THEME', 'twentytwelve' );

С другой стороны, вы всегда можете попробовать Duplicator. Очень удобный плагин, который предоставляет множество дополнительных возможностей.

29 дек. 2012 г. 14:31:50