Home Arrow Icon Knowledge base Arrow Icon WordPress Code Related Arrow Icon How to interact with WordPress Multisite Programmatically
edit

Comment interagir avec WordPress Multisite par programmation

WordPress Multisite : Un guide complet pour les développeurs avec des exemples de code

WordPress Multisite est une fonctionnalité puissante qui vous permet de créer et de gérer plusieurs sites Web à l'aide d'une seule installation WordPress. Il offre de nombreux avantages, tels qu'une gestion centralisée, des ressources partagées et une maintenance simplifiée. Dans cet article, nous explorerons le concept de WordPress Multisite, discuterons de ses avantages et fournirons des exemples de code pour vous aider à exploiter tout son potentiel.

  1. Configuration du multisite WordPress : Pour activer la fonctionnalité Multisite, vous devez apporter quelques modifications à votre installation WordPress. Suivez ces étapes :

Étape 1 : Sauvegardez vos fichiers et votre base de données WordPress. Étape 2 : Ouvrez le fichier wp-config.php et ajoutez la ligne suivante au-dessus du commentaire "C'est tout, arrêtez d'éditer !" :

 
define( 'WP_ALLOW_MULTISITE', true );

Étape 3 : Enregistrez le wp-config.php file et refresh your WordPress admin dashboard. Step 4: Go to "Tools" → "Network Setup" and follow the on-screen instructions.

  1. Configuration des paramètres réseau multisite : Après avoir configuré WordPress Multisite, vous devez configurer ses paramètres réseau. Voici les étapes :

Étape 1 : Choisissez entre une structure de sous-domaine ou de sous-répertoire :

  • Structure de sous-domaine :
    • Configurez les sous-domaines génériques (*.votredomaine.com) pour qu'ils pointent vers votre installation WordPress.
    • Sélectionnez le \ Option "Sous-domaines" lors de la configuration du réseau.
  • Structure des sous-répertoires :
    • Aucune configuration du serveur n'est requise.
    • Sélectionnez l'option "Sous-répertoires" lors de la configuration du réseau.

Étape 2 : Définir les détails du réseau :

  • Entrez le titre du réseau et l'adresse e-mail de l'administrateur.
  • Personnalisez les adresses e-mail de l'administrateur réseau et de l'administrateur du site si nécessaire.

Étape 3 : terminez l'installation :

  • Cliquez sur le bouton "Installer".
  • Suivez les instructions fournies pour mettre à jour vos wp-config.php and .htaccess files.
  1. Gestion du réseau multisite : Une fois le Multisite mis en place, la gestion du réseau devient cruciale. Voici comment naviguer dans le réseau multisite et effectuer des tâches essentielles par programmation :
  • Accès à l'administrateur réseau :
    • Pour accéder au tableau de bord d'administration réseau par programmation, vous pouvez utiliser le code suivant :
 
switch_to_networkcrochet d'action. Voici un exemple qui envoie un e-mail de notification à l'administrateur du site$message: get_main_site_id'Notification de création de site''wpmu_new_blog' get_userdata
  • Création de nouveaux sites :
    • Utilisez la fonction wpmu_create_blog); }) pour créer de nouveaux sites par programme :
 if
wpmu_create_blog; $newdomain'limit_site_creation_to_super_admins' $pathVoici quelques exemples de code supplémentaires(: $titleLimitation Création de site pour les super-administrateursPersonnalisation de la suppression de sites multisites : Pour effectuer des actions supplémentaires lorsqu'un site est supprimé dans Multisite'Site supprimé : ' vous pouvez utiliser le hook d'action ;: Si vous souhaitez restreindre la création de sites aux super-administrateurs uniquement'erreurs' vous pouvez utiliser le filtre Copier le code ! $meta'nouveau-thème'if ) Restreindre l'accès à l'administration multisite'manage_network': Si vous souhaitez restreindre l'accès au tableau de bord d'administration multisite aux super-administrateurs uniquement'ID du site : ' vous pouvez utiliser le hook d'action get_sites ) $ site_id retour
  • Basculement vers un site$sites:
    • Pour basculer par programme vers un site spécactionaction. Voici un exemple : Voici un exemple qui enregistre la suppression d'un site :ique au sein du réseau) .$sites utilisez le code suivant :
 
'newsite$sitesexample$sitecom'foreach Récupération d'une liste de sites du réseau) '

Site : ')$sites: Pour récupérer une liste de sites du réseau Multisitefonction avec la fonction vous pouvez utiliser la fonction

  • Gestion des plugins et des thèmes réseau)->ID ).) :
    • Vous pouvez activer ou désactiver par programme les plugins et les thèmes pour l'ensemble du réseau à l'aide de activate_plugin') { DomaineCréation d'un menu personnalisé dans le tableau de bord d'administration réseau : Pour ajouter un élément de menu personnalisé au tableau de bord d'administration réseau dans Multisite, vous pouvez utiliser le : ')'

      Chemin : ' deactivate_plugins'settings, // Capacité requisephp' Voici un exemple :) et 'menu_admin_réseau' Voici un exemple :'Menu personnalisé') fonctions)

  1. Hooks et filtres spécadd_submenu_pagefonction)iques au multisite : WordPress Multisite fournit des hooks et des filtres supplémentaires pour étendre ses fonctionnalités. Voici quelques exemples :
  • wp_initialize_site:

    • Se déclenche lorsqu'un nouveau site est créé.
    • Vous permet d'effectuer des actions personnalisées lors de l'initialisation du site.
  • Problèmes courants et solutions ::

    • Ajoute des éléments de menu personnalisés au tableau de bord de l'administrateur réseau.
    • Utile pour étendre les fonctionnalités du réseau.
  • wpmu_new_user:

    • Déclenche lorsqu'un nouvel utilisateur est ajouté au réseau.
    • Permet de personnaliser le processus d'enregistrement des utilisateurs.

ConclusionSolution : régénérez les règles de réécriture en visitant la page "Paramètres" â "Permaliens" dans le tableau de bord de l'administrateur réseau et en cliquant sur le bouton "Enregistrer les modifications".: WordPress Multisite est une fonctionnalité puissante qui peut rationaliser la gestion de plusieurs sites Web au sein d'une seule installation WordPress. En suivant les étapes décrites dans ce

Voici quelques exemples de code :

  1. Ajout d'utilisateurs par programme aux sites : Pour ajouter des utilisateurs à des sites spécifiques au sein du réseau multisite'Seuls les super-administrateurs peuvent créer de nouveaux sites.' vous pouvez utiliser le ._user_to_blog.juste au-dessus du commentaire "C'est toutfalse arrêtez d'éditer !" : fonction. Voici un exemple :
 // Fonction de rappel pour afficher la page action hook pour afficher un message d'erreur si un plugin en conflit est actif'check_for_plugin_conflicts':Solution : assurez-vous que les sous-domaines génériques sont correctement configurés pour pointer vers votre installation WordPress. Contactez votre fournisseur d'hébergement pour obtenir de l'aide si nécessaire. )
Copier le code = '

Domaine; } }: ' 'élément_menu_réseau_personnalisé' 'check_for_theme_issues' 'username' )->ID'network_admin_notices' ._id = '='Dépannage des problèmes liés au thème : Si vous rencontrez des problèmes avec les thèmes de votre réseau multisiteCopier le code suivez ces étapes pour résoudre le problème.: // Slug du menu parent _user_to_blogCréation par programme d'un nouveau site et attribution d'un thème : Pour créer par programme un nouveau site dans Multisite et lui attribuer un thème spécInspection des tables de base de données : Si vous soupçonnez des problèmes avec les tables de la base de données multisiteget_blog_prefix vous pouvez utiliser le iqueget_results // Titre de la page vous pouvez utiliser le =_idCopier le code $user_idBasculez temporairement vers un thème par défaut pour afficher un message d'erreur si un thème spécifique pose des problèmes :par exemple, Twenty Twenty-One$wpdb pour vérifier si le problème est lié au thème actuel. 'abonné' .

  1. Personnalisation de l'enregistrement multisite : Si vous souhaitez personnaliser le processus d'enregistrement des utilisateurs pour Multisite, vous pouvez utiliser le wpmu_validate_user_signup filter. Voici un exemple qui vérifie un champ d'inscription personnalisé nommé "entreprise":
 
Désactivez tous les plugins du réseau et vérifiez si le problème persiste. Sinon, réactivez chaque plugin un par un pour identifier le plugin en conflit. custom_validate_user_signupCopier le code avec une boucle pour récupérer et afficher les informations du site. Voici un exemple : ) , if , // Titre du menu issetCopier le code Copier le code 'entreprise'] ) $user_id; $_POST6fonction, ='WP_DEBUG_DISPLAY ',$user_idadd= ,, __) ,, ) $site_id ) ;, ,get_blog_prefix ) Dépannage des conflits de plugins : Si vous rencontrez des problèmes avec les plugins de votre réseau multisite, suivez ces étapes pour résoudre le problème :, = Utilisez le hook d'action
  1. $table_prefix wpmu_new_blog fonction
 
function send_site_creation_notification= , $user_id, $domain, $path, ,_id, $meta ) -> 'custom- menu'_url = {( $blog_id $results $admin_email = filter. Voici un exemple :( $user_id )->user_email; ) = { ,_url."; wp_mail( $admin_email, [, $message ajouter (( ,, 'send_site_creation_notification', 10, 6 "SELECT * FROM
  1. $résultat ); Changement de thème par programmation pour un site : Pour changer de thème par programme pour un site spécifique au sein du réseau multisite, vous pouvez utiliser la fonction
 
function limit_site_creation_to_super_admins( $result ) { if is_super_adminfonction $result[$blog_id]->add( 'super_admin_only', __( Copier le code, , ( , $result} add_filter( 'wpmu_validate_blog_signup', Copier le code );

=

  1. get_main_site_id wp_delete_site switch_to_blog
 
function log_site_deletion( $blog_id ) { error_log( admin_init . $blog_id ); } // Remplacer par l'ID de site souhaité( 'wp_delete_site', 'log_site_deletion' );
  1. ; switch_theme() (
 
$site_id = get_main_site_id; switch_to_blog( $site_id ); switch_theme( Copier le code ); ( Afficher une liste de sites dans un réseau multisite sur une page : Pour afficher une liste de sites du réseau multisite sur une page, vous pouvez utiliser la fonction
  1. $site admin_init (
 
function restrict_multisite_admin_access() { if ( ! current_user_can( $site - >domaine . ', Chemin : '( $site ->chemin . ,( __( (, 'text-domain' fonction. Voici un exemple : add_action( ., 'restrict_multisite_admin_access' );
  1. // Attribuer le thème = (
 
= = get_sites Copier le code ( ; as $site 'admin @example.com' add_action '

URL du site : ' . $site->blog_id . // Créer le nouveau site . $siteUtilisez le hook ( . $site'Menu personnalisé' '<br>'; }

,

  1. get_user_by wpmu_create_blog() 'login' switch_theme() );
 
$new_site_domain = $site; $new_site_path = '/'; $new_site_title = restore_current_blog; $new_site_admin = 'admin'; Copier le code = =; $theme_to_assign = 'twentytwenty'; as $new_site_id = wpmu_create_blog( $new_site_domain, $new_site_path, $new_site_title, get_user_by( 'login', $new_site_admin ; Comment interagir avec WordPress Multisite par programmation switch_to_blog( $new_site_id ); ); switch_theme( $theme_to_assign ); get_site_url restore_current_blog();
  1. ; // Ajoutez le contenu de votre page personnalisée ici ; }
 
crochet d'action avec la fonction = get_sites(); foreach ( Activation du débogage pour le dépannage : Pour activer le débogage dans WordPress Multisite et obtenir des messages d'erreur plus détaillés, vous pouvez ajouter le code suivant au fichier as $site { echo ( . $site->blog_id . '</h2>'; echo ( . $site->domain . '</p>'; echo ( . $site->path . '</p>'; echo ( . get_site_url( $site->blog_id ) . '</p>'; }
  1. Dépannage WordPress multisite : network_admin_menu Problème : erreur "ERR_TOO_MANY_REDIRECTS" lors de l'accès à un site du réseau. Solution : Vérifiez les paramètres d'URL du site dans le tableau de bord de l'administrateur réseau. Assurez-vous qu'ils sont correctement configurés avec la structure de sous-domaine ou de sous-répertoire choisi. Problème : règles de réécriture manquantes ou incorrectes.
 
function custom_network_menu_item() { add_submenu_page( (); ,fonction );= 'manage_network' ,, // Menu slug 'custom_menu_page_callback' ( add_action( ,, ); ); function custom_menu_page_callback() { echo fonction; ( }

{

  1. if
  • (

    • fonction pour récupérer le préfixe de table d'un site spécifique, puis inspecter les tables correspondantes.
  • (

    • Solution: Regenerate the Rewrite Rules by visiting the "Settings" → "Permalinks" page in the network admin dashboard and clicking the "Save Changes" button.
  • $site_id

    • echo
  1. '

    Le plugin en conflit est actif. Veuillez le désactiver.

    ' wp-config.php add_action
 
define( 'WP_DEBUG', true ); define( 'WP_DEBUG_LOG', true ); define( {, ( );
  1. $posts_table
  • 'votre -theme-folder/your-theme-style.css'
  • ); network_admin_notices '

    Le thème pose des problèmes. Veuillez passer à un autre thème.

    '
 
function check_for_plugin_conflicts() { if ( is_plugin_active( Copier le code ) ) { echo '<div class="error"><p>Conflicting Plugin is active. Please deactivate it.</p></div>'wordpress multisite, exemples de code multisite, wp multisite, dépannage multisite wordpress, réseau multisite, thème multisite, thème multisite wordpress add_action( 'network_admin_notices', ( );
  1. );
  • // Exemple : Inspectez la table des publications pour l'ID de site 2
  • $posts_table network_admin_notices $table_prefix
 
function check_for_theme_issues() { if ( get_stylesheet() === " ) { echo '<div class="error"><p>Theme is causing issues. Please switch to a different theme.</p></div>'; } } add_action( 'network_admin_notices', 'check_for_theme_issues' );
  1. Inspecting Database Tables: If you suspect issues with the Multisite database tables, you can use the get_blog_prefix() function to retrieve the table prefix for a specific site and then inspect the corresponding tables.
 
$site_id = 2; // Replace with the desired site ID $table_prefix = get_blog_prefix( $site_id ); // Example: Inspect the posts table for site ID 2 $posts_table = $table_prefix . 'posts'; $results = $wpdb->get_results( "SELECT * FROM $posts_table" );