¿$wpdb->get_row() solo devuelve una única fila?
¿Por qué sucede esto? Probé la misma consulta en la consola y devolvió múltiples filas. Aquí está la consulta:
$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);
Sigue devolviendo la misma fila única cuando hay varios usuarios activos. ¿Me estoy perdiendo algo?

Para referencia ver https://developer.wordpress.org/reference/classes/wpdb/get_row/ y https://developer.wordpress.org/reference/classes/wpdb/get_results/

Existen tres formas de obtener datos de la base de datos.
1. $wpdb->get_var
: Úsalo para obtener un único valor de la tabla de la base de datos. Por ejemplo, si quieres contar el número total de comentarios. Puedes hacerlo de la siguiente manera:
<?php
$comment_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments;"));
echo '<p>Comentarios totales: ' . $comment_count . '</p>';
?>
2. $wpdb->get_row
: Para recuperar una fila completa de la tabla puedes usar esto.
Ejemplo:
<?php
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ) );
echo $thepost->post_title;
?>
O
<?php
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ), ARRAY_A );
print_r ($thepost);
?>
Al usar el parámetro ARRAY_A
en get_row, los datos del post se devuelven como un array asociativo. Alternativamente, puedes usar el parámetro ARRAY_N
para devolver los datos del post en un array indexado numéricamente.
3. $wpdb->get_results
: Las consultas SELECT
estándar deben usar la función get_results para recuperar múltiples filas de datos de la base de datos.
<?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>';
}
?>
Y necesitarás el último método, como puedes suponer.

$wpdb->get_row('query', output_type, row_offset);
row_offset (entero) La fila deseada (0 siendo la primera). Por defecto es 0.

mi solución es simple..
<?php
function count_results() {
# usa la base de datos
global $wpdb;
# Consulta para contar todos los resultados de una tabla
$sql_count_results = '
SELECT count(*) as count
FROM `YOUR_TABLE`;';
# Ejecutar función
$results = $wpdb->get_row( $sql_count_results , OBJECT );
# Retornar resultados
return $results->count;
}
Uso:
<?php
echo count_results();
