WordPressでマルチサイトで構築されているサイト(ネットワーク)にて、子サイト(各ブログ)の一覧・情報を表示する

子サイト(各ブログ)の一覧を表示する

 

<?php
$blog_list = get_blog_list( 0, 'all' );
foreach ( $blog_list as $blog ) {
?>
<pre>
<?php
print_r($blog);
?>
<pre>
<?php
}
?>

ループで表示する1サイト分の例。下記のような4つの情報[blog_id][domain][path][postcount]が取得(表示)できる。ただ、上記関数で取得できる値は上記4つだけ。

Array
(
[blog_id] => 5
[domain] => web.example.net
[path] => /
[postcount] => 532
)

このままサイトに表示するにはいまいちなので、せめてリンクが自動的に表示されて行き来できるようにしたいところ。以下のようにします。

<?php
$blog_list = get_blog_list( 0, 'all' );
$blog_list_r = array_reverse( $blog_list );
?>
<ul>
<?php
foreach ( $blog_list_r as $blog ) {
// ブログを切り替える
switch_to_blog( $blog[blog_id] );
?>
<li><a href="<?php echo home_url('/'); ?>"><?php echo bloginfo('name'); ?></a></li>
<?php
// ブログを元に戻す
restore_current_blog();
?>
<?php
}
?>
</ul>

<pre>で表示したときに気づいた人もいるかもしれませんが、ブログは新しい順に取得されるので、ID=1から表示させるためには、逆にひっくり返す必要があります。