他のWordPressから任意のカテゴリーの記事を表示する方法

接頭辞が 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>

このコードで実装したかったこと

  1. 他のWordPressから記事を表示する
  2. 任意のカテゴリーを指定する
  3. 表示件数を指定する
  4. 投稿日を表示する

各行の覚え書き

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を勉強中の私が調べた情報です。

参考サイト

WEBOPIXEL

参考書籍

この本でPHP、Mysqlを学んでいます。


PHPの入門には最適なすばらしい本です。とても分かりやすく書かれていて、PHPだけではなくMysqlのことにも触れているので、これを一冊こなせば簡単なウェブアプリケーションの開発もできてしまいます。


WordPressの少し突っ込んだ部分についての本です。データベースへの直接アクセスやプラグイン開発について書かれています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です