スキルアップを始める!

【WordPress】特定の投稿者の投稿数をデータベースから抽出したい|num_rows

WordPress(ワードプレス)
この記事は約3分で読めます。

※記事中に広告情報を含みます。

\ワードプレスのスキルアップはこちら!/ WordPress入門読本

例えば、特定の投稿者の投稿数をデータベースから抽出したい・・・といった場合は、便利なnum_rowsが使えます。

num_rows

下記のようにして使えます。こちらは、wp_postsの中からpost_authorが2のデータのレコード数を抽出しています。

$query = 'SELECT * FROM wp_posts WHERE post_author=2';
$result = $wpdb->get_results($query);
$num = $wpdb->num_rows;
echo $num;

結果は14と出ました!

Adminerでテーブルを開いて検索をしてみると、同じ値になっています。

$query = 'SELECT * FROM wp_posts WHERE post_author=1';
$result = $wpdb->get_results($query);
$num = $wpdb->num_rows;
echo $num;

post_author=1とすると、たしかに133という結果が出ました。

echoはnumなのにresultの結果は・・・?

ここでふと疑問が出ましたが、今回のコードの場合は、echo $numしているときに$resultの変数を扱っていないように見えるので、このget_resultsの行は、無くても同じ結果になるのでは・・・?

[rml_read_more]

$query = 'SELECT * FROM wp_posts WHERE post_author=1';
$result = $wpdb->get_results($query);
$num = $wpdb->num_rows;
echo $num;

なりませんでした・・・。結果は0になりました。

$query = 'SELECT * FROM wp_posts WHERE post_author=1';
$result = $wpdb->get_results($query);
$num = $wpdb->num_rows;
echo $num;

「->」は、アロー演算子(オブジェクト演算子)と呼ばれるものですが、長くなりそうなので、詳しくは、また別の記事で・・・(汗)。つまり、ここのwpdb->get_results部分のアロー演算子は必要ということになりますが、下記の書き方でも同じ結果になる(はず)です。

$query = 'SELECT * FROM wp_posts WHERE post_author=1';
$wpdb->get_results($query);
$num = $wpdb->num_rows;
echo $num;

なりました!

まとめ

「$wpdb->num_rows」を使って、検索に一致したレコード数を取得することができました!上手く使えば様々な場面で役に立ちそうな気もします。※データベースを扱う時はくれぐれも慎重にお取り扱いください

ご参考ください😃

URLをコピーしました!