Wordpressのマルチサイトインストールで、ブログIDとメインブログのデータベースプレフィックスを取得する方法を教えてください。メインブログのIDは常に1ですか?また、どうやってメインブログのテーブルプレフィックスをmu-pluginのコード内から取得することができるのでしょうか。
定数BLOG_ID_CURRENT_SITE
を使用してください。データベーステーブルのプレフィックスを取得するには、を使用します。
$main_blog_prefix = $wpdb->get_blog_prefix(BLOG_ID_CURRENT_SITE);
ネットワークインストールに複数のメインサイトがあるので、これが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 ) );
}
あなたはテーブルの接頭辞を得るために以下を使うことができます。
current site table prefix : $wpdb->prefix;
Main blog table prefix : $wpdb->base_prefix;
特定のネットワークのメインサイト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()
への再帰呼び出しには注意してください。コンテキストが追跡やデバッグが困難になるためです。