web-dev-qa-db-fra.com

Comment obtenir l'id du blog principal et le préfixe de la base de données à partir d'un plugin mu?

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?

5
rsman

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);
8
TheDeadMedic

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 ) );
}
3
Name.ly

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;
1
lalithkumar

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

1
Robert Gres