Определите настройки по умолчанию для новых сайтов в многосайтовой сети с помощью mu-plugin.

Вопрос или проблема

Я настроил 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. Не забывайте всегда тестировать ваши изменения в безопасной среде, прежде чем применить их на реальном сайте. Такие практики помогут избежать возможных ошибок и сбоев в работе сети.

Эти действия позволят значительно упростить администрацию вашей сети новых сайтов и обеспечить единообразие в их настройках и функционале.

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

Капча загружается...