Comment obtenir l'ID de blog ainsi que le préfixe de base de données du blog principal dans une installation multisite wordpress? L'ID du blog principal est-il toujours 1? Aussi, comment peut-on acquérir le préfixe de table du blog principal à partir du code du plug-in mu?
Utilisez la constante BLOG_ID_CURRENT_SITE
. Et pour obtenir le préfixe de la table de base de données, utilisez;
$main_blog_prefix = $wpdb->get_blog_prefix(BLOG_ID_CURRENT_SITE);
Voici comment nous procédons à 100%, car nous avons plusieurs sites principaux dans l'installation réseau:
function name_ly_get_main_blog_id () {
global $current_site;
global $wpdb;
return $wpdb->get_var ( $wpdb->prepare ( "SELECT `blog_id` FROM `$wpdb->blogs` WHERE `domain` = '%s' AND `path` = '%s' ORDER BY `blog_id` ASC LIMIT 1", $current_site->domain, $current_site->path ) );
}
Vous pouvez utiliser ce qui suit pour obtenir le préfixe de la table.
current site table prefix : $wpdb->prefix;
Main blog table prefix : $wpdb->base_prefix;
Il y a une fonction pour obtenir l'identifiant du site principal pour un réseau donné (par défaut, le réseau actif)
get_main_site_id();
Si vous avez seulement besoin du préfixe de la base de données, $wpdb->get_blog_prefix(get_main_site_id())
suffira, mais vous pouvez également basculer de manière transparente sur des blocs de code entiers dans le contexte d'un autre blog avec les fonctions switch_to_blog()
et restore_current_blog()
.
switch_to_blog(get_main_site_id());
global $wpdb; // it's now in the main site's context
$prefix = $wpdb->prefix;
// ... do your stuff
restore_current_blog();
Mais méfiez-vous des appels récursifs à switch_to_blog()
, car alors le contexte devient difficile à suivre et à déboguer