SEが教えるEC運営のブログ ウェブ運用と開発現場を経験したSEのTIPS
TOP > BLOG > IT記事

WordPressの記事情報を呼び出すSQLの記述例

早川朋孝 早川朋孝
EC専門のSE

ただの個人的なメモです。

WordPressの特定タグの記事情報を呼び出すSQL

以下のSQLは特定のタグの記事情報を得る記述だ。ここではタグidが28で、公開しているブログ記事で、記事タイトル、記事ID、タグID、タグ説明文、記事本文をよびだしている。シンプルなリクエストであるのにけっこう面倒なSQLだが、WordPressのSQLは記事情報とタグ情報と、記事とタグを結びつける情報の3つのtabbleに分かれている。

要するに、自分でデータ構造を把握しないとSQL分は書けないのです。エンジニアが初めて触れるシステムを理解するには、まずデータ構造の把握から始まると言っても過言ではないでだろう。

SELECT DISTINCT WP.post_title, WP.id, WTR.term_taxonomy_id, WTT.description, WP.post_content FROM wp_posts as WP INNER JOIN wp_term_relationships AS WTR ON WP.id = WTR.objet_id INNER JOIN wp_term_taxonomy AS WTT ON WTR.term_taxonomy_id = WTT.term_taxonomy_id INNER JOIN wp_terms AS WT ON WTT.term_id = WT.term_id WHERE post_type=’post’ && post_status=’publish’ && WTR.term_taxonomy_id=’28’

特定のタグの記事情報をCSVエクスポートする

上記のSQLの内容をCSVエクスポートする場合のコマンド例。これはSQLではなくサーバーのコマンドとして打つ。

#mysql -uadmin -p DBNAME -e “SELECT DISTINCT WP.post_title, WP.id, WTR.term_taxonomy_id, WTT.description, WP.post_content FROM wp_posts as WP INNER JOIN wp_term_relationships AS WTR ON WP.id = WTR.object_id INNER JOIN wp_term_taxonomy AS WTT ON WTR.term_taxonomy_id = WTT.term_taxonomy_id INNER JOIN wp_terms AS WT ON WTT.term_id = WT.term_id WHERE post_type=’post’ && post_status=’publish’ && WTR.term_taxonomy_id=’18’;” | sed -e ‘s/^/”/g’ | sed -e ‘s/$/”/g’ | sed -e ‘s/\t/”,”/g’ > ./wp_posts_18.csv

レコメンドの一覧を見る

レコメンドというのは自分で追加したtableのこと。ある記事に4つのおすすめ記事をレコメンドするという仕様のデータ構造となっている。同じ記事本文のIDをasをつけて区別しているのがポイント。そうでないと希望の動作にならないから。

select WP.id, WP.post_title, WP2.post_title from wp_posts as WP
inner join wp_recommend as WR on WP.id = WR.post_id
inner join wp_posts as WP2 on WP2.id = WR.recommend_id;

これもやはりデータ構造を把握していないと書けない。もう十分理解できたと思うが、例えWordPressのようなよく知られたCMSであっても、大抵の場合は自分の知りたいSQLがネットに転がってるなんてことはまずない。データ構造を把握して、自分でSQLを勉強して記述するしかない。

×

メルマガ登録

SEが商品登録、在庫管理、発注などのEC業務を効率よくプログラムで実施する方法を無料配信します。

  • APIやツールによる業務効率化
  • 広告運用に関するTips
  • CVRを改善するアクセス解析のコツ
このブログを書いてる人
早川 朋孝 EC専門のSE
IT業界歴20年のエンジニアです。ネットショップ勤務で苦労した経験から、EC・ネットショップ事業者に向けて、バックオフィス業務の自動化・効率化を提案するSEをしています。
Web運用の経験もあり、アクセス解析、広告運用が得意で、広告APIとプログラムとの合わせ技で並の広告代理店にはできない提案が可能です。
プロフィール
API連携の相談にのります
趣味は読書、ピアノ、マリノスの応援など
PAGE TOP