メモ:特定のタグを含んだ関連する記事のタグクラウドを取得

どういう意味かというと、WordPressで例えば「美味しいラーメン屋さん」というタイトルで「グルメ、ラーメン、安い」というタグが関連付けられている場合に関連記事を表示するという仕様で同一タグを含む記事一覧を取得するというのはよくあるのですが、そうではなく「ラーメン」というタグを含む記事の中で記事ではなく「ラーメン」以外のタグを関連タグとして取得するというもの。

なので「美味しいラーメン屋さん」という記事で「グルメ、ラーメン、安い」というタグの中から「ラーメン」というタグをクリックした時に「ラーメン」というタグを含む全ての記事の持つ他のタグ「はやい、こってり、おすすめ」といったタグだけを関連として抽出するというもの。

しかもタグの並び順として①タグの最終更新日順で②タグの記事カウント順というありそうでなかったややこしそうなもの。記事でなくタグを取得というのがミソでどうしようかと考えたのですが直接SQLを使うことにしました。

 

最初にwp_term_taxonomyとwp_postsをJOINして記事の作成順でソートさせて該当するタグIDを含むサブクエリとタグの記事の取得件数を持つwp_term_relationshipsをJOINさせて取得。

HTMLでは該当するタグに関連するものなので当該のタグ以外いのものをHTMLと描き出し

とりあえずできたけどどうなんだろ

[`evernote` not found]
[`yahoo` not found]