Ordina i post di WordPress per data
TL; DR: Se stai cercando un modo semplice per ordinare i post di WordPress per data (decrescente o ascendente) nell’area di amministrazione senza che gli utenti facciano clic sull’intestazione della colonna Data, puoi farlo attraverso l’uso del pre_get_postsfiltro che fornisce un riferimento all’istanza WP_Queryin esecuzione nella pagina.
Per esempi nel codice su come farlo, controlla il resto dell’articolo.
Ordina i post di WordPress
Questo articolo è scritto in modo tale da presupporre che la tua configurazione sia basata sulla classe. Ciò significa che l’impostazione per il filtro è definita in una funzione come inite richiama un publicnome di funzione sulla classe come sort_articles_by_recent_time.
Infine, definisce una priorità di 10e specifica che la funzione accetterà un singolo argomento (che è un’istanza di WP_Query.
Innanzitutto, aggiungi il seguente filtro:
add_action( 'pre_get_posts', [ $this, 'sort_articles_by_recent_time' ], 10, 1 );
Quindi aggiungi la seguente funzione:
public function sort_articles_by_recent_time( WP_Query $query) {
global $pagenow;
if (! is_admin() || 'edit.php' !== $pagenow) {
return;
}
$query->set( 'orderby', 'date' );
$query->set( 'order', 'desc' );
}
Ecco come funziona:
- Nota i primi controlli condizionali se non siamo nell’area di amministrazione o se non siamo nella
edit.phppagina (che è la pagina dell’elenco dei post), lasciamo semplicemente la funzionalità. Questa è una clausola di guardia o un ritorno anticipato. - Se soddisfiamo entrambi questi criteri, aggiorneremo la query in modo che ordini i post per data in ordine decrescente. Ciò significa che le date più recenti saranno sempre elencate in alto.
Questo non tiene conto dello stato del post (quindi se è un drafto un post con lo publishstato, non importa). Inoltre, ciò impedirà agli utenti di dover fare clic sull’intestazione della colonna Data per ordinare i risultati secondo necessità se questo è qualcosa che desideri nella tua soluzione.
Riferimenti
[pre_get_posts](https://developer.wordpress.org/reference/hooks/pre_get_posts/)[WP_Query](https://developer.wordpress.org/reference/classes/wp_query/)