2015/06/21WordPressの投稿内容についてある特定の条件を満たす投稿を絞り込んで、エクスポートしたデータをエクセルで扱いたい。詳細の絞り込みもできないし、何よりxml形式なのでエクセルで一覧として取り扱うにはちょっと無理がある。いう訳で管理画面のエクスポートはあきらめてphpMyAdminからSQLで絞り込んでエクスポートをする事にした。・特定のキーワードを含む投稿を絞り込む・特定のカテゴリーに属する投稿を絞り込む上記2点についてメモを残す。■特定のキーワードを含む投稿を絞り込むDB上で投稿内容はwp_postsテーブルに入っている。投稿名はpost_nameのカラムにデータが入っている。今回は投稿名(post_name)に「news」が含まれる投稿を絞り込んだ。'%news%')上記のSQLをphpMyAdminのSQLタブから実行する。結果はすべてのカラムではなく、タイトル(post_title)と本文(post_content)だけで良ければ下記のSQL。'%news%')で次の画面で一番下のエクスポートをクリック。Workbookを選択して実行すればエクセル形式でエクスポートが可能だ。■特定のカテゴリーに属する投稿を絞り込むカテゴリーに関連するテーブルはwp_term_relationshipsとwp_term_taxonomyだ。先程のwp_postsにはIDというカラムがあり、そのIDがwp_term_relationshipsのobject_idと紐づいている。あるひとつのカテゴリーIDに属する投稿を絞り込むのであれば特に複雑ではない。wp_term_relationshipsテーブルのterm_taxonomy_idカラムに含まれるカテゴリーIDでobject_idを絞り込む。そのobject_idをwp_postsのIDカラムで絞り込めばOKだ。wp_term_relationshipsテーブルで絞り込む際のSQL。ここでは絞り込むカテゴリーIDは103とする。103)上記のSQLで絞り込んだobject_idを使ってwp_postsで絞り込む。下記のようにSELECTを入れ子にするのはサブクエリと呼ぶはず。))で、先程と同じようにエクセル形式で出力をすればOKだ。問題は親子カテゴリーになっている投稿をまとめて絞り込む場合だ。親子情報についてはwp_term_relationshipsの先でwp_term_taxonomyというテーブルに記録されている。あるカテゴリーの親カテゴリーIDが13だった場合にはwp_term_taxonomyテーブルにparentカラムがあり、そこに13が入る事で親子関係を記録している。下記のような親子関係のカテゴリーがあったとする。親子関係を調べたうえでそのカテゴリーIDに属する投稿を絞り込む必要がある。カテゴリーIDが13を親(parent)にもつterm_taxonomy_idを絞り込む。親カテゴリーID(13)も含めたい場合は下記のSQL。13)さらに孫カテゴリーがある場合は、サブクエリで深くすれば対応が可能だ。この絞り込んだterm_taxonomy_idに属するobject_idをwp_term_relationshipsテーブルで絞り込む。))この絞り込まれたobject_idをwp_postsテーブルで絞り込む。))同じくエクセル形式でエクスポートが可能だ。