Использование композитора с WordPress

WordPress становится модернизированным. Недавнее включение JavaScript основе Гутенберг а также часть ядра добавил современные возможности для строительства сайтов на переднем конце, и предстоящий удар минимальной версии PHP, от текущего 5,2,4 до 5,6 в апреле 2019 года и 7,0 в декабре 2019 года, будет сделать доступныммножество множество новых функций для создания мощных сайтов.

В моей предыдущей статье о Smashing, в котором я определил функции PHP вновь доступны для WordPress, я утверждал, что настало время, чтобы компоненты основной блок для создания функциональных возможностей в WordPress. С одной стороны, Гутенберг уже делает блок (который является компонентом высокого уровня) основным блоком для создания веб-страницы на переднем конце; с другой стороны, натыкаясь на необходимую минимальную версию PHP, бэкэнд WordPress имеет доступ ко всей коллекции объектоориентированных функций программирования PHP (таких как классы и объекты, интерфейсы, черты и пространства имен), которые являются частью набор инструментов для мышления/кода в компонентах.

Итак, почему компоненты? Что в них такого замечательного? “Компонент” не является реализацией (например, компонент react), а концепцией: он представляет собой акт инкапсуляции свойств внутри объектов и группировки объектов в пакет, который решает конкретную проблему. Компоненты могут быть реализованы как для переднего энда (например, для библиотек JavaScript, таких как React или Vue, или для библиотек компонентов CSS, таких как Bootstrap), так и для бэкэнда.

Мы можем использовать уже созданные компоненты и настроить их для наших проектов, поэтому мы будем повышать нашу производительность, не изобретать колесо каждый раз,и из-за их сосредоточиться на решении конкретного вопроса и естественно отделены от приложения, они могут быть проверены и ошибка исправить очень легко, что делает приложение более обслуживаемым в долгосрочной перспективе.

Концепция компонентов может быть использована для различных целей, поэтому мы должны убедиться, что мы говорим об одном и том же случае использования. В предыдущей статье я описал, как компонентизировать веб-сайт; цель состояла в том, чтобы превратить веб-страницу в ряд компонентов, обернув друг друга от одного верхнего компонента вплоть до самых основных компонентов (для визуализации макета). В этом случае случай использования компонента предназначен для рендеринга , аналогичного компоненту React, но закодированному в бэкэнде. В этой статье, однако, пример использования компонентов импортирует и управляет функциональностью в приложении.

Введение в композитора и пакагиста

Для импорта и управления собственными и сторонними компонентами в наших проектах PHP, мы можем положиться на менеджера PHP-зависимости Composer, который по умолчанию извлекает пакеты из репозитория пакетов PHP Packagist (где пакет по существу каталог, содержащий код PHP). Благодаря простоте использования и исключительным функциям, Composer и Packagist стали ключевыми инструментами для создания основ приложений на основе PHP.

Композитор позволяет декларировать библиотеки, от которых зависит проект, и будет управлять (устанавливать/обновлять) их. Он работает рекурсивно:библиотеки зависит от зависимостей будут импортированы в проект и управляется тоже. Композитор имеет механизм разрешения конфликтов: Если две разные библиотеки зависят от другой версии одной и той же библиотеки, Composer попытается найти версию, совместимую с обоими требованиями, или вызвать ошибку, если это невозможно.

Для использования Composer проекту просто нужен файл composer.json в корневой папке. Этот файл определяет зависимости проекта (каждый для определенной версии ограничения на основе семантической версии)и может содержать другие метаданные, а также. Например, следующий файл composer.json делает проект требует nesbot/carbon , библиотека, предоставляющая расширение для DateTime, для последнего патча своей версии 2.12:

{
    "require": {
        "nesbot/carbon": "2.12.*"
    }
}

Мы можем отредатировать этот файл вручную, или он может быть создан/обновлен с помощью команд. В приведенном выше случае мы просто открываем окно терминала, направляемся к корневому каталогу проекта и ввешаем:

composer require "nesbot/carbon"

Эта команда будет искать требуемую библиотеку в Packagist (которая находится здесь)и добавить свою последнюю версию в зависимости от существующего файла composer.json. (Если этот файл еще не существует, он сначала создаст его.) Затем мы можем импортировать зависимости в проект, которые по умолчанию добавляются под vendor/ папку, просто выполнив:

composer install

Всякий раз, когда зависимость обновляется, например, nesbot/carbon выпущенная версия 2.12.1 и установленная в настоящее время одна 2.12.0, тогда Composer позаботится об импорте соответствующей библиотеки путем выполнения:

composer update

Если мы используем Git, мы должны указать vendor/ только папку в файле .gitignore, чтобы не фиксировать зависимости проекта под управлением версии, что делает его ветер, чтобы сохранить код нашего проекта полностью отделен от внешних библиотек.

Композитор предлагает множество дополнительных функций, которые правильно описаны в документации. Тем не менее, уже в самом базовом использовании, Composer дает разработчикам неограниченные полномочия для управления зависимостями проекта.

Введение в WPackagist

Как и Packagist, WPackagist является репозиторием пакетов PHP. Тем не менее, он поставляется с одной особенностью: Он содержит все темы и плагины, размещенные на WordPress плагин и тематические каталоги, что делает их доступными для управления через композитора.

Чтобы использовать WPackagist, наш файл composer.json должен содержать следующую информацию:

{
    "repositories":[
        {
            "type":"composer",
            "url":"https://wpackagist.org"
        }
    ]
}

После этого, любая тема и plugin можно импортировать к проекту путем использование "wpackagist-theme" и соответственно как имя "wpackagist-plugin" поставщика, и пуля темы или plugin под каталогом WordPress (such as "akismet" in https://wordpress.org/plugins/akismet/)как пакет Имя. Потому что темы не имеют версию хобота, то ограничение версии темы порекомендовано быть «я»:

{
    "require": {
        "wpackagist-plugin/akismet":"^4.1",
        "wpackagist-plugin/bbpress":">=2.5.12",
        "wpackagist-theme/twentynineteen":"*"
    }
}

Пакеты, доступные в WPackagist были даны типа “Wordpress-плагин” или “wordpress-тема”. Как следствие, после composer update запуска, вместо установки соответствующих тем и плагинов под папку по умолчанию, они будут установлены там, vendor/ где WordPress ожидает их: под папки wp-content/themes/ и wp-content/plugins/ соответственно.

Возможности и ограничения использования WordPress и композитор вместе

До сих пор, так хорошо: Композитор делает его ветер, чтобы управлять зависимостями проекта PHP. Тем не менее, WordPress ‘ядро не принял его в качестве инструмента управления зависимостью выбора, в первую очередь потому, что WordPress является наследием приложение, которое никогда не было разработанодля использования с композитором , и сообщество не может согласиться, если WordPress должно быть считается сайт или зависимость сайта, и интеграция этих подходов требует хаки.

В этой озабоченности, WordPress превзошел новые рамки, которые могли бы включить композитора как часть их архитектуры. Например, в 2013 году Laravel подвергся серьезному переписыванию, чтобы создать Composer в качестве менеджера пакетов на уровне приложений. Как следствие, WordPress ‘ядро по-прежнему не включает в себя composer.json файл, необходимый для управления WordPress как композитор зависимости.

Зная, что WordPress не может быть родным управлением через Композитор, давайте рассмотрим пути такой поддержки могут быть добавлены,и какие препятствия мы сталкиваемся в каждом конкретном случае.

Есть три основных способа, в которых WordPress и композитор может работать вместе:

  1. Управление зависимостями при разработке темы или плагина;
  2. Управление темами и плагинами на сайте;
  3. Управление сайтом полностью (в том числе его темы, плагины и WordPress ‘ядро).

И есть две основные ситуации, касающиеся того, кто будет иметь доступ к программному обеспечению (тема или плагин, или сайт):

  1. Разработчик может иметь абсолютный контроль над тем, как программное обеспечение будет обновляться, например, путем управления сайтом для клиента, или предоставление обучения о том, как это сделать;
  2. Разработчик не имеет абсолютного контроля над пользовательским интерфейсом, например, выпуская темы или плагины через каталог WordPress, который будет использоваться неизвестной стороной.

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

С философского аспекта, касающегося цели и целевой группы каждого инструмента, в то время как Composer расширяет возможности разработчиков, WordPress фокусируется в первую очередь на потребностях конечных пользователей, а затем на потребностях разработчиков. Эта ситуация не является самопротиворечивой: Например, разработчик может создать и запустить веб-сайт с помощью Composer, а затем передать сайт к конечному пользователю, который (с этого момента) будет использовать стандартные процедуры для установки тем и плагинов – в обход Композитора. Тем не менее, затем сайт и его файл composer.json выпадают из синхронизации, и проект не может управляться надежно через Composer больше: Ручное удаление всех плагинов из wp-content/plugins/ папки и выполнения composer update не будет повторно загрузить эти плагины добавил конечным пользователем.

Альтернативой синхронизации проекта было бы попросить пользователя установить темы и плагины через Composer. Тем не менее, этот подход идет вразрез с философией WordPress:Просить конечному пользователю выполнить команду, такую как composer install установить зависимости от темы или плагина добавляет трение, и WordPress не может ожидать, что каждый пользователь сможет выполнить эту задачу , как просто, как это может быть. Таким образом, этот подход не может быть по умолчанию; вместо этого, он может быть использован только в том случае, если у нас есть абсолютный контроль над пользовательским опытом под wp-admin/ , например, при создании сайта для нашего собственного клиента и предоставления обучения о том, как обновить сайт.

Подход по умолчанию, который обрабатывает случай, когда сторона, использующая программное обеспечение, неизвестна, заключается в выпуске тем и плагинов со всеми их зависимостями в комплекте. Это означает, что зависимости также должны быть загружены на Плагин WordPress и тематическую диверсионную репозитории, победив цель Composer. Следуя этому подходу, разработчики по-прежнему могут использовать Composer для разработки, однако, не для выпуска программного обеспечения.

Этот подход не является безотказным либо: Если два разных плагина расслоение различных версий одной библиотеки, которые несовместимы друг с другом, и эти два плагина установлены на том же сайте, это может привести к сайту неисправности. Решение этой проблемы заключается в изменении пространства имен зависимостей в какое-либо пользовательское пространство имен, что гарантирует, что различные версии одной и той же библиотеки, имея различные пространства имен, рассматриваются как разные библиотеки. Это может быть достигнуто через пользовательский сценарий или через Моцарта, библиотека, которая составляет все зависимости в виде пакета внутри плагина WordPress.

Для управления сайтполностью, Композитор должен установить WordPress под субдиректоров, чтобы иметь возможность установить и обновить WordPress ‘ядро, не затрагивая другие библиотеки, следовательно, установка должна рассмотреть WordPress как зависимость сайта, а не сам сайт. (Композитор не занимает позицию: Это решение для практической цели быть в состоянии использовать инструмент; с теоретической точки зрения, мы все еще можем рассмотреть WordPress быть сайт.) Поскольку WordPress может быть установлен в субдиректоре,это не представляет собой техническую проблему. Тем не менее, WordPress по умолчанию установлен на корневой папке, и установка его в субдиректории включает в себя сознательное решение, принятое пользователем.

Чтобы сделать его легче полностью управлять WordPress с композитором, несколько проектов заняли позицию установки WordPress в subfolder и предоставление упрямый composer.json файл с установкой, которая работает хорошо: основной вкладчик Джон. Блох обеспечивает зеркало WordPress ‘ядро, и корни обеспечивает WordPress шаблон называется Bedrock. Я опишу, как использовать каждый из этих двух проектов в разделах ниже.

Управление весь WordPress сайт через Зеркало Джона. Блоха WordPress Core

Я следовал андрею Rarst Савченко рецепт для создания всего сайта Композитор пакет, который использует зеркало Джона. Блоха WordPress ‘ядро. После, я воспроизвожу его метод, добавляя некоторую дополнительную информацию и упоминая gotchas я нашел вдоль путя.

Во-первых, создайте файл composer.json со следующим содержанием в корневой папке проекта:

{
    "type": "project",
    "config": {
        "vendor-dir": "content/vendor"
    },
    "extra": {
        "wordpress-install-dir": "wp"
    },
    "require": {
        "johnpbloch/wordpress": ">=5.1"
    }
}

Через эту конфигурацию, Композитор установит WordPress 5.1 под "wp" папку, и зависимости будут установлены под папкой. "content/vendor" Затем отправляйтесь в корневую папку проекта в терминале и выполните следующую команду для Композитора, чтобы сделать его магию и установить все зависимости, в том числе WordPress:

composer install --prefer-dist

Давайте добавим пару плагинов и тему, для которой мы должны также добавить WPackagist в качестве репозитория, и давайте настроить их для установки под "content/plugins" и "content/themes" соответственно. Потому что это не по умолчанию местах ожидается WordPress, мы позже необходимо сказать WordPress, где их найти через постоянную WP_CONTENT_DIR .

Примечание: WordPress ‘ядро включает в себя по умолчанию несколько тем и плагинов под папками "wp/wp-content/themes" "wp/wp-content/plugins" и, однако, они не будут доступны.

Добавьте следующее содержимое composer.json в, в дополнение к предыдущему:

{
    "repositories": [
        {
            "type": "composer",
            "url" : "https://wpackagist.org"
        }
    ],
    "require": {
        "wpackagist-plugin/wp-super-cache": "1.6.*",
        "wpackagist-plugin/bbpress": "2.5.*",
        "wpackagist-theme/twentynineteen": "*"
    },
    "extra": {
        "installer-paths": {
            "content/plugins/{$name}/": ["type:wordpress-plugin"],
            "content/themes/{$name}/": ["type:wordpress-theme"]
        }
    }
}

А затем выполнить в терминале:

composer update --prefer-dist

Аллилуйя! Тема и плагины были установлены! Так как все зависимости распределены по wp папкам, и мы можем легко игнорировать их при content/vendors content/plugins content/themes совершении нашего проекта под управлением версии через Git. Для этого создайте файл .gitignore с этим содержанием:

wp/
content/vendor/
content/themes/
content/plugins/

Примечание: Мы также можем напрямую игнорировать папку, content/ которая уже будет игнорировать все файлы мультимедиа под content/uploads/ и файлы, генерируемые плагинами, которые, скорее всего, не должны идти под управление мнится версия.

Есть несколько вещей, которые еще предстоит сделать, прежде чем мы сможем получить доступ к сайту. Во-первых, дублировать файл wp/wp-config-sample.php в wp-config.php (и добавить строку с wp-config.php в файл .gitignore, чтобы избежать его совершения, так как этот файл содержит информацию о среде), и отспособить его обычная информация, требуемая WordPress (информация базы данных и секретные ключи и соли). Затем добавьте следующие строки в верхней части wp-config.php, который загрузит автозагрузчик Композитора и установит WP_CONTENT_DIR постоянную папку: content/

// Load Composer’s autoloader
require_once (__DIR__.'/content/vendor/autoload.php');

// Move the location of the content dir
define('WP_CONTENT_DIR', dirname(__FILE__).'/content');

По умолчанию, WordPress устанавливает WP_CONSTANT_URL постоянную get_option('siteurl').'/wp-content' значение. Поскольку мы изменили каталог содержимого с значения по умолчанию "wp-content" на , мы должны также "content" установить новое значение для WP_CONSTANT_URL . Для этого мы не можем ссылаться на функцию, get_option так как она еще не определена, поэтому мы должны либо хардкодировать домен, либо, возможно, лучше, мы можем получить его из $_SERVER такого:

$s = empty($_SERVER["HTTPS"]) ? '' : ($_SERVER["HTTPS"] == "on") ? "s" : "";
$sp = strtolower($_SERVER["SERVER_PROTOCOL"]);
$protocol = substr($sp, 0, strpos($sp, "/")) . $s;
$port = ($_SERVER["SERVER_PORT"] == "80") ? "" : (":".$_SERVER["SERVER_PORT"]);
define('WP_CONTENT_URL', $protocol."://".$_SERVER[’SERVER_NAME'].$port.'/content');

Теперь мы можем получить доступ к сайту в браузере под domain.com/wp/ , и приступить к установке WordPress. Как только установка завершена, мы входим в панель мониторинга и активируем тему и плагины.

Наконец, потому что WordPress был установлен под субдиректории wp , URL будет содержать путь ” при /wp доступе к сайту. Давайте удалим, что (не для стороны админ, хотя, который, будучи доступ под /wp/wp-admin/ добавляет дополнительный уровень безопасности на сайте).

Документация предлагает два способа сделать это: с или без изменения URL. Я последовал за обоими из их, и нашел без изменения URL бит неудовлетворительно потому что он требует указывать домен в архиве .htaccess, таким образом смешивая код применения и информацию конфигурации совместно. Таким образом, я опишу метод с изменением URL.

Во-первых, голову “Общие настройки”, которые вы найдете под domain.com/wp/wp-admin/options-general.php и удалить ” бит из ” Адрес сайта /wp (URL)” значение и сохранить. После этого, сайт будет на мгновение сломана: просмотр главной страницы будет список содержимого каталога, и просмотр блога вернется 404. Однако, не паникуйте, это будет исправлено в следующем шаге.

Далее мы копируем файл index.php в корневую папку и редактируем этот новый файл, добавляя wp/ « к пути требуемого файла, как это:

/** Loads the WordPress Environment and Template */
require( dirname( __FILE__ ) . '/wp/wp-blog-header.php' );

Мы закончили! Теперь мы можем получить доступ к нашему сайту в браузере domain.com под:

WordPress site
WordPress сайт успешно установлен через Композитор(Большой предварительный просмотр)

Несмотря на то, что он скачал всю базу кода WordPress и несколько библиотек, наш проект сам включает в себя только шесть файлов, из которых только пять должны быть совершены на Git:

  1. .gitignore
  2. composer.json
  3. composer.lock
    Этот файл генерируется автоматически композитором, содержащим версии всех установленных зависимостей.
  4. Index.php
    Этот файл создается вручную.
  5. .htaccess
    Этот файл автоматически создается WordPress, так что мы могли бы избежать совершения его, однако, мы можем скоро настроить его для приложения, и в этом случае он требует совершения.

Оставшийся шестой файл wp-config.php, который не должен быть зафиксирован, поскольку он содержит информацию об окружающей среде.

Не плохо!

Процесс прошел довольно гладко, однако, он может быть улучшен, если следующие вопросы рассматриваются лучше:

  1. Некоторые кодприложения не замыкается под управлением версии.
    Поскольку он содержит информацию о среде, файл wp-config.php не должен быть зафиксирован в Git, вместо этого требуя поддерживать другую версию этого файла для каждой среды. Тем не менее, мы также добавили строку кода для загрузки автозагрузчика Композитора в этом файле, который необходимо будет реплицировать для всех версий этого файла во всех средах.
  2. Процесс установки не полностью автоматизирован.
    После установки зависимостей через Composer, мы все равно должны установить WordPress через стандартную процедуру, войти в панель и изменить URL-адрес сайта, чтобы не содержать wp/ “. Таким образом, процесс установки слегка фрагментирован, с участием как скрипта, так и человеческого оператора.

Давайте посмотрим, как Bedrock тарифы для той же задачи.

Управление весь сайт WordPress через Bedrock

Bedrock является wordPress шаблон с улучшенной структурой папки, которая выглядит следующим образом:

├── composer.json
├── config
│   ├── application.php
│   └── environments
│       ├── development.php
│       ├── staging.php
│       └── production.php
├── vendor
└── web
    ├── app
    │   ├── mu-plugins
    │   ├── plugins
    │   ├── themes
    │   └── uploads
    ├── wp-config.php
    ├── index.php
    └── wp

Люди за корни выбрали эту структуру папки для того, чтобы WordPress принять Двенадцать фактор App, и они разработать, как это достигается через серию сообщенийв блоге . Эта структура папки можно считать улучшением по сравнению со стандартным WordPress один на следующих счетах:

  • Он добавляет поддержку композитора, перемещая ядро WordPress из корневой папки и в web/wp папку;
  • Это повышает безопасность, поскольку файлы конфигурации, содержащие информацию базы данных, не хранятся в папке, web которая устанавливается как корень документа веб-сервера (угроза безопасности заключается в том, что, если веб-сервер выходит из эксплуатации, не будет никакой защиты для блокировать доступ к файлам конфигурации;;
  • Папка wp-content была переименована в app “, что является более стандартным названием, так как она используется другими инфраструктурами, такими как Symfony и Rails, и чтобы лучше отражать содержимое этой папки.

Bedrock также вводит различные файлы конфигурации для различных сред (разработка, постановка, производство), и он чисто соединяет информацию о конфигурации из кода через библиотеку PHP dotenv, которая загружает переменные среды из файл .env, который выглядит следующим образом:

DB_NAME=database_name
DB_USER=database_user
DB_PASSWORD=database_password

# Optionally, you can use a data source name (DSN)
# When using a DSN, you can remove the DB_NAME, DB_USER, DB_PASSWORD, and DB_HOST variables
# DATABASE_URL=mysql://database_user:database_password@database_host:database_port/database_name

# Optional variables
# DB_HOST=localhost
# DB_PREFIX=wp_

WP_ENV=development
WP_HOME=http://example.com
WP_SITEURL=${WP_HOME}/wp

# Generate your keys here: https://roots.io/salts.html
AUTH_KEY='generateme'
SECURE_AUTH_KEY='generateme'
LOGGED_IN_KEY='generateme'
NONCE_KEY='generateme'
AUTH_SALT='generateme'
SECURE_AUTH_SALT='generateme'
LOGGED_IN_SALT='generateme'
NONCE_SALT='generateme'

Давайте приступим к установке Bedrock, следуя их инструкциям. Сначала создайте такой проект:

composer create-project "roots/bedrock"

Эта команда загрузит проект Bedrock в новую папку “основа”, настроив структуру папки, установив все исходные зависимости и создав файл .env в корневой папке, которая должна содержать конфигурацию сайта. Затем мы должны отредковать файл .env, чтобы добавить конфигурацию базы данных и секретные ключи и соли, как это обычно требуется в файле wp-config.php, а также указать, какая среда (разработка, постановка, производство) и сайт Домена.

Далее, мы уже можем добавить темы и плагины. Bedrock поставляется с темами twentyten до 20nineteen поставляется по умолчанию под web/wp/wp-content/themes папку, но при добавлении больше тем через Композитор эти установлены под web/app/themes . Это не проблема, потому что WordPress может зарегистрировать более register_theme_directory одного каталога для хранения тем через функцию.

Bedrock включает в себя информацию WPackagist в файле composer.json, так что мы уже можем установить темы и плагины из этого репозитория. Чтобы сделать это, просто наступить на корневую папку проекта и выполнить composer require команду для каждой темы и плагин для установки (эта команда уже устанавливает зависимость, так что нет необходимости выполнять composer update ):

cd bedroot
composer require "wpackagist-theme/zakra"
composer require "wpackagist-plugin/akismet":"^4.1"
composer require "wpackagist-plugin/bbpress":">=2.5.12"

Последним шагом является настройка веб-сервера, установив корень документа на полный путь для web папки. После того, как это будет сделано, заголовок domain.com в браузере мы с радостью приветствовали WordPress установки экрана. После того, как установка завершена, мы можем получить доступ к WordPress админ domain.com/wp/wp-admin под и активировать установленную тему и плагины, и сайт доступен под domain.com . Успех!

Установка Bedrock была довольно гладкой. Кроме того, Bedrock лучше работает над тем, чтобы не смешивать код приложения с информацией о среде в том же файле, поэтому проблема, связанная с кодом приложения, не занимавшегося управлением версиями, которую мы получили с предыдущим методом, здесь не происходит.

Заключение

С запуском Гутенберга и предстоящих натыкаясь на PHP минимальной требуемой версии, WordPress вступилв в эпоху модернизации, которая предоставляет прекрасную возможность переосмыслить, как мы строим WordPress сайты, чтобы сделать большую часть из новых инструментов и Технологии. Композитор, Packagist, и WPackagist такие инструменты, которые могут помочь нам производить лучший код WordPress, с акцентом на многоразовые компоненты для производства модульных приложений, которые легко проверить и bugfix.

Впервые выпущенный в 2012 году, Composer не совсем то, что мы назвали бы “новым” программным обеспечением, однако, оно не было включено в ядро WordPress из-за нескольких несовместимости между архитектурой WordPress и требованиями композитора. Этот вопрос был постоянным источником разочарования для многих членов WordPress развития сообщества, которые утверждают, что интеграция композитора в WordPress будет способствовать созданию и выпуску программного обеспечения для WordPress. К счастью, нам не нужно ждать, пока этот вопрос не будет решен, так как несколько субъектов взяли этот вопрос в свои руки, чтобы обеспечить решение.

В этой статье мы рассмотрели два проекта, которые обеспечивают интеграцию между WordPress и Композитор: вручную настройка нашего файла composer.json в зависимости от зеркала Джона. Блоха из WordPress ‘ядро, и Bedrock по корням. Мы видели, как эти две альтернативы, которые предлагают различное количество свободы для формирования структуры папки проекта, и которые являются более или менее гладкой в процессе установки, может преуспеть в выполнении нашего требования полностью управлять сайтом WordPress , включая установку ядра, темы и плагины.

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

Я хотел бы поблагодарить Андрея «Рарста» Савченко, который рассмотрел эту статью и предоставил бесценную обратную связь.

Дальнейшее чтение на SmashingMag:

Источник: smashingmagazine.com

Великолепный Журнал

Великолепный, сокрушительный, разящий (см. перевод smashing) независимый журнал о веб-разработке. Основан в 2006 году в Германии. Имеет няшный дизайн и кучу крутых авторов, которых читают 2 млн человек в месяц.

Добавить комментарий

%d такие блоггеры, как: