ここはちょっと見せられない

ぜったいぜったい見せられない

マルチサイト上のすべてのサイトの特定のカテゴリの記事を拾う

こういうSQLをぬるっと書けば良い。
余計な条件も書いてあるのは見る人が見れば分かる。
あははん。
全部拾いたいなら全部書けばいいけど、そんなん面倒くさいから動的に書くでしょ。

postgresql ならviewが作れたはずだけどな。。。。とか思って調べたらmysqlでも使えるようになってた。view登録するのもありやな。

SELECT * FROM wp_posts AS p1
JOIN wp_term_relationships AS tr1 ON tr1.object_id = p1.ID
JOIN wp_term_taxonomy AS tx1 ON tx1.term_taxonomy_id = tr1.term_taxonomy_id
JOIN wp_terms AS tm1 ON tx1.term_id = tm1.term_id 
WHERE post_status = 'publish'
AND post_type = 'post'
AND tm1.slug = '<slug>'
AND tx1.taxonomy = 'category'
UNION
SELECT * FROM wp_2_posts AS p2
JOIN wp_2_term_relationships AS tr2 ON tr2.object_id = p2.ID
JOIN wp_2_term_taxonomy AS tx2 ON tx2.term_taxonomy_id = tr2.term_taxonomy_id
JOIN wp_2_terms AS tm2 ON tx2.term_id = tm2.term_id 
WHERE post_status = 'publish'
AND post_type = 'post'
AND tm2.slug = '<slug>'
AND tx2.taxonomy = 'category'
ORDER BY post_date DESC

実際使うにはもうすこし工夫がいるんだけどそれは書かない。

ていうか、せっかく同じDBん中にデータ入ってるのになんで使わないのよ・・・
DBに任せた方が早いに決まってるじゃないの。


追記:

マルチサイト系の関数に、もしかしたら追加されてるかもしれないと思って探したけど、やっぱり未だにない。

あるのは get_blog_post() get_most_recent_post_of_user() くらいで、他に新着を拾うような関数ないし。

マルチサイト機能入れてんのに、そういうのができないのって結構片手落ちな感じする。