如何从MU插件中获取主博客的id和db前缀?

时间:2010-12-09 作者:rsman

如何在wordpress多站点安装中获取博客ID以及主博客的数据库前缀?主博客的ID是否始终为1?另外,如何从mu插件的代码中获取主博客的表前缀?

4 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

使用常量BLOG_ID_CURRENT_SITE. 并获取数据库表前缀,使用;

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

SO网友:Name.ly

这是我们如何做到百分之百的,因为我们在网络安装中有多个主要站点:

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

SO网友:lalithkumar

您可以使用下面的来获取表前缀。

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

SO网友:Robert Gres

有一个函数可以获取给定网络的主站点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(), 因为这样上下文就很难跟踪和调试

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?