Créer un multisite avec WordPress vous permet de gérer une grande quantité de blogs, hébergés sur une seule installation. Il est donc possible de les manipuler sous de nombreuses conditions, grâce aux fonctions de multisite que WordPress nous propose.
Certaines de ces fonctions fonctionnent très bien sur des sites « normaux », mais sont grandement utiles pour gagner en efficience sur un système multi-instances.
Ajouter des variables PHP utiles dans l’en-tête de votre site :
Cela vous donnera accès à peu près partout à des variables utiles dans le cadre d’un multisite. Ajoutez ceci dans le header.php de votre thème
//Utilisateur courant global $current_user; //liste des blogs $blog_list = wp_get_sites(); //ID du blog courant $blog_id = get_current_blog_id(); //ID de l'utilisateur courant $user_id = get_current_user_id(); //Titre du blog $blog_title = get_bloginfo(); //URL du main blog $main_url = network_home_url(); //URL courante $URL = "https://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; //Récupération des informations de l'utilisateur courant get_currentuserinfo(); //Récupération des informations du blog courant en utilisant l'ID $blog_details = get_blog_details($blog_id); //Récupération des informations utilisateur selon le blog courant $wp_user_obj = new WP_User( $user_id, '', $blog_id );
Ajouter Bootstrap à votre thème :
/* * Custom functions added by Cyril CHALAMON * Please make sure you don't remove these lines * */ /** * Custom CSS and JS, including Bootstrap, add files in /bootstrap folder in your theme directory */ wp_register_script( 'bootstrap-js', get_template_directory_uri() . '/bootstrap/js/bootstrap.min.js', array( 'jquery' ), '3.0.1', true ); wp_register_style( 'bootstrap-css', get_template_directory_uri() . '/bootstrap/css/bootstrap.min.css', array(), '3.0.1', 'all' ); wp_enqueue_script( 'bootstrap-js' ); wp_enqueue_style( 'bootstrap-css' ); /* * Custom excerpt length */ function custom_excerpt_length($length) { return 0; } add_filter('excerpt_length', 'custom_excerpt_length');
Changer le logo du login :
/* / Custom admin login logo */ function custom_login_logo() { echo '<style type="text/css"> h1 a { background-image: url('.get_bloginfo('template_directory').'/images/custom-login-logo.png) !important; } </style>'; } add_action('login_head', 'custom_login_logo');
Enlever hentry de post_class :
/** * Remove hentry from post_class */ function remove_hentry_class( $classes ) { $classes = array_diff( $classes, array( 'hentry' ) ); return $classes; } add_filter( 'post_class', 'remove_hentry_class' );
Ajouter les utilisateurs à tous les blogs, mais avec aucun droit par défaut
Ceci dépend d’une option nommée blogsecure, disponible depuis une interface admin en téléchargeant ce plugin :
//No Reader Role function add_role_noread() { add_role( 'none_role', 'Aucun droit', array( 'read' => false, 'level_0' => true ) ); } add_action('admin_init', 'add_role_noread', 10, 0); //Add user to all blogs function ds_new_user_meta($user_id) { $blog_list = wp_get_sites(); $none_role = 'none_role'; $subscriber = 'subscriber'; $user_blogs = get_blogs_of_user( $user_id ); foreach ($blog_list as $blog) { //Get blog name by ID in loop $blog_details = get_blog_details($blog['blog_id']); //If blog is locked if(!is_user_member_of_blog( $user_id, $blog['blog_id']) && get_blog_option($blog['blog_id'],'blogsecure')){ //Add user with none role add_user_to_blog($blog['blog_id'], $user_id, $none_role); } else{ //Add user with subscriber role add_user_to_blog($blog['blog_id'], $user_id, $subscriber); } } } add_action( 'user_register', 'ds_new_user_meta', 10, 2); add_action( 'wpmu_new_blog', 'ds_new_user_meta', 10, 2 ); function login_new_user_meta($login) { $user = get_userdatabylogin($login); $user_id = $user->ID; $blog_list = wp_get_sites(); $none_role = 'none_role'; $subscriber = 'subscriber'; $user_blogs = get_blogs_of_user( $user_id ); foreach ($blog_list as $blog) { //Get blog name by ID in loop $blog_details = get_blog_details($blog['blog_id']); //If blog is locked if(!is_user_member_of_blog( $user_id, $blog['blog_id']) && get_blog_option($blog['blog_id'],'blogsecure')){ //Add user with none role add_user_to_blog($blog['blog_id'], $user_id, $none_role); } else if (!is_user_member_of_blog( $user_id, $blog['blog_id'])){ //Add user with subscriber role add_user_to_blog($blog['blog_id'], $user_id, $subscriber); } else { //Do nothing } } } add_action('wp_login', 'login_new_user_meta');
Afficher la liste des blogs dont on est membre :
<div class="col-md-12"> <!-- Show All Blogs: --> <ul> <?php $blog_list = wp_get_sites(); $blog_id = get_current_blog_id(); $user_id = get_current_user_id(); foreach ($blog_list as $blog) { //Get blog name by ID in loop $blog_details = get_blog_details($blog['blog_id']); if (is_user_member_of_blog( $user_id, $blog['blog_id'])) { if ($blog_id == $blog['blog_id']) { echo ' <li id="'.$blog['blog_id'].'" class="current_blog">'.$blog_details->blogname.' </li> '; } else{ echo ' <li id="'.$blog['blog_id'].'">'.$blog_details->blogname.' </li> '; } } } ?> </ul> </div>
Ajouter tous les utilisateurs en abonné, partout :
//Add user to all blogs function ds_new_user_meta($user_id) { $blog_list = wp_get_sites(); $subscriber = 'subscriber'; $user_blogs = get_blogs_of_user( $user_id ); foreach ($blog_list as $blog) { //Get blog name by ID in loop $blog_details = get_blog_details($blog['blog_id']); if(!is_user_member_of_blog( $user_id, $blog['blog_id'])){ add_user_to_blog($blog['blog_id'], $user_id, $subscriber); } } } add_action( 'user_register', 'ds_new_user_meta', 10, 2); add_action( 'wpmu_new_blog', 'ds_new_user_meta', 10, 2 ); function login_new_user_meta($login) { $user = get_userdatabylogin($login); $user_id = $user->ID; $blog_list = wp_get_sites(); $subscriber = 'subscriber'; $user_blogs = get_blogs_of_user( $user_id ); foreach ($blog_list as $blog) { //Get blog name by ID in loop $blog_details = get_blog_details($blog['blog_id']); if(!is_user_member_of_blog( $user_id, $blog['blog_id'])){ add_user_to_blog($blog['blog_id'], $user_id, $subscriber); } } } add_action('wp_login', 'login_new_user_meta');
Ajouter les utilisateurs partout, avec aucun droit :
//No Reader Role function add_role_noread() { add_role( 'none_role', 'Aucun droit', array( 'read' => false, 'level_0' => true ) ); } add_action('admin_init', 'add_role_noread', 10, 0); //Add user to all blogs function ds_new_user_meta($user_id) { $blog_list = wp_get_sites(); $none_role = 'none_role'; $user_blogs = get_blogs_of_user( $user_id ); foreach ($blog_list as $blog) { //Get blog name by ID in loop $blog_details = get_blog_details($blog['blog_id']); //If blog is locked if(!is_user_member_of_blog( $user_id, $blog['blog_id'])){ //Add user with none role add_user_to_blog($blog['blog_id'], $user_id, $none_role); } } } add_action( 'user_register', 'ds_new_user_meta', 10, 2); add_action( 'wpmu_new_blog', 'ds_new_user_meta', 10, 2 ); function login_new_user_meta($login) { $user = get_userdatabylogin($login); $user_id = $user->ID; $blog_list = wp_get_sites(); $none_role = 'none_role'; $user_blogs = get_blogs_of_user( $user_id ); foreach ($blog_list as $blog) { //Get blog name by ID in loop $blog_details = get_blog_details($blog['blog_id']); if(!is_user_member_of_blog( $user_id, $blog['blog_id'])){ //Add user with none role add_user_to_blog($blog['blog_id'], $user_id, $none_role); } } } add_action('wp_login', 'login_new_user_meta');
Ajouter un index FullText sur la table du contenu des commentaires
/** * Alter comments table on new blog for multiselect search */ function wporg_wpmu_new_alter_comments_table( $blog_id, $user_id, $domain, $path, $site_id, $meta ) { global $wpdb; switch_to_blog($blog_id); $queryAlterCommentsTable = "ALTER TABLE ".$wpdb->prefix."comments ADD FULLTEXT(comment_content) "; $wpdb->query($queryAlterCommentsTable); } add_action( 'wpmu_new_blog', 'wporg_wpmu_new_alter_comments_table', 10, 6 );
Envoyer un email aux utilisateurs ayant un brouillon enregistré
Placez le script dans le dossier /wp-content/plugins/cronemail/cronemail.php
<?php require_once('../../../wp-load.php'); //WP global global $wpdb; $blog_list = wp_get_sites(); foreach ($blog_list as $blog) { if ($blog['blog_id'] != 1 && $blog['blog_id'] > 0) { $tablePrefix = $wpdb->base_prefix.$blog['blog_id'].'_'; } else{ $tablePrefix = $wpdb->base_prefix; } $blog_details = get_blog_details($blog['blog_id']); $queryDrafts = "SELECT DISTINCT * FROM ".$tablePrefix."posts WHERE post_status = 'draft' "; $resultDrafts = $wpdb->get_results( $queryDrafts ); if (!empty($resultDrafts)) { foreach ($resultDrafts as $draft) { $queryAuthors = "SELECT DISTINCT * FROM ".$wpdb->base_prefix."users WHERE ID = ".$draft->post_author." "; $resultAuthors = $wpdb->get_results( $queryAuthors ); $user_info = get_userdata($draft->post_author); $subject = '"'.$draft->post_title.'" en brouillon sur '.$blog_details->blogname; $message = "Votre article '".$draft->post_title."'' est enregistré en brouillon sur le blog '".$blog_details->blogname."'.\n\n Merci de le publier ou de le placer dans la corbeille."."\n\n"; $message .= 'Votre article a été enregistré en date du '.$draft->post_date."\n\n"; $message .= 'Le lien vers le blog est '.$blog_details->siteurl."\n\n"; $message .= 'Merci de l\'attention que vous porterez à ce message'; wp_mail( $user_info->user_email, $subject, $message ); } } }
Ajouter un logo personnalisé et des fonds aléatoires sur le login form
Ajoutez les images de fond dans le dossier /custom/img/bg et nommez les de bg1.jpg à bg6.jpg
Insérez au même endroit votre logo, et renommez-le logo.jpg
function custom_login_logo() { $pictures = array("bg1.jpg", "bg2.jpg", "bg3.jpg", "bg4.jpg", "bg5.jpg", "bg6.jpg"); echo '<style type="text/css"> body.login { background-image: url("'.get_bloginfo('template_directory').'/custom/img/bg/'.$pictures[array_rand($pictures)].'"); background-repeat: no-repeat; background-attachment: fixed; background-position: center; } h1 { width: 100%; } h1 a { background-image: url('.get_bloginfo('template_directory').'/custom/img/logo.jpg) !important; background-size:100%!important; width:100%!important;height:120px!important; </style>'; } add_action('login_head', 'custom_login_logo');
Interdire les commentaires sur le blog principal
Pour ajouter ce code, modifiez le fichier comments.php de votre blog
Cela part du principe que vous avez ajouté les variables utiles dans l’en-tête de votre site (voir plus haut)
?> <?php if (!is_main_site($blog_id)) { ?> <!-- le contenu de votre fichier comments.php <?php } ?>
Lien vers le codex WordPress Multisites :
Imprimer
Laisser un commentaire