CSVのヘッダーをハッシュのキーとして使って行の要素にアクセスする
ruby-2.0.0-p0
CSVを読み込む時に配列要素番号で拾うと後で読む気がしなくなります。
# test.csv id, name 1, a 2, b 3, c
# array_to_hash.rb require "csv" csv = CSV.open("test.csv") header = csv.shift csv.each do |row| p Hash[header.zip(row)] end
$ ruby array_to_hash.rb {"id"=>"1", " name"=>" a"} {"id"=>"2", " name"=>" b"} {"id"=>"3", " name"=>" c"}
Wordpressから記事とカテゴリとカスタムフィールドとアイキャッチ画像パスを取得するSQL
Wordpressのデータベースから記事、カテゴリ、タグ、アイキャッチ画像、カスタムフィールドを取得した時に使ったSQLを書いていく。
誰かの参考になれば。
以下のSQLは自分の環境での話なのでWhere句を変更すればだいたいどの環境でも似た結果が得られると思う。
記事とカテゴリをとってくる
select * from wp_term_taxonomy T LEFT JOIN wp_terms TS ON TS.term_id = T.term_id LEFT JOIN wp_term_relationships R ON T.term_taxonomy_id = R.term_taxonomy_id LEFT JOIN wp_posts P ON P.ID = R.object_id where P.post_type != 'revision' and TS.name != 'non' and T.taxonomy = 'category' and T.term_id != 40 and T.term_id != 12 and P.post_status = 'publish' and TS.name != 'top1' and TS.name != 'top2' and T S.name != 'top3' ;
特定のカテゴリが使うカスタムフィールドをとってくる
SELECT wp_posts.* , wp_term_relationships.object_id, wp_postmeta.meta_key, wp_postmeta.meta_value, wp_posts.guid /* フィールドを指定 */ FROM wp_posts, wp_term_relationships, wp_postmeta /* テーブルを指定 */ WHERE wp_posts.ID = wp_term_relationships.object_id AND wp_term_relationships.term_taxonomy_id = 40 /* カテゴリーIDが40のもの */ AND wp_posts.post_status = 'publish' /* かつ公開済の記事 */ AND wp_posts.ID = wp_postmeta.post_id /* テーブル同士の結びつけ */
アイキャッチ画像のレコードを取得してくる
アイキャッチ画像と記事と同じクエリで表示したかったけど力及ばず別クエリにした。
post_idをとれてるのでアイキャッチを使っている記事と紐付けれる。
SELECT wp_posts.post_name, max(wp_posts.post_modified), wp_posts.post_parent, wp_postmeta.meta_value FROM wp_posts, wp_postmeta /* テーブルを指定 */ WHERE wp_posts.post_type = 'attachment' and wp_posts.ID = wp_postmeta.post_id /* テーブル同士の結びつけ */ and wp_postmeta.meta_key = "_wp_attached_file" and post_parent != 0 group by wp_posts.post_parent ;
タグ情報をとってくる
-- タグの情報をとってくる最終版 select P.id, P.post_title, TS.name, TS.slug from wp_term_taxonomy T LEFT JOIN wp_terms TS ON TS.term_id = T.term_id LEFT JOIN wp_term_relationships R ON T.term_taxonomy_id = R.term_taxonomy_id LEFT JOIN wp_posts P ON P.ID = R.object_id where TS.term_id > 28 and P.post_type != 'revision' and TS.name != 'non' and T.taxonomy != 'category' and TS.name != 'top1' and TS.name != 'top2' and TS.name != 'top3' ;
参考記事
http://ken.quoit.jp/2011/02/15/wordpress%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%A8%E3%82%BF%E3%82%B0%E3%82%92sql%E7%9B%B4%E6%8E%A5%E7%99%BA%E8%A1%8C%E3%81%A7%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/
http://amidagamine.com/notes/2012/04/23/sql-wordpress%E3%81%AE%E5%85%A8%E6%8A%95%E7%A8%BF%E3%81%AE%E8%A9%B3%E7%B4%B0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/
http://asklife.info/archives/1876