マルチサイト化した複数のブログの新着記事を表示する[WordPress]
マルチサイト化したWordPressの複数のブログから新着記事を表示するコードの紹介です。プラグインじゃなくテンプレートにコードを書く形です。
まえがき
WordPressをマルチサイト化した際に特定の複数のブログの新着記事を何件か表示したいということは良くあるかと思います。
例えばマルチサイト化したブログのうち、NewsブログとEventブログから新着5件を表示させたいとか。
MovableTypeだと、標準で入っている「Multiblog」プラグインでサクッと実現可能ですが、WordPressの場合そう簡単にはいきません。
いちいちphpからデータベースにアクセスして記事を引っ張ってこなきゃいけません。そのコードを紹介します。
プラグインじゃなくテンプレートにコードを書く形です。
マルチサイト化した複数のブログから新着記事を表示するコード
2013年12月10日 不要な変数代入があったのでコード修正しました。
<?php $sql = ''; $blog_id_arr = array(1,2);//取得するブログIDの配列 $tmp = $blog_id_arr; foreach($blog_id_arr as $b_id){ next($tmp); switch_to_blog($b_id); $sql .= <<<HERE (SELECT *, $b_id as blog_id FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish') HERE; if(current($tmp) !== false){ $sql .= "UNION\n"; } restore_current_blog(); } $sql .= <<<HERE ORDER BY post_date DESC LIMIT 10 HERE; $posts = $wpdb->get_results($sql); ?> <?php foreach ($posts as $post): switch_to_blog($post->blog_id); setup_postdata($post); ?> <?php the_title();?>-<?php the_time('Y.m.d');?><br /> <?php endforeach;?>
こんな感じになります。
3行目で取得したいブログのIDを指定します。この例だとブログIDが「1」と「2」の新着記事を取得します。
$blog_id_arr = array(1,2);//取得するブログIDの配列
22行目で「LIMIT」の数値で表示する件数を指定します。
LIMIT 10
この例だと10件表示します。
まとめ
特定のブログから新着記事を何件か引っ張りたいってことは経験上わりと多いので、このコードは覚えておいて損は無いかな~と思います。
てか、自分用に覚え書きです。
だってコード使って直ぐはいいんですけど、ちょっと間が空くといざ必要になったとき「あれ~いつやったっけ」的なことになって結構探しちゃうときありません?
こうやってブログに書いとけば記事から探せば早いですもんね。
全然関係ないですが、忘れちゃった時とか自力で思い出すと何とかっていう成分が分泌されてボケ防止になるらしいです。
どうでもいいですね。