Select per ordinare i post delle categorie di wordpress

Pochi giorni fa ho finito di creare un tema WordPress in cui ho fatto in modo che gli articoli delle categorie potessero essere ordinati in base ad alcuni parametri già esistenti su WP.

Di seguito ti mostro come ordinare i post di WordPress in base al titolo e alla data, in entrambi i casi sia ascendente che decrescente.

Select per ordinare i post

ordinare i post di wordpress

Partiamo con il piede giusto iniziando a creare una funzione semplice semplice con un contenuto in html. Si tratta di una select con delle option che contengono dei parametri in grado di ordinare gli articoli in base alla data oppure al titolo.

Fai un copia-incolla della seguente funzione dentro il file functions.php del tema che stai utilizzando:

function gi_select_order_post() {
?>
    <select name="order" onchange="location = this.value;">
        <option value="#">ordina per</option>
        <option value="?orderby=title&order=ASC">Titolo A-Z</option>
        <option value="?orderby=title&order=DESC">Titolo Z-A</option>
        <option value="?orderby=date&order=DESC">Recente</option>
        <option value="?orderby=date&order=ASC">Vecchio</option>
    </select>
<?php
}

Categoria o archivio post type da modificare

Fatto questo siamo pronti per andare a modificare il file archive.php o category.php o anche in post type archive, in questo modo:

<?php get_header(); ?>

<?php
if( isset( $_GET['orderby'] ) && "title" == $_GET['orderby'] && "ASC" == $_GET['order'] ) {
    $orderby = 'title';
    $order = 'ASC';
}
if( isset( $_GET['orderby'] ) && "title" == $_GET['orderby'] && "DESC" == $_GET['order'] ) {
    $orderby = 'title';
    $order = 'DESC';
}
if( isset( $_GET['orderby'] ) && "date" == $_GET['orderby'] && "ASC" == $_GET['order'] ) {
    $orderby = 'date';
    $order = 'ASC';
}
if( isset( $_GET['orderby'] ) && "date" == $_GET['orderby'] && "DESC" == $_GET['order'] ) {
    $orderby = 'date';
    $order = 'DESC';
}
?>

<?php gi_select_order_post(); ?>

<?php

$args = array(
    'paged'        => get_query_var( 'paged' ),
    'post_type'    => 'post', // inserisci il post type
    'orderby'      => $orderby,
    'order'        => $order
);

$the_query = new WP_Query( $args );

while ( $the_query->have_posts()) : $the_query->the_post(); ?>
    
    <?php the_title(); ?>
    <?php the_time('d m Y'); ?>
    
<?php endwhile; ?>

<?php wp_reset_query(); ?>
<?php get_footer(); ?>

In post type scrivi il tipo di post che stai modificando (“post” identifica l’articolo ed è un valore di default), mentre le variabili orderbyorder prenderanno il valore dalla voce che hai selezionato nella select.

Come ti ho mostrato nello screenshot in alto, ti basterà cliccare sulla select e selezionare l’ordine che preferisci. Questa funzione non ha bisogno di un input di tipo submit, dunque una volta aver cliccato sull’ordine (es. “Titolo A-Z), la pagina si aggiornerà in automatico.

A questo punto l’unica cosa che ti resta da fare è quella di migliorare graficamente l’archivio che hai modificato.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *