it-swarm.com.de

Wie bekomme ich die ID und das DB-Präfix des Hauptblogs von einem Mu-Plugin?

Wie kann man in einer WordPress-Installation mit mehreren Sites die Blog-ID sowie das Datenbankpräfix des Hauptblogs abrufen? Ist die ID des Hauptblogs immer 1? Wie kann das Tabellenpräfix des Hauptblogs im Code des mu-plugins abgerufen werden?

5
rsman

Verwenden Sie die Konstante BLOG_ID_CURRENT_SITE. Verwenden Sie, um das Präfix der Datenbanktabelle abzurufen.

$main_blog_prefix = $wpdb->get_blog_prefix(BLOG_ID_CURRENT_SITE);
8
TheDeadMedic

So machen wir es zu 100%, da wir mehrere Hauptstandorte in der Netzwerkinstallation haben:

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

Sie können das folgende verwenden, um das Tabellenpräfix zu erhalten.

current site table prefix : $wpdb->prefix;
Main blog table prefix : $wpdb->base_prefix;
1
lalithkumar

Es gibt eine Funktion zum Abrufen der Hauptstandort-ID für ein bestimmtes Netzwerk (standardmäßig das aktive Netzwerk).

get_main_site_id();

Wenn Sie nur das Präfix db benötigen, würde $wpdb->get_blog_prefix(get_main_site_id()) ausreichen, aber ansonsten können Sie ganze Codeblöcke nahtlos mit den Funktionen switch_to_blog() und restore_current_blog() in den Kontext eines anderen Blogs verschieben

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();

Aber seien Sie vorsichtig bei rekursiven Aufrufen von switch_to_blog(), da der Kontext dann schwer zu verfolgen und zu debuggen ist

1
Robert Gres