web-dev-qa-db-fra.com

Personnaliser les paramètres par défaut sur les nouveaux sites sur plusieurs sites

Comme le titre l'indique, j'ai besoin d'une approche pour modifier les paramètres par défaut lorsqu'un nouveau site est créé sur mon multi-site wordpress.
Je suppose qu'il est plus facile de conserver le code dans un plug-in mu, mais vous pouvez avoir des options par défaut spécifiques, telles que:

  • page d'accueil en page statique
  • créer une page par défaut et la définir comme page d'index de blog
  • format de date et heure
5
Mac Luc

WordPress fournit un filtre appelé wpmu_new_blog et lui transmet le paramètre $blog_id (l'identifiant du nouveau blog) et $user_id (l'utilisateur qui vient de créer ce nouveau blog). Vous pouvez vous connecter à cette action pour créer les nouvelles pages et éditer les options:

<?php
/**
 * Plugin Name: Default Site Structure
 * Description: Crates default pages and set them as front/blog index pages.
 * Network:     true
 * Plugin URL:  http://wordpress.stackexchange.com/a/219504/31323
 * License:     MIT
 * Version:     1.0.0-alpha
 */
namespace WPSE177819;

add_action( 'wp_loaded', __NAMESPACE__ . '\init' );

/**
 * @wp-hook wp_loaded
 */
function init() {

    add_action(
        'wpmu_new_blog',
        function( $blog_id, $user_id ) {

            switch_to_blog( $blog_id );

            $front_page_id = wp_insert_post( front_page_data( $user_id ) );
            $index_page_id = wp_insert_post( index_page_data( $user_id ) );

            if ( ! is_wp_error( $front_page_id ) && 0 !== $front_page_id ) {
                update_option( 'show_on_front', 'page' );
                update_option( 'page_on_front', $front_page_id );
            }
            if ( ! is_wp_error( $index_page_id ) && 0 !== $index_page_id ) {
                update_option( 'page_for_posts', $index_page_id );
            }


            update_option( 'date_format', date_format() );
            update_option( 'time_format', time_format() );

            restore_current_blog();
        },
        10,
        2
    );
}

/**
 * Returns the data of the blog index page
 *
 * @param int $post_author
 *
 * @return array
 */
function index_page_data( $post_author ) {

    return [
        'post_title'   => 'My blog index',
        'post_content' => '',
        'post_type'    => 'page',
        'post_author'  => $post_author,
        'post_status'  => 'publish'
    ];
}

/**
 * Returns the data of the front page
 *
 * @param int $post_author
 *
 * @return array
 */
function front_page_data( $post_author ) {

    return [
        'post_title'   => 'Hello World',
        'post_content' => 'Welcome to my new site!',
        'post_type'    => 'page',
        'post_author'  => $post_author,
        'post_status'  => 'publish'
    ];
}

/**
 * Returns the custom date format
 *
 * @return string
 */
function date_format() {

    return 'd,m,Y';
}

/**
 * Returns the custom time format
 *
 * @return string
 */
function time_format() {

    return 'H/i/s';
}

Utilisez ce plugin en tant que mu-plugin et cela affectera chaque nouveau blog. Cet exemple modifie directement toutes les clés d’option. Vous devez prendre un certain temps pour déterminer si WordPress fournit des fonctions API pour configurer ces options. (Quelque chose comme wp_set_front_page()…)

4
David