获取多站点中用户的当前博客URL?

时间:2013-11-19 作者:lol5433

我有一个WordPress多站点安装和几个博客。在frontpage(domain.com)上,我有一个登录表单,当用户登录时,它会显示两个链接(管理面板和注销)。但我还想包括一个指向用户当前博客站点的链接,例如:blog。领域com。

<li class="showblog"><a href="<?php <some code> ?>">Show blog</a></li>

2 个回复
SO网友:Lafif Astahdziq

尝试使用此函数,,

function get_primary_blog_url($id=null) {
  // is there a user to check?
  global $current_user;
  $user_id = (null != $id ) ? $id : $current_user->ID;

  if ( isset( $user_id ) ) {
    // Get the blogs of this user
    $user_blogs = get_blogs_of_user( $user_id );

    // Get the URL of the blog
    foreach ( $user_blogs AS $user_blog ) {
      if ( $user_blog->userblog_id != BLOG_ID_CURRENT_SITE ) { 
        return $user_blog->siteurl;
      }
    }
    // If user has no blog, return to the homepage.
  } else {
    return home_url();
  }
}

SO网友:s1lv3r

“The”current blog“在WPMU术语中,是指当前实际显示的博客。换句话说,当前查看的页面的博客上下文或global $blog_id. 在正常的wp安装中,您将使用site_url() 检索该博客的链接(只需指出这一点,以免以后被这句话弄糊涂。)

我想你正在搜索的是属于该用户的博客的url。这方面没有直接的功能。获取此信息的最佳方法是使用get_blogs_of_user() 获取用户附加到的博客列表。如果您的设置配置为一个用户只能拥有一个博客,那么您可以使用该数组中的第一个元素。

简单示例:

<?php
    $blogs = get_blogs_of_user( get_current_user_id() );
    $link = get_site_url($blogs[0]->userblog_id);
?>
<li class="showblog"><a href="<?php echo $link; ?>">Show blog</a></li>

结束

相关推荐

Copy Root Multisite Site

我在WordPress中创建了一个多站点安装,位于example.com 网站位于example.com/site1, example.com/site2 等是否可以创建example.com 在example.com/site3?Blog Copier 和NS cloner 由于某种原因,不允许您创建根站点的副本。这背后的技术限制是什么?