小ネタ〜
自分用メモを兼ねた小ネタです。
とある理由で、Wordpressに投稿した記事一覧をカテゴリ付きで抽出したくなりました。
「投稿一覧」からひとつひとつコピペしてもいいんですけど、ちと面倒なのもありWordpressのデータベースに直接アクセスしてゴニョゴニョしたいな、と。
その時にどうやったか的なのをアレするのがこのエントリです。
まず最初にDB構造を調べないとね
WordPress、結構いろいろなテーブルがありますよね。
……ってことで、まずはWordpressのデータベース構造を調べますよ_ノ乙(、ン、)_
WordPress Codex日本語版に、そのものズバリがまとめられているので参照します。
後はSQLをゴリゴリ書くだけ〜
データベースについてなんとなく分かった気になったら、あとはそいつらから欲しいデータをゲットするだけですね。
今回欲しいのは、
- タイトル
- Permalink1)いわゆる投稿のスラッグなんですが、
直感に反して「wp_post
.post_name
」ってカラム名っぽいです - 投稿者
- カテゴリ
の4つ。
テーブル的には、
- wp_posts2)投稿に関する情報が含まれているテーブル
- wp_users3)ユーザに関する情報が含まれているテーブル
- wp_terms4)(厳密には違うけど)カテゴリ名が含まれているテーブル
- wp_term_relationships5)wp_termとwp_term_taxonomyを紐付けるデータが含まれたテーブル
- wp_term_taxonomy6)対応するwp_termの情報がナニモノなのかを管理するためのテーブル
を参照すればよさげです。
そこで書いてみたSQLがこちら。例によってGitHubのGistに載せてます。ちなみに、今回は使わないけどそのうち使いそうなデータも一緒に引っ張ってきてます。
……なお、当方SQL苦手系男子なので、「もっと良い方法があるよ!」ってのがあればおしえてくだちゃい(´・ω・`)
wp_postsのpost_statusが「publish」でpost_typeが「post」なやつが、公開済みの投稿らしいです。
データベースに直接アクセスできる環境に限定された話になりますが……。SQL一発で必要な情報がゲットできると嬉しいときも希によくあるかと思うので、アレしておくとよさげですね(`・ω・´)
おまけ
このSQLを作る際に、データベース構造についてゴニョゴニョするために作ったSQLも晒しておきます。大したものではないので、アレですが(;´Д`)
ユーザの情報を取得するSQLはこちら。
カテゴリの一覧を取得するSQLはこちら。