Спустя долгое время публикую свое решение. Как оказалось вордпресс поддерживает данное решение почти из коробки и сделать все это не так уж и сложно.
Схема такая: есть папка с ядром WP и есть папки с проектами. В моем случае
папка ядра это
C://localhost/wordpress.local, а
папка с проектом C://dev/projects/example/(static | wp).
В папке с ядром содержатся только необходимые компоненты для функционирования CMS и на эту папку мы вешаем домен wordpress.local, тут мы только слегка изменяем файл wp-config – он будет предназначен для подключения внешней папки wp-content нашего проекта и данных для подключения к БД, убираем папку wp-content из папки с ядром за ненадобностью.
Внутри папки проекта находятся две папки static и wp, в нашем случае нам нужна папка wp которая в свою очередь уже будет содержать необходимые нам папку wp-content и файлы
wp-config-dev.php и
wp-config.php. Данные для подключения к БД для локальной разработки будут находится в wp-config-dev, а деплоить будем wp-config.php, содержание которого не отличается от обычного файла конфига для вордпресса.
Из дополнительного необходимо в настройках виртуальных хостов расшарить нашу папку с проектами в качестве домена для константы WP_CONTENT_URL'.
Содержимое wp-config.php ядра Wordpress
<?php
$project = 'example';
define( 'WP_CONTENT_DIR', 'C://DEV/projects/'.$project.'/wp/wp-content' );
define( 'WP_CONTENT_URL', 'http://projects.folder/'.$project.'/wp/wp-content' );
include('C://DEV/projects/'.$project.'/wp/wp-config-dev.php');
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', dirname( __FILE__ ) . '/' );
}
require_once( ABSPATH . 'wp-settings.php' );
Содержимое wp-config-dev.php проекта Wordpress
<?php
define( 'DB_NAME', 'example' );
define( 'DB_USER', 'root' );
define( 'DB_PASSWORD', '' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8mb4' );
define( 'DB_COLLATE', '' );
$table_prefix = 'wp_';
Файл виртуальных хостов httpd-vhosts.conf
<Directory "C://DEV/projects/*">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
# Для WP_CONTENT_URL
<Directory "C://DEV/projects">
Options Indexes FollowSymLinks Includes ExecCGI
AllowOverride All
Require all granted
</Directory>
<VirtualHost *:80>
DocumentRoot "C://DEV/projects"
ServerName projects.folder
# Заклинание против CORS
Header set Access-Control-Allow-Origin "*"
</VirtualHost>
В итоге мы отделяем ядро вордпресса от конкретного проекта – можно легко переключаться между проектами всего лишь поменяв значение переменной $project в конфиге ядра (я это делаю с помощью шелл скрипта, их уже использую в гульпе и других местах, тут уже как вам удобнее) а также версионируется и деплоится только папка с проектом(темой-плагинами-загрузками итд), ядро не тащится в гит и его также можно загрузить на хост отдельно.