テンプレートカスタマイズWordpressにはさまざまな関数が用意されていますので、ちょっとしたテンプレートの作成だけなら基本的には問題ないと思います。なんて経験が少なからずあるはずです。SQL文を使用してデータベースに直接アクセスすれば自由にデータを扱うことができるはずです。Linkなおこの記事はWordpress3.01を使用しています。WordPressのデータベースを見てみる。「phpMyAdmin」で読み込むべきデータを確認してみましょう。「phpMyAdmin」にログインしたら左カラムからWordpressで使用しているデータベースを選択します。次の画面のには「wp_commentmeta」や「wp_comments」というテーブルが11個表示されるはずです。プラグインが入ってればもっと多いかもしれませんし、接頭辞の「wp_」はインストールの設定によっては違う文字列になっているかもしれません。WordPressテーブル一覧wp_commentmetaコメント・トラックバックのメタデータwp_commentsコメント・トラックバックのデータwp_linksリンク作成で入力したデータwp_options設定で入力したデータwp_postmetaカスタムフィールドなどのデータwp_posts投稿記事およびページデータwp_termsカテゴリ・タグなどのデータwp_term_relationships投稿記事・ページとカテゴリ・タグなどの関連情報wp_term_taxonomyカテゴリ・タグなどの情報wp_usermeta各ユーザのメタデータwp_users登録ユーザ情報wpdbオブジェクトを使用して投稿記事のタイトルを取り出す。テーブル構造もなんとなくわかったところで、これらのデータを取り出してみましょう。「wpdb」というクラスを使用すると面倒な設定なしでデータベースにアクセスすることができます。ためしに投稿記事のタイトルを取り出してリスト表示してみましょう。一度phpMyAdminで確認してみましょう。投稿記事のデータは「wp_posts」というテーブルです。主なフィールドをまとめてみました。Codexを参照してください。wp_postsフィールド一覧ID自動的に割り振られた投稿IDpost_date投稿日時post_content本文post_titleタイトルpost_status投稿ステータスguid記事のURLpost_type投稿種別タイトルを取り出したいので「post_title」というフィールドですね。複数行のレコードを取り出す場合は「get_results」関数を使用します。SQL文は「get_results」の引数に記述します。テーブル名」と記述してもいいのですが、テーブル名の「wp_」という接頭辞はインストール時に変更できるため柔軟なテンプレートを作成するなら直接指定しない方が良いようです。Wordpressでは代わりに各テーブルに対応したプロパティ名で指定します。プロパティ名は基本的にテーブル名から接頭辞(デフォルトではwp_)を除いたものになります。「wp_posts」なら「posts」ですね。テンプレートの適当なファイルに下記を記述して実行してください。{print('<li>'.$value->post_title.'</li>');}ずらーっとタイトルが表示さたら成功です。条件を設定して必要なデータだけ表示する。一応タイトル一覧は表示できましたが、もこれだとページのタイトルも表示されるし、下書きとか予約記事とかも問答無用に表示されちゃってるので、あまりよろしくありません。細かい設定をして投稿された記事だけ表示するようにしてみましょう。条件として投稿記事(ページじゃない)であることと、公開済な記事を新しい順に5件表示してみます。投稿記事のフィールド名は「post_type」、公開済の記事は「post_status」です。SQL文はWHEREを使いさらに条件を絞る場合はANDでつなげていきます。{print('<li>'.$value->post_title.'</li>');}記事へのリンクを付ける最後に一覧表示したタイトルへ各記事へのリンクを付けてみましょう。リンクのデータは「guid」フィールドに入っています。新たに取り出す値を追加する場合はSQL文のSELECTにカンマで区切って追加していきます。href="'.$value->guid.'">'.$value->post_title.'</a></li>');}これでも基本的に動作すると思いますが、guidフィールドには素のままのURLが入っているため、パーマリンクをカスタマイズしていると表示されるURLが違うのでちょっと気持ち悪いですね。そこで「get_permalink」関数を使用して実際のURLに変換してみます。「get_permalink」は引数に記事のIDを指定することで、パーマリンクを返してくれます。新たに「ID」フィールドから値を取り出す必要がありそうです。この値を引数に指定すれば完成ですね。href="'.get_permalink($value->ID).'">'.$value->post_title.'</a></li>');}SQLインジェクション対策たとえばユーザーがIDを入力してデーターを表示したいとします。その場合SQL文の中に変数を入れることになると思いますが、そのまま変数を入れてしまうと自由にSQL文を埋め込まれてしまいます。「prepare」メソッドを使用すればSQLクエリをエスケープすることができます。$num));変数を入れる箇所に、変数が文字列の場合は「%s」を、整数の場合は「%d」を入れます。変数は「prepare」の第2引数以降に順番に入れます。WordPressデータベースの詳しい解説は下記を参考にしてみてください。投稿者一覧ページで、各投稿者をクリックすると「最新記事」へジャンプする...というものが作りたかったのですが、なかなかどうしてやり方が分からず困っておりました。こちらのサイトでは、「wpdb」をゼロから分かりやすく解説して頂いており、大変勉強になりました。引っぱり出したいデータが、引っぱり出せずに今まで諦めていたことが沢山ありましたが、これからはなんとかなりそうです!ありがとうございます!jQueryなどのコンテンツも勉強になます。コメントを残していただきましてありがとうございます。参考になったようで嬉しいです。ありがとうございました。こんにちは、参考にさせてもらっております。このままだと同じRSSが何度も投稿されてしまうので、「同様の記事タイトルを持つ投稿は、1度のみ投稿されるようする」ということを実現したいと思っています。);の部分で、if文を使えば良いのだと思いますが、条件式として何を利用するのが良いでしょうか。解説されているwpdb関数でタイトルを取り、それを利用するという点についてはわかりましたが、、、。ご存知でしたら、アドバイスいただけると有難いです。初めましていつも参考にさせてもらっています。すごく基本的なところだったらすいません。上記のSQLインジェクション対策の部分でprepareメソッドが出たあとにSQL文のWHEREのあとにp.IDと書いてあるのはどういう意味なのでしょうか?「p.」がなぜ急に出てきたのかがわからなくて質問させていただきました。REPLYNAMEE-MAILURLコードを書く場合は<pre>で囲んでください。WixこのブログではjQueryやWordPressを中心としたWeb制作関係のことを書いております。ご意見ご感想などお気軽にコンタクトフォームよりお問い合わせください。Web関係のお仕事も募集しております。