データベースの中に投稿記事に関するデータはwp_postsというテーブルに入っている。
以下のコードをテーマファイルに記述することでデータベースから欲しい項目を表示できるようになる。
SQL文のFROMで呼び出す際はテーブル名の接頭辞wp_を削除して用いる。
| テーブル名 | 入っている内容 | SQL文のFROMで呼び出す際のプロパティ名 |
|---|---|---|
| wp_commentmeta | コメント・トラックバックのメタデータ | $wpdb->commentmeta |
| wp_comments | コメント・トラックバックのデータ | $wpdb->comments |
| wp_links | リンク作成で入力したデータ | $wpdb->links |
| wp_options | 設定で入力したデータ | $wpdb->options |
| wp_postmeta | カスタムフィールドなどのデータ | $wpdb->postmeta |
| wp_posts | 投稿記事およびページデータ | $wpdb->posts |
| wp_terms | カテゴリ・タグなどのデータ | $wpdb->terms |
| wp_term_relationships | 投稿記事・ページとカテゴリ・タグなどの関連情報 | $wpdb->term_relationships |
| wp_term_taxonomy | カテゴリ・タグなどの情報 | $wpdb->term_taxonomy |
| wp_usermeta | 各ユーザのメタデータ | $wpdb->usermeta |
| wp_users | 登録ユーザ情報 | $wpdb->users |
wp_postsテーブルの中にはいくつものフィールド(項目)が入っており、この中から欲しいデータを選んで表示させる。
| フィールド名 | 入っている内容 | 備考 |
|---|---|---|
| ID | 自動的に割り振られた投稿ID | |
| post_date | 投稿日時 | |
| post_content | 本文 | |
| post_title | タイトル | |
| post_status | 投稿ステータス | 'publish' 公開済である |
| guid | 記事のURL | |
| post_type | 投稿種別 | 'post' 投稿記事である |
複数行のレコードを取り出す場合は「get_results( )」関数を使用。
SQL文は「get_results( )」の引数に記述。
プロパティ名は基本的にテーブル名から接頭辞(デフォルトではwp_)を除いたもの。
「wp_posts」なら「posts」。
$変数 = $wpdb->get_results(SQL文);
$results = $wpdb->get_results(" SELECT post_title // 何を取り出すか(フィールドから) FROM $wpdb->posts // どこから取り出すか(テーブルから) "); foreach ($results as $value) { // 配列の要素を1個ずつ取り出して$valueに代入 echo('<li>' .$value->post_title. '</li>'); }
SQL文でWHEREを使い、
さらに条件を絞る場合はANDでつなげていく。
WHERE以下はフィールドから取り出す。
$results = $wpdb->get_results("
SELECT post_title
FROM $wpdb->posts
WHERE post_type = 'post' /* 投稿記事である(フィールドから) */
AND post_status = 'publish' /* かつ公開済の記事(フィールドから) */
ORDER BY post_date DESC /* 新しい順に並び替え */
LIMIT 5 /* 表示記事5 */
");
foreach ($results as $value) {
echo('<li>' .$value->post_title. '</li>');
}
今回は記事タイトルに追加して記事のリンクを取り出す。
リンクはguidというフィールドに入っている。
新たに取り出す値を追加する場合はSQL文のSELECTにカンマで区切ってフィールドを追加する。
$results = $wpdb->get_results("
SELECT post_title, guid /* guidの値を追加(フィールドから) */
FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status = 'publish'
ORDER BY post_date DESC
LIMIT 5
");
foreach ($results as $value) {
echo('<li><a href="' .$value->guid. '">'.$value->post_title.'</a></li>');
}
取り出したリンクをパーマリンク表示(スラッグ名)に変換するには「get_permalink( )」関数を使用する。
引数に記事のIDを指定することで、パーマリンクを返す関数。
新たにIDを取得する必要があるので、フィールド名IDを新たにSELECTに追加する。
$results = $wpdb->get_results("
SELECT post_title, guid, ID /* IDの値を追加(フィールドから) */
FROM $wpdb->posts
WHERE post_type = 'post'
AND post_status = 'publish'
ORDER BY post_date DESC
LIMIT 5
");
foreach ($results as $value) {
echo('<li><a href="' .get_permalink($value->ID). '">' .$value->post_title. '</a></li>'); // 「$value->guid」を「get_parmalink($value->ID)」に入れ替える
}