Wie der Titel besagt, brauche ich einen Ansatz, um die Standardeinstellungen zu ändern, wenn eine neue Site auf meiner WordPress-Multi-Site erstellt wird.
Ich denke, es ist am einfachsten, den Code in einem Mu-Plugin zu behalten, aber es können auch bestimmte Standardoptionen verwendet werden, wie:
WordPress bietet einen Filter namens wpmu_new_blog
und übergibt ihm die Parameter $blog_id
(die ID des neuen Blogs) und $user_id
(den Benutzer, der gerade das neue Blog erstellt hat) (und einige mehr). Sie können an dieser Aktion teilnehmen, um die neuen Seiten zu erstellen und die Optionen zu bearbeiten:
<?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';
}
Verwenden Sie dieses Plugin als mu-plugin
und es wirkt sich auf jedes neue Blog aus. In diesem Beispiel werden alle Optionstasten direkt bearbeitet. Sie sollten sich etwas Zeit nehmen, um herauszufinden, ob WordPress API-Funktionen zum Einrichten dieser Optionen bietet. (Etwas wie wp_set_front_page()
...)