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

例えば、特定の投稿者の投稿数をデータベースから抽出したい・・・といった場合は、便利な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」を使って、検索に一致したレコード数を取得することができました!上手く使えば様々な場面で役に立ちそうな気もします。※データベースを扱う時はくれぐれも慎重にお取り扱いください

ご参考ください😃

いちばんやさしいWordPressの教本 第7版 6.x対応 人気講師が教える本格Webサイトの作り方 (いちばんやさしい教本シリーズ) [ 石川栄和 ]

価格:1980円
(2026/5/11 23:14時点)
感想(0件)

1冊ですべて身につくWordPress入門講座 [ Mana ]

価格:2200円
(2026/5/11 23:14時点)
感想(4件)