Получить пользовательский сайт / мультисайт URL в WordPress - PullRequest
0 голосов
/ 25 сентября 2018

Я ищу способ отобразить 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' );

1 Ответ

0 голосов
/ 26 сентября 2018

В этом коде будут перечислены сайты, на которых у текущего пользователя есть роль администратора.

Кстати, есть новый способ получения текущего идентификатора пользователя и URL-адреса сайта, который вы должны использовать.Ваш код создал уведомление 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' );
...