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".

È stato utile?

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:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top