Personalizar configurações padrão em novos sites em vários sites

6

Como o título indica, eu preciso de uma abordagem para alterar as configurações padrão quando um novo site é criado no meu site multi-wordpress.
Eu acho que é mais fácil manter o código em um plugin mu, mas pode ter opções padrão específicas como:

  • frontpage como página estática
  • crie uma página padrão e defina-a como página de índice do blog
  • formato de data e hora
por Mac Luc 11.02.2015 / 16:31

1 resposta

4

O WordPress fornece um filtro chamado wpmu_new_blog e passa o parâmetro $blog_id (o ID do novo blog) e $user_id (o usuário que acabou de criar esse novo blog) (e alguns mais) para ele. Você pode conectar-se a essa ação para criar as novas páginas e editar as opções:

<?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';
}

Use este plugin como mu-plugin e isso afetará cada novo blog. Este exemplo edita todas as chaves de opção diretamente. Você deve levar algum tempo para descobrir se o WordPress fornece funções da API para configurar essas opções. (Algo como wp_set_front_page() …)

    
por David 02.03.2016 / 12:32