今回は、前回の続きで、「UNION ALL」で1つにまとめたデータを投稿日順に並び替えたいと思います。

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

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

 

スポンサーリンク

はじめに

前回までのつづき

今回やりたいこと

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

制作環境 / テスト環境

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

情報

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

1つにまとめたデータを投稿日順に並び替える

前回までで、ブログIDを含め1つのデータにまとめることができました!

各テーブルの必要なデータが一つのデータとしてまとまって取得できるようになったので、今度、このまとまったデータを投稿日順で並び替えをします。

「UNION ALL」でまとめたデータを投稿日順に並び替える

投稿日順は、まとめたデータ内の「post_date」で並び替えをおこないます。

「ORDER BY」で並び替え

「UNION ALL」でつないだSELECT文を囲っている「FROM ( ) u」の後に、「ORDER BY」で続けます。

今回は、投稿日で並び替えたいので「post_date」で並び替えをしますが、「UNION ALL」で1つにまとめたデータを並び替えるので、「u.post_date」とします。

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
	ORDER BY u.post_date DESC

 

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

まとめ

日付順に並び替えることができました!

次は、取得する件数を指定するところからやりたいと思います。

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

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

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


スポンサーリンク