Kotoriはマルファン症候群という難病を患っています! 今後は、マルファン症候群に関するトピックも扱っていきます!

パンD KOTORI Blogの公式キャラクター「パンD」です。
コーディングWordPressマルチサイト化した複数のブログの新着記事を表示する[WordPress]

マルチサイト化した複数のブログの新着記事を表示する[WordPress]

2013年12月03日WordPress 便利コード マルチサイト 
マルチサイト化した複数のブログの新着記事を表示する[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件表示します。

まとめ

特定のブログから新着記事を何件か引っ張りたいってことは経験上わりと多いので、このコードは覚えておいて損は無いかな~と思います。
てか、自分用に覚え書きです。
だってコード使って直ぐはいいんですけど、ちょっと間が空くといざ必要になったとき「あれ~いつやったっけ」的なことになって結構探しちゃうときありません?
こうやってブログに書いとけば記事から探せば早いですもんね。
全然関係ないですが、忘れちゃった時とか自力で思い出すと何とかっていう成分が分泌されてボケ防止になるらしいです。
どうでもいいですね。

シェアする みんなシェアしてね

フォローする フォローする

いつもKOTORI Blogをご覧いただきありがとうございます。Facebook、Twitterを通じて、皆様と交流していき色んな情報を共有していければな~と思ってます。お気軽に登録してください!

基本フォロー返します。

RSSを登録する

RSSはこちらから。

follow us in feedly

Feedly使ってる人はこちらから。

Buy me a Beer

診断ドットコムでちょっとひと息!
動く!パンDのLINEスタンプ
好きな人にアプローチスタンプ
パンDのLINEスタンプ

関連する記事 関連する記事も読んでみてね

コメント

  • decoya

    8行目の$sql .= <<<HEREで「<<<」が3つあることで、以後の文が全て認識しません。「<<」だと問題ないのですが、この数にどういう意味があるのでしょうか?

  • 音川綾子

    はじめまして。こちらのソースで表示した記事一覧に、ページネーションつけることって可能なのでしょうか。ご教授いただけると
    幸いです・・・

  • kitamura

    いつもお世話になっております!こちらのソースを使わせていただいたところ、
    無事に新着記事を出すことができました!
    が、ひとつ問題が発生しまして・・・。
    jQueryでスムーズスクロールを実装しているのですが、こちらが機能しなくなりました。
    ご教授いただけますでしょうか???
    よろしくお願いいたします!

    • kotoriblog

      kitamuraさん
      コメントありがとうございます。
      この記事のコードはあくまでもphpなのでjsには干渉しないと思われます。。。
      jsはどんなエラー吐いてますか?

      • kitamura

        返信ありがとうございます。
        ただの打ち間違えでしたorz。
        失礼しました!

        • kotoriblog

          kitamuraさん
          返信遅くなりました。
          打ち間違えだったとのことで解決されたようでよかったです!!

  • atu

    はじめましてこんにちは。
    こちらのソースでカテゴリー別、もしくはタグ別に抜き出すことはできるのでしょうか?
    自力ではほとんど分からないので質問させていただきました。

    • kotoriblog

      atuさん
      返事遅れてごめんなさい。

      KoToRiはデータベースは余り分からないので、具体的なコードを示すことが出来ないのですが、不可能では無いはずです。
      この記事とか参考になると思います。
      http://qiita.com/yousan/items/f29e7010a1384c1e1206

      あまりお力になれずごめんなさい。