$wpdb->get_row() restituisce solo una singola riga?
Perché succede questo? Ho provato la stessa query nella console e ha restituito più righe. Ecco la query:
$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);
Continua a restituire la stessa singola riga quando ci sono diversi utenti attivi. Mi sta sfuggendo qualcosa?

Per riferimento vedi https://developer.wordpress.org/reference/classes/wpdb/get_row/ e https://developer.wordpress.org/reference/classes/wpdb/get_results/

Esistono tre modi per estrarre dati dal database.
1.$wpdb->get_var
: utilizza questa funzione per ottenere un singolo valore dalla tabella del database. Ad esempio, se vuoi contare il numero totale di commenti. Puoi farlo nel seguente modo:
<?php
$comment_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments;"));
echo '<p>Commenti totali: ' . $comment_count . '</p>';
?>
2.$wpdb->get_row
: Per recuperare un'intera riga della tabella puoi utilizzare questa funzione.
Esempio:
<?php
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ) );
echo $thepost->post_title;
?>
OPPURE
<?php
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ), ARRAY_A );
print_r ($thepost);
?>
Utilizzando il parametro ARRAY_A
in get_row, i dati del post vengono restituiti come un array associativo. In alternativa, puoi usare il parametro ARRAY_N
per ottenere i dati del post come un array indicizzato numericamente.
3.$wpdb->get_results
: Le normali query SELECT
dovrebbero utilizzare la funzione get_results per recuperare più righe di dati dal database.
<?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>';
}
?>
e, come puoi immaginare, avrai bisogno dell'ultimo metodo.

$wpdb->get_row('query', output_type, row_offset);
row_offset (intero) La riga desiderata (0 è la prima). Predefinito a 0.

la mia soluzione è semplice..
<?php
function count_results() {
# usa il database
global $wpdb;
# Query per contare tutti i risultati da una tabella
$sql_count_results = '
SELECT count(*) as count
FROM `YOUR_TABLE`;';
# Esegue la funzione
$results = $wpdb->get_row( $sql_count_results , OBJECT );
# Restituisce i risultati
return $results->count;
}
Utilizzo:
<?php
echo count_results();
