在 WordPress 中获取用户子站点/多站点 URL

Get User Subsite / Multisite URL in WordPress

我正在寻找一种方法来回显用户子站点的 url,但它似乎只是通过以下功能同时回显帐户的网络和子站点,我可以改进什么?谢谢!

// Add Shortcode
function blog_url_shortcode() {
 if(is_user_logged_in()) {
  global $current_user;
  $blogs = get_blogs_of_user( $current_user->id );
  if($blogs) {
   foreach ( $blogs as $blog ) {
    echo '<li><a href="http://' . $blog->domain . $blog->path .'">' .  $blog->blogname . '</a></li>';
   }
  }
 }
}
add_shortcode( 'blog_url', 'blog_url_shortcode' );

此代码将列出当前用户具有管理员角色的站点。

另外,还有一种获取当前用户 ID 和站点 URL 的新方法,您应该使用它。由于您获取当前用户 ID 的方式,您的代码产生了 PHP 通知。

function blog_url_shortcode() {
    if( is_user_logged_in()) {
        $current_user_id = get_current_user_id();
        $blogs = get_blogs_of_user( $current_user_id );
        foreach ( $blogs as $blog_id => $blog ) {
            $user = new WP_User( $current_user_id, '', $blog_id );
            if ( in_array( 'administrator', $user->roles ) ) {
                echo '<li><a href="' . esc_url( $blog->siteurl ) . '">' .  esc_html( $blog->blogname ) . '</a></li>';
            }
        }
    }
}
add_shortcode( 'blog_url', 'blog_url_shortcode' );