Creare un loop con messaggi ordered by Commenti recenti
-
16-10-2019 - |
Domanda
Utilizzando query_posts, come posso ordinare l'elenco dei posti in modo quelli con i commenti più recenti sono in cima?
Sto cercando qualcosa di simile a come domande qui su SE sono ordinate quando si ordina per "Active".
Soluzione
Non vorrei usare query_posts()
. Tale funzione particolare è pensato per apportare modifiche ad una query specifica ... ed è abbastanza limitata che non si può ottenere il tipo di funzionalità personalizzate è necessario fuori di esso.
Piuttosto, mi piacerebbe utilizzare una query personalizzata. Che cosa si vorrà fare è di query approvato commenti ordinati per i loro post / data di approvazione e si uniscono che con i messaggi nel database. Se un post non ha alcun commento, sarebbe automaticamente filtrati in base a questo criterio.
molto semplice pseudo-codice di esempio:
$qstr = 'SELECT * FROM wp_posts ON (wp_posts.post_id = wp_commnets.comment_post_id) WHERE wp_comments.comment_approved='approved' ORDER BY wp_comments.comment_date';
$my_query = new WP_Query($qstr);
while($my_query->have_posts() ...
In sostanza, si sta selezionando i messaggi in base a criteri specifici relativi ai dati nella tabella commenti. Utilizzando una query diretta richiede una certa profondità di conoscenza per quanto riguarda le istruzioni SQL e la struttura del database WP, però ... quindi non è di solito la mia prima raccomandazione, ma dovrebbe funzionare nel vostro caso.
Basta ricordare che il codice di cui sopra è pseudo-codice ... che significa ho fatto fino al largo della parte superiore della mia testa, non potrebbe funzionare, e si dovrebbe usare solo come un esempio concettuale .
Per riferimento: