web-dev-qa-db-ja.com

Muプラグインからメインブログのidとdbプレフィックスを取得するにはどうすればいいですか?

Wordpressのマルチサイトインストールで、ブログIDとメインブログのデータベースプレフィックスを取得する方法を教えてください。メインブログのIDは常に1ですか?また、どうやってメインブログのテーブルプレフィックスをmu-pluginのコード内から取得することができるのでしょうか。

5
rsman

定数BLOG_ID_CURRENT_SITEを使用してください。データベーステーブルのプレフィックスを取得するには、を使用します。

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

ネットワークインストールに複数のメインサイトがあるので、これが100%になるようにする方法です。

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

あなたはテーブルの接頭辞を得るために以下を使うことができます。

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

特定のネットワークのメインサイトIDを取得する機能があります(デフォルトはアクティブなネットワークです)。

get_main_site_id();

Dbプレフィックスだけが必要な場合は$wpdb->get_blog_prefix(get_main_site_id())で十分ですが、それ以外の場合はswitch_to_blog()および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();

しかし、switch_to_blog()への再帰呼び出しには注意してください。コンテキストが追跡やデバッグが困難になるためです。

1
Robert Gres