今回は、前回の続きで、ブログIDを前回「UNION ALL」でまとめたデータに追加したいと思います。

wordpressのマルチサイトで各サイト(ブログ)の記事を混ぜて一覧表示する

  1. wordpressのマルチサイトで各サイトの記事を混ぜて表示する方法を考える
  2. MySQL – サイト毎に分かれている投稿テーブルを1つにまとめる
  3. MySQL – ブログIDを追加する
  4. MySQL – 1つにまとめたデータを投稿日順に並び替える
  5. MySQL – 1つにまとめたデータに取得件数を指定する
  6. 完成版(ページングなし) – wordpressのマルチサイトで各サイトの記事を混ぜて一覧表示する

スポンサーリンク

はじめに

前回までのつづき

今回やりたいこと

シリーズを通してやりたいこと / ゴール

制作環境 / テスト環境

  • wordpress サブディレクトリ型のマルチサイト

情報

今回は、下記の条件・情報でおこないたいと思います。

ブログIDを前回「UNION ALL」でまとめたデータに追加する

前回までで、サイトごとのテーブルを1つにまとめることができました!

このうち、ブログIDはまだ入れていなかったので、今回はブログIDを追加していきます。

イメージは、下記のような感じで、前回まとめたデータに追加というよりは、サイト毎のSELECT文にブログIDを追加してからまとめます。

サイト毎のSELECT文にブログIDを追加

サイト毎のSELECT文にブログIDを追加するには、MySQLの「INNER JOIN」を使用します。

指定したブログIDと同じ値を持つ「wp_blogs」テーブル内の「blog_id」
を追加して、取得してくることにします。

MySQL 「INNER JOIN」

SELECT *
	FROM
	(
		SELECT
			wp_posts.ID,
			wp_posts.post_date,
			wp_blogs.blog_id
		FROM wp_posts
		INNER JOIN wp_blogs
			ON (
				wp_blogs.blog_id = 1
			)
		WHERE post_status = 'publish'
		AND post_type = 'news'

		UNION ALL

		SELECT
			wp_2_posts.ID,
			wp_2_posts.post_date,
			wp_blogs.blog_id
		FROM wp_2_posts
		INNER JOIN wp_blogs
			ON (
				wp_blogs.blog_id = 2
			)
		WHERE post_status = 'publish'
		AND post_type = 'post'

		UNION ALL

		SELECT
			wp_3_posts.ID,
			wp_3_posts.post_date,
			wp_blogs.blog_id
		FROM wp_3_posts
		INNER JOIN wp_blogs
			ON (
				wp_blogs.blog_id = 3
			)
		WHERE post_status = 'publish'
		AND post_type = 'info'
	) u

 

wordpressのDBを確認するには管理画面から確認できる「ARI Adminer」が便利です!

まとめ

これで、ようやくブログID込みで1つのデータで取得できるところまで、きました!

次回は、今回のこのデータを投稿日順に並び替えるところからやりたいと思います。

wordpressのマルチサイトで各サイト(ブログ)の記事を混ぜて一覧表示する

  1. wordpressのマルチサイトで各サイトの記事を混ぜて表示する方法を考える
  2. MySQL – サイト毎に分かれている投稿テーブルを1つにまとめる
  3. MySQL – ブログIDを追加する
  4. MySQL – 1つにまとめたデータを投稿日順に並び替える
  5. MySQL – 1つにまとめたデータに取得件数を指定する
  6. 完成版(ページングなし) - wordpressのマルチサイトで各サイトの記事を混ぜて一覧表示する

参考にさせていただきました


スポンサーリンク