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