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

前置き

sqlでwordpressの投稿データを取得する内容を記載していきます。
wp_postsの構造は=>wp_postsの構造{wordpress日本語版}

投稿記事をselect文で全データを取得

投稿内容を取得するにはデータベースのwp_postsテーブルのpost_contentを指定することになります。sqlでデータを取得したい時はselect文を使います。

$sql = "SELECT * FROM wp_posts";

上記のコードはwp_postsテーブルから*(全部の列)のデータをselect(取得)します。
欲しい列を指定したい場合*の所に列名を記述します。

投稿記事のタイトルを取得したい場合

$sql = "SELECT post_title FROM wp_posts";

✽を欲しい列名に変えてsqlを発行します。

$sql = "SELECT fromの後に指定したテーブルの中の列名 FROM テーブル名";

違うテーブルの列名を指定してもデータは取得できません。

2列を取得したい場合

$sql = "SELECT post_title,post_content FROM wp_posts";

となり、カンマで区切って指定します。

データベースに接続する

データベースからデータを取得するには、まずデータベースに接続しなくてはいけません。
接続するためにはデータベースのユーザー名とパスワードとデータベースのホスト、接続したいデータベースの名前を使い接続します。wordpressをインストールした際に入力したと思います。

$db_user   = $wpdb->dbuser;	//ユーザー このまま記述する
$db_passwd = $wpdb->dbpassword;	//パスワード このまま記述する
$db_host   = $wpdb->dbhost;	//データベースホスト このまま記述する
$db_name   = "db_name";     //使用するデータベース名 wp-config.phpに記載
$connect = new wpdb($db_user, $db_passwd, $db_name, $db_host); //接続 このまま記述する

ユーザー名、パスワード、データベースホスト名は上記のコードのままコピー&ペーストで問題ありません。データベース名はwordpressをインストールした際に入力したと思います。データベース名がわからない時はwordpress/wp-config.phpに記載してあります。
もちろんphpMyadminを開けばデータベース名が載っていますが・・・
変数connect($connect)の行もコーピー&ペーストで大丈夫です。
これでデータベースへの接続は完了です。

sqlを使ってデータを取得する

いよいよsqlでデータベースに問い合わせます。

$sql = "SELECT * FROM wp_posts"; //用途に合わせて変更する
$results = $connect->get_results($wpdb->prepare($sql ,null)); //このまま記述する

上記のsqlでwp_postsの全データを取得できます。(✽のため全データを取得する)
下記を使うとデータが見やすいです。

function print_pre($array){
	echo "<pre>";
	print_r($array);
	echo "</pre>";
}
print_pre($results);

公開済みの投稿記事のみの全データを取得する

2018/02/23 追記
純粋に公開済みの投稿記事のみの全データを取得したい場合は下記を参照

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

シェアする

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

フォローする