Вопрос или проблема
Я настроил WordPress с сетью мультисайтов. Я искал в течение часов и не могу найти много документации по установке пользовательских настроек по умолчанию для всех новых сайтов, созданных в сети.
Я использую тему с установленной дочерней темой.
Прежде всего, я хотел бы, чтобы темой по умолчанию для всех новых сайтов, созданных в сети, была моя дочерняя тема, которая установлена, и каждый новый сайт начинался с базовой статической главной страницы.
Может ли это работать или мне следует добавить это как функцию в mu-plugin:
/** Устанавливает тему по умолчанию для новых сайтов в сети */
define( 'WP_DEFAULT_THEME', 'theme-child');
Во-вторых, всем администраторам в сети нужно дать доступ ко всем новым сайтам. Позволив им автоматически работать на всех сайтах.
Стоит ли попробовать создать mu-plugin, если да, дайте, пожалуйста, указания, или если есть другой способ, пожалуйста, посоветуйте. Я не много писал на PHP. Пожалуйста, дайте знать, как это можно сделать.
Спасибо
Итак, я разобрался: я добавил тему по умолчанию в wp-config:
// Установка темы по умолчанию для вновь созданных сайтов
define( 'WP_DEFAULT_THEME', 'theme-child' );
Для статической главной страницы я добавил:
# ПРИ РЕГИСТРАЦИИ НОВЫХ САЙТОВ СОЗДАЕТСЯ НОВАЯ СТРАНИЦА С НАЗВАНИЕМ "Главная" И УСТАНАВЛИВАЕТСЯ КАК
СТАТИЧЕСКАЯ ГЛАВНАЯ СТРАНИЦА
add_action( 'wpmu_new_blog', 'process_extra_field_on_blog_signup', 10, 6 );
function process_extra_field_on_blog_signup( $blog_id, $user_id, $domain,
$path, $site_id, $meta ) {
switch_to_blog($blog_id);
$new_page_title="Главная"; //название страницы
$new_page_content="ТЕСТ"; //содержимое страницы здесь
$new_page_template=""; //шаблон страницы.
$page_check = get_page_by_title($new_page_title);
$new_page = array(
'post_type' => 'page',
'post_title' => $new_page_title,
'post_content' => $new_page_content,
'post_status' => 'publish',
'post_author' => 1,
);
if(!isset($page_check->ID)){
$new_page_id = wp_insert_post($new_page);
if(!empty($new_page_template)){
update_post_meta($new_page_id, '_wp_page_template', $new_page_template);
}
}
$homepage = get_page_by_title( 'Главная' );
if ( $homepage )
{
update_blog_option( $blog_id, 'page_on_front', $homepage->ID );
update_blog_option( $blog_id, 'show_on_front', 'page' );
}
restore_current_blog();
}
Теперь мне просто нужно сделать всех пользователей администраторами на вновь созданных сайтах.
Чтобы достичь своих целей в сети мультисайтов WordPress, вы действительно можете использовать комбинацию файла wp-config.php
и пользовательского плагина mu-plugin
. Пожалуйста, следуйте пошаговому руководству ниже для данного сценария.
1. Установите тему по умолчанию для новых сайтов
Добавьте следующую строку в ваш файл wp-config.php
define('WP_DEFAULT_THEME', 'имя-папки-в-вашей-дочерней-теме');
Замените ‘имя-папки-в-вашей-дочерней-теме’ на фактическое имя папки вашей дочерней темы.
2. Установите статическую главную страницу для новых сайтов
Чтобы установить статическую главную страницу по умолчанию для всех новых сайтов, вы можете использовать mu-plugin. Создайте новый PHP файл например, custom-defaults.php
и поместите его в директорию wp-content/mu-plugins
. Если директория mu-plugins не существует, вы можете создать ее.
Внутри custom-defaults.php
добавьте следующий код
<?php
/**
* Установите статическую главную страницу по умолчанию для новых сайтов в сети мультисайтов.
*/
function set_default_front_page() {
update_site_option('site_front_page', 'ваш-id-статической-страницы');
update_site_option('site_posts_page', 'ваш-id-страницы-постов-блога');
}
add_action('wpmu_new_blog', 'set_default_front_page');
Замените ‘ваш-id-статической-страницы’ и ‘ваш-id-страницы-постов-блога’ на фактические ID страниц для вашей статической главной страницы и страницы постов блога.
3. Предоставьте доступ всем администраторам
Для предоставления доступа всем администраторам в сети вы также можете использовать mu-plugin. Создайте другой PHP файл, например grant-admin-access.php
в директории wp-content/mu-plugins
.
Внутри grant-admin-access.php
добавьте следующий код
<?php
/**
* Предоставить доступ всем администраторам в сети.
*/
function grant_admin_access_to_all_sites($user_id, $password, $meta) {
$user = new WP_User($user_id);
$user->for_each_blog(function ($blog_id) use ($user_id) {
grant_super_admin($user_id);
});
}
add_action('wpmu_new_user', 'grant_admin_access_to_all_sites', 10, 3);
Этот код использует функцию grant_super_admin()
, чтобы предоставить права супер-администратора пользователю на всех сайтах в сети.
Ответ или решение
Для настройки параметров по умолчанию для новых сайтов в сети мультисайтового WordPress с использованием mu-plugin, необходимо учесть несколько аспектов. В данном руководстве я проведу вас через необходимые шаги для достижения ваших целей.
1. Установка темы по умолчанию для новых сайтов
Чтобы задать тему по умолчанию для всех новых сайтов, созданных в сети, вам нужно внести соответствующее изменение в файл wp-config.php
вашего WordPress:
// Установить тему по умолчанию для вновь созданных сайтов
define('WP_DEFAULT_THEME', 'название_вашей_дочерней_темы');
Замените название_вашей_дочерней_темы
на фактическое имя папки вашей дочерней темы.
2. Установка статической главной страницы по умолчанию для новых сайтов
Для установки статической главной страницы вам необходимо создать mu-plugin. Создайте новый PHP файл, например, custom-defaults.php
, и поместите его в директорию wp-content/mu-plugins
. Если директория mu-plugins
не существует, вы можете создать её.
Внутри файла custom-defaults.php
добавьте следующий код:
<?php
/**
* Устанавливает статическую главную страницу для новых сайтов в мультисайтовой сети.
*/
function set_default_front_page($blog_id) {
switch_to_blog($blog_id);
// Запись основных данных для статической страницы
$new_page_title = "Homepage"; // Название страницы
$new_page_content = "Тестовое содержимое."; // Контент страницы
$page_check = get_page_by_title($new_page_title);
if (!isset($page_check->ID)) {
$new_page = array(
'post_type' => 'page',
'post_title' => $new_page_title,
'post_content' => $new_page_content,
'post_status' => 'publish',
'post_author' => 1,
);
$new_page_id = wp_insert_post($new_page);
}
// Установка новой страницы как главной
$homepage = get_page_by_title($new_page_title);
if ($homepage) {
update_blog_option($blog_id, 'page_on_front', $homepage->ID);
update_blog_option($blog_id, 'show_on_front', 'page');
}
restore_current_blog();
}
add_action('wpmu_new_blog', 'set_default_front_page');
3. Предоставление доступа всем администраторам
Для предоставления доступа ко всем сайтам администраторам сетевой установки также можно использовать mu-plugin. Создайте еще один PHP файл, например, grant-admin-access.php
, в каталоге wp-content/mu-plugins
.
Внутри файла grant-admin-access.php
добавьте следующий код:
<?php
/**
* Предоставляет доступ всем администраторам системы ко всем сайтам.
*/
function grant_admin_access($blog_id, $user_id, $domain, $path, $site_id, $meta) {
$users = get_users(array('role' => 'administrator'));
foreach ($users as $user) {
add_user_to_blog($blog_id, $user->ID, 'administrator');
}
}
add_action('wpmu_new_blog', 'grant_admin_access', 10, 6);
Этот код добавляет всех существующих администраторов сети ко всем новым сайтам, создаваемым в мультисайтовой установке WordPress.
Заключение
Теперь вы можете автоматически устанавливать тему по умолчанию, задавать статическую главную страницу и предоставлять доступ администраторам на всех новых сайтах, создаваемых в вашем мультисайтовом окружении WordPress. Не забывайте всегда тестировать ваши изменения в безопасной среде, прежде чем применить их на реальном сайте. Такие практики помогут избежать возможных ошибок и сбоев в работе сети.
Эти действия позволят значительно упростить администрацию вашей сети новых сайтов и обеспечить единообразие в их настройках и функционале.