Система мультисайтов является сложным решением. В процессе реализации такой системы возникают определенные сложности. Рассмотрим их.
Увеличение базы данных
Сайты создаются как отдельные таблицы, но в одной базе данных. Из-за этого база существенно увеличивается в размере.
Как пишут в рекомендациях, система до 50 сайтов не должна существенно тормозить из-за базы данных. Но нужно учесть что это справедливо к простым информационным сайтам. С интернет-магазинами ситуация сложнее, т.к. там таблиц на каждый сайт больше.
Есть (уже не поддерживаемое) решение в виде плагина Multi DB (от WPMU DEV). Он разделяет сайты на несколько баз данных, но не каждый сайт в отдельную базу. Он создает 16, 256 или 4096 баз данных в которые он распределяет сайты.
Рекомендации по оптимизации базы данных мультисети
Удалять лишние таблицы у сайтов, например таблицы с префиксами в названиях pmxe, pmxi, nxs. Это таблицы автоматически созданные плагинами WP All Import и WP All Export (которые были нужны только на основном сайте, на подсайтах отключен, но в БД подсайтов таблицы все равно создаются).
Удалить лишние записи в таблицах wp_postmeta, например много полей от плагина SNAP (который на поддоменах не активирован). Потенциально лишние записи (искать надо %Like%): snap
Чтобы этого не происходило нужно в файле class-wcmps.php плагина добавить исключения полей для обновления (строка примерно 208):
// мои кастомные поля
unset($postmeta_fields['unit']);
unset($postmeta_fields['_wpbo_deactive']);
unset($postmeta_fields['_wpbo_override']);
unset($postmeta_fields['_wpbo_step']);
unset($postmeta_fields['_wpbo_minimum']);
unset($postmeta_fields['_wpbo_maximum']);
unset($postmeta_fields['_wpbo_minimum_oos']);
unset($postmeta_fields['_wpbo_maximum_oos']);
// поля SNAP
unset($postmeta_fields['snapIG']);
unset($postmeta_fields['snap_isAutoPosted']);
unset($postmeta_fields['_snap_forceSURL']);
unset($postmeta_fields['snap_MYURL']);
unset($postmeta_fields['snapEdIT']);
unset($postmeta_fields['snapFB']);
unset($postmeta_fields['snapVK']);
Либо можно в настройках плагина прописать поля в Exclude Product Meta Data через запятую.
Сайты не помещаются в списке
Когда сайтов в сети становится довольно много, то они перестают помещаться в списке и нижние уже не возможно выбрать. Для решения этой проблемы применяем стили для админки:
add_action( 'admin_footer', 'admin_footer_example' );
function admin_footer_example() {
echo '<style type="text/css">
ul#wp-admin-bar-my-sites-list {column-count: 2;}
ul#wp-admin-bar-my-sites-list .menupop {z-index: unset;}
</style>';
}
[site-socialshare]