$wpdb->get_row() возвращает только одну строку?
Почему так происходит? Я пробовал тот же запрос в консоли, и он возвращал несколько строк. Вот запрос:
$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);
Он продолжает возвращать одну и ту же строку, хотя есть несколько активных пользователей. Что я упускаю?

Для справки смотрите https://developer.wordpress.org/reference/classes/wpdb/get_row/ и https://developer.wordpress.org/reference/classes/wpdb/get_results/

Существует три способа получения данных из базы данных.
1. $wpdb->get_var
: используйте этот метод для получения одного значения из таблицы базы данных. Например, если вам нужно подсчитать общее количество комментариев. Это можно сделать следующим образом:
<?php
$comment_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments;"));
echo '<p>Всего комментариев: ' . $comment_count . '</p>';
?>
2. $wpdb->get_row
: для получения всей строки таблицы можно использовать этот метод.
Пример:
<?php
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ) );
echo $thepost->post_title;
?>
ИЛИ
<?php
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ), ARRAY_A );
print_r ($thepost);
?>
Используя параметр ARRAY_A
в get_row, вы получите данные записи в виде ассоциативного массива. Альтернативно, можно использовать параметр ARRAY_N
для возврата данных в виде числового массива.
3. $wpdb->get_results
: стандартные запросы SELECT
должны использовать функцию get_results для получения нескольких строк данных из базы данных.
<?php
global $wpdb;
$allposts = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish'") );
foreach ($allposts as $singlepost) {
echo '<p>' .$singlepost->post_title. '</p>';
}
?>
И, как вы могли ожидать, вам понадобится последний метод.

$wpdb->get_row('query', output_type, row_offset);
row_offset (целое число) Номер нужной строки (0 означает первую строку). По умолчанию 0.

Моё решение простое..
<?php
function count_results() {
# Используем базу данных
global $wpdb;
# Запрос для подсчёта всех результатов из таблицы
$sql_count_results = '
SELECT count(*) as count
FROM `YOUR_TABLE`;';
# Выполняем функцию
$results = $wpdb->get_row( $sql_count_results , OBJECT );
# Возвращаем результаты
return $results->count;
}
Использование:
<?php
echo count_results();
