接頭辞が wp_ のWordpressに 接頭辞が wp_test_ のWordPressの記事を表示する場合です。
sql文を使い直接データベースから情報を選択します。
<ul> <?php $results = $wpdb->get_results(" SELECT wp_test_posts.*,wp_test_posts.guid , wp_test_term_relationships.* /* フィールドを指定 */ FROM wp_test_posts, wp_test_term_relationships /* テーブルを指定 */ WHERE wp_test_posts.ID = wp_test_term_relationships.object_id /* テーブル同士の結びつけ */ AND wp_test_term_relationships.term_taxonomy_id = 7 /* カテゴリーIDが7のもの */ AND wp_test_posts.post_status = 'publish' /* かつ公開済の記事 */ ORDER BY post_date DESC /* 新しい順に並び替え */ LIMIT 2 /* 表示記事2 */ "); foreach ($results as $value) { $date = str_replace('-', '.', mb_substr($value->post_date, 0, 10)); print('<li><a href="'.$value->guid.'"><div class="date">'.$date.'</div>'.$value->post_title.'</a></li>'); } ?> </ul>
このコードで実装したかったこと
- 他のWordPressから記事を表示する
- 任意のカテゴリーを指定する
- 表示件数を指定する
- 投稿日を表示する
各行の覚え書き
4行目
SELECT句で各テーブルのフィールドを指定する。
wp_test_posts は投稿に関するテーブルで、wp_test_term_relationships はカテゴリーと投稿の結びつきに関するテーブルとのこと。
wp_test_posts.guid は、表示されたタイトルにリンクを付けるときに使います。
5行目
FROM句でテーブルを指定
6行目
WHERE wp_test_posts.ID = wp_test_term_relationships.object_id
この1行でwp_test_posts と wp_test_relationships を結びつけ関連づける
7行目
ここで表示させたいカテゴリーを指定。
8行目
公開済みの投稿を指定する。これを指定しないと、下書きや非公開の投稿も表示されてしまうことになるかも?
9行目
新しい投稿が一番上になるようにする。
10行目
表示件数は数字で指定
13行目
投稿日を取得。
$value->post_date だけだと時間まで表示されてしまうので一工夫。
mb_substr()で日付の部分だけを取得します。そして、2012-09-18と表示される『-』ハイフンを『.』ピリオドに置換します。
わざわざハイフンをピリオドにする必要もないですが、表示先のWordPressがピリオドで表示されていたためにそろえました。
後は必要な場所に変数を入れてやり、テンプレートに書き込めばおk。
使用にはご注意ください
この記事はPHP,Mysqlを勉強中の私が調べた情報です。
参考サイト
参考書籍
この本でPHP、Mysqlを学んでいます。
PHPの入門には最適なすばらしい本です。とても分かりやすく書かれていて、PHPだけではなくMysqlのことにも触れているので、これを一冊こなせば簡単なウェブアプリケーションの開発もできてしまいます。
WordPressの少し突っ込んだ部分についての本です。データベースへの直接アクセスやプラグイン開発について書かれています。