投稿記事を絞って取得する方法 wordpressのためのsql

前回までのおさらい

今回はsqlを使ってデータベースから条件を複数指定してデータを取得する話をしていきます。

前回は投稿記事をselect文で条件を指定してデータをとってくる話 wordpressのためのsql

前々回は投稿記事をselect文で全データをとってくる話 wordpressのためのsql

データベースから投稿記事(固定ページを含む)をすべて取得するsql

復習になりますが、データベースから投稿記事(固定ページを含む)をすべて取得するsqlは、

$sql = "SELECT * FROM wp_posts";

でしたね。
簡単に訳すと「wp_postsから*(全てのカラム)を選びます」ですね。
「SELECT 欲しい列名 FROM テーブル名」

条件を指定してデータベースから投稿記事を取得する

条件を指定してデータベースから投稿記事を取得する場合は

$id = 1; //投稿ID
$sql = "SELECT * FROM wp_posts WHERE id =".$id;

又は

$sql = "SELECT * FROM wp_posts WHERE id = 1";

簡単に訳すと「wp_postsからidが1のものの*(全ての列)を選びます」ですね。
WHEREで条件を指定します。

複数条件を指定してデータを取得する

今回は複数条件を指定します。
例えば、公開済みの投稿記事でかつ固定ページの記事を取得したい場合のsqlは下記のようになります。

$sql = "SELECT * 
        FROM wp_posts 
        WHERE post_status = 'publish' //「公開済み」を指定する
        AND post_type =  'page' ";  //「固定ページ」を指定する

条件を複数指定する場合はWHERE ??=”??”の後にANDをつけます。
簡単に訳すと「wp_postsから公開済みの固定ページのものの*(全ての列)を選びます」ですね。
wp_postsテーブルのpost_status=”publish”は公開済みの記事を取得するという意味です。
ほかにも、post_status=”private”だったりがあります。ちなみに”private”は非公開の記事を取得します。

        AND post_type =  'post' "; //「投稿記事」を指定する

上記が投稿記事を指定するsqlです。

詳しくはpost_statusのデフォルトのステータス

今回は以上となります。

補足:条件は1つでも同じ

補足1

$sql = "SELECT * 
        FROM wp_posts 
        WHERE post_status = 'publish' ";

条件を1つだけにするともちろん、上記のsqlは公開済みの記事をすべて取得するとなります。
同じく

$sql = "SELECT * 
        FROM wp_posts 
        WHERE post_type =  'page' ";

のようにするともちろん、上記のsqlは固定ページの記事をすべて取得するとなります。

補足:条件指定の際の注意点

補足2
条件を指定する際、文字列には、'(シングルクォーテーション)又は”(ダブルクォーテーション)で囲います。
注意して欲しいのは
下記のように記述した場合です。

$sql = "SELECT * 
        FROM wp_posts 
        WHERE post_status = "publish"
        AND post_type =  "page" ";

上記のように”(ダブルクォーテーション)や'(シングルクォーテーション)のみで指定してしまうと、エラーになります。
“(ダブルクォーテーション)で囲っているところが文字列だと認識しますので上記の場合

$sql = "
        /*ここから*/
        SELECT * 
        FROM wp_posts
        WHERE post_status = 
        /*ここまでが文字列*/
        "
        publish
        "
        /*ここから*/
        AND post_type =  
        /*ここまでが文字列*/
        "
        page
        "
        /*ここから*/ /*ここまでが文字列*/
        ";

のように認識されてしまいます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする