Я собираюсь написать скрипт для новой установки WordPress 3.0.1 и надстройки всех начальных функций для веб-сайта . Это для компании, которая устанавливает множество подобных веб-сайтов, и им нужна стандартная отправная точка в конфигурации и данных.
- Мне интересно, если кто-то еще сделал это, и если да, могут ли они поделиться своим кодом?
Я предполагаю, что мы будем дорабатывать этот скрипт каждый раз, когда они создают новый сайт, так что жесткое кодирование хорошо, хотя в конце концов (после достаточного опыта) я хотел бы преобразовать в плагин.
Вот основной список задач, которые, я думаю, нам понадобятся (предполагается, что я начал с WordPress 3.0.1, который уже установлен, и мои пользовательские плагины и пользовательские темы скопированы в соответствующие каталоги) :
// Create users for the current site
// Delete Hello Dolly Plugin
// Download, Install and Activate repository plugins
// Activate Custom Plugins (assume the plugins are already there)
// Activate Custom Theme
// Delete Hello Post
// Delete Comment on Hello Post
// Create Pages with Starter Content
// Create Initial Custom Post Types with Starter Content
// Create Multiple Menus
// Create Menu Items for those Menus linking to Pages and wp-login.php
// Create Initial Taxonomy Terms
// Set Desired Permalinks Setting
// Set Static Front Page Setting
Вот и все (хотя я могу определить больше, когда я вхожу в это.)
Опять же, я ищу код, который я могу просто скопировать и изменить, чтобы мне не пришлось самостоятельно разбирать все эти детали (что не сложно, просто утомительно и требует много времени) .
О, еще одна вещь, я должен начать с этого сейчас, так что чем раньше, тем лучше! :-)
источник
Create Menus for Custom Pages
? Вы имеете в виду отдельные области меню на некоторых страницах или что?Ответы:
Как я уже говорил, я собирался немедленно начать работу над этой потребностью, поэтому я добиваюсь прогресса. Учитывая, что я сбиваю их, я решил, что лучше начать публиковать их. Тем не менее, если кто-то еще может / опубликует (некоторые из) части, которые я не сделал, я с радостью позволю вам скопировать все, что я не сделал, и не выбрал ваш ответ как лучший. А пока я начну публиковать код.
Первое, что включает
wp-load.php
:Так как мы создаем автономный файл в корне веб-сайта для запуска инициализации, которая будет использоваться только для «начальной загрузки» сайта (я назвал мой
/my-init.php
), мы начинаем с включения/wp-load.php
загрузки функций WordPress API:Создание пользователей для сайта
Мы будем использовать эту
wp_insert_user()
функцию/wp-includes/registration.php
для создания наших пользователей. Этот файл не загружается по умолчанию, поэтому мы должны загрузить его сами с помощью вызоваrequire_once()
.Мы также будем использовать
get_user_by()
функцию, чтобы сначала увидеть, был ли пользователь уже создан; нет необходимости запускать код дважды, если они этого не сделали. ПРИМЕЧАНИЕ: это шаблон будет следовать; например, наш скрипт не должен дублировать или перезаписывать что-либо, если он вызывается несколько раз, особенно после того, как пользователи добавили или изменили данные для любого из элементов, которые мы планируем инициализировать.Удаление плагина "Hello Dolly"
Для удаления плагина «Hello Dolly» ( извините, Мэтт ) мы будем использовать
delete_plugins()
функцию.delete_plugins()
ожидает массив путей к файлам относительно/wp-content/includes/
каталога. Для плагина Hello Dolly путь к файлу просто,hello.php
так как плагин Hello Dolly не хранится в своем собственном каталоге, но для большинства плагинов он будет в форме{$subdir}\{$filename}.php
; т.е. путь к файлу для Akismet естьakismet/akismet.php
.Тем
delete_plugins()
не менее, он недоступен, пока мы его не включим,/wp-admin/includes/plugin.php
и есть также зависимость,wp-admin/includes/file.php
так что мыrequire_once()
оба из них, прежде чем мы позвонимdelete_plugins()
. Наконец, мы используемWP_PLUGIN_DIR
константу вместе с,file_exists()
чтобы увидеть, существует ли основной файл плагина до того, как мы попытаемся его удалить ( это не имеет значения, если бы мы попытались удалить отсутствующий файл, но на самом деле более элегантно сначала проверить, и вам может понадобиться узнать по какой-то другой причине) :Обратите внимание, что иногда происходит
delete_plugins()
сбой из-за прав доступа к файлу или из-за того, что плагин в настоящее время активирован, или по какой-то другой причине, которую вам сначала нужно решить, но для нашего варианта использования Hello Dolly уходит без боя.Загрузка, установка и активация плагинов репозитория
Мне на самом деле не нужно загружать плагины из репозитория прямо сейчас (я думал, что это было бы неплохо иметь), мы собираемся позволить этому требованию сдвинуться и вернуться к нему позже.
Активация ваших плагинов
Следующим шагом является активация наших собственных пользовательских плагинов. Мы предполагаем, что мы уже загрузили их в каталог плагинов, и все, что нам нужно сделать, это активировать их для WordPress. ( Примечание : этот метод будет работать и для активации плагинов репозитория, он просто не будет загружать и устанавливать их в первую очередь.)
Мы будем использовать
activate_plugin()
функцию, которая, как иdelete_plugins()
требуется,/wp-admin/includes/plugin.php
должна быть включена, но не нужна,/wp-admin/includes/file.php
если вам нужно только автоматизировать активацию, а не удаление.Мы снова проверим существование (не нужно активировать, если не там, а?), И мы также проверим, используя
is_plugin_active()
функцию, что плагин еще не был активирован. Обратите внимание, что на этот раз я использовал несколько переменных ($plugin_filepath
и$plugin_dir
), чтобы избежать дублирования идентификатора плагина много раз.Наш следующий пример активирует плагин,
my-custom-plugin.php
который находится вmy-custom-plugin
подкаталоге:Активация предпочитаемой темы
Для сравнения, активировать тему немного проще, чем удалить или активировать плагин; один вызов функции это все , что требуется:
switch_theme()
.switch_theme()
Функция принимает два (2) параметры: шаблон и таблицу стилей . Ну, по крайней мере, так названы параметры. Возможно, вы более знакомы с терминами « Родительская тема» и « Детская тема» .Предполагая , что вы создали ребенок тему с темой TwentyTen по умолчанию , который поставляется с WordPress является Родитель Темой и вы назвали его «Мой заказ Theme» и поместили его в
/wp-content/themes/my-custom-theme
каталог, вы активируете свою тему с помощью этого вызова:Но что, если это не детская тема? Это просто, просто передайте в качестве обоих параметров идентификатор директории slug / theme (то есть имя подкаталога, в
/wp-content/themes
котором содержится ваша тема) . Предполагая, что вы хотите активировать Тематическую тему от Ian D Stewart, вы называетеswitch_theme()
так:Лично я считаю, что немного нелепо отслеживать обе детали, поэтому я написал функцию,
activate_my_theme()
которая сначала проверяет этуget_current_theme()
функцию, а если нет, то активирует ее. Вам просто нужно сказать ей дочернюю тему (она же «таблица стилей»), и она выяснит для вас родительскую тему (она же «шаблон») , взяв детали изget_theme()
функции.Один ключевой момент, о котором нужно знать ; то
get_theme()
функция ожидает передачи на имя ребенка Тема, НЕ это каталог пробкового / тема идентификатора. (Имя взято из раздела «Имя темы:» в заголовкеstyle.css
файла темы . К счастью,get_current_theme()
функция также возвращает имя.)Изучив заголовок в
style.css
файле темы WordPress по умолчанию Twenty Ten, мы видим, что это имя на самом деле'Twenty Ten'
:Удаление "Hello World" Post
Далее мы хотим удалить сообщение "Hello World" . Возможно, вы видели, что @Rarst показал нам, как использовать
wp_delete_post()
функцию, которая именно то, что нам нужно. Как он объяснил, второй параметр полностью удалит сообщение, а не перемещает его в корзину, а первый параметр -$post->ID
.Конечно, было бы неплохо иметь возможность указать слаг вместо вместо,
$post->ID
и поэтому я решил найти способ сделать это. После некоторой проверки я обнаружил, что WordPress имеет функцию с именем, к сожалению, с именем,get_page_by_path()
которая на самом деле позволяет нам искать любой тип записи по его слагу (он, к сожалению, называется, потому что вы можете пропустить его, когда пытаетесь найти что-то, что работает с типами записей, отличными от'page'
.)Поскольку мы передаем
get_page_by_path()
константу, определенную в WordPress,OBJECT
она вернет нам сообщение в форме объекта сообщения. Для третьего параметра, который мы передали,'post'
чтобы указать, что мы хотим, чтобы он просматривал типы сообщений'post'
. Такget_page_by_path()
как вернет нужный нам объект post или вернет,null
если ни одно сообщение не соответствует слагу, мы можем проверить его существование и одновременно выполнить поиск:Примечание. Мы могли бы запустить код для удаления каждого поста в базе данных, но если бы он был у нас, мы не смогли бы снова запустить этот код, как только мы добавим посты, которые мы хотим сохранить, и это было одним из наших ограничений дизайна.
Следующий...
Я продолжу добавлять к этому, как я понимаю это, пока я не закончу или пока кто-то еще не поможет.
источник
Установить желаемые постоянные ссылки
Новый (потрясающий) тематический проект, с которым я столкнулся на этой неделе и который в основном сфокусирован на функциональности HTML5 / CSS3, имеет собственный скрипт начальной загрузки для создания некоторого стандартного контента, включения параметров постоянной ссылки, установки относительного корня для установки сайта и т. Д. функции вызываются при активации темы. Проект называется Roots, и код можно скачать здесь ; Я не беру кредит на этот код. Тем не менее, вот код для автоматической установки / year / postname в качестве структуры постоянной ссылки (а ниже описаны крючки активации для глобального $ pagenow: http://foolswisdom.com/wp-activate-theme-actio/ .) ,
?>
источник
Удалить Hello Post (с комментарием)
wp_delete_post( 1, true );
Прямо из
wp_delete_post()
документов. Второй параметр полностью уничтожает его, вместо того, чтобы переходить в мусорное ведро.Создать меню
Это создаст новое меню и добавит в него все существующие страницы. Я не уверен, что это совершенно правильно, мне не удалось получить пункты меню, чтобы показать
Page
ярлык среди других вещей. Во всяком случае, мой мозг тает, поэтому я делаю перерыв. Может быть, кто-то сможет обновить это до чего-то более надежного.источник
Если я хорошо понимаю, вы хотите, чтобы это было для первоначальной установки - тогда я боюсь, что ваш подход совершенно неверен.
Гораздо лучший, простой и стандартизированный способ - создать install.php и поместить его в папку wp-content - он автоматически загружается во время установки.
Там вы можете поместить свою собственную функцию wp_install (так как собственная функция wordpress использует if (! Function_exist)), чтобы вы могли легко настроить ваши параметры, активировать плагины, заполнить начальные сообщения, категории, теги, пользователей ...
Второй вариант может быть для ситуации, когда вы хотите очистить уже существующий wp (например, для демо-версии, установленной каждые, например, 30 минут, используя cron) - вы можете a) обрезать базу данных и использовать процедуру, описанную выше, или создать плагин, который выполняет одно и тоже.
источник
install.php
, а во-вторых, есть другие варианты использования, гдеinstall.php
это не применимо. Да,install.php
он используется, но он не заботится о деталях и не является панацеей, которой вы предполагаете.Посмотрите на этот скрипт установки. https://github.com/Pravdomil/WP-Quick-Install
Я беру ваши идеи и некоторый код и создаю то, что вы, вероятно, ищете.
Возможности: настройка базы данных, разных языков, создание пользователей, установка основных настроек сайта, удаление плагинов и шаблонов по умолчанию, загрузка, установка и активация плагинов и тем, аватар по умолчанию, постоянные ссылки, статическая титульная страница.
Не стесняйтесь вносить свой вклад.
источник