Si può avere l’esigenza di visualizzare i post presenti in una certa categoria (o in più categorie) in ordine alfabetico, di autore o di ID, sia crescente che decrescente.
Si può influire anche sulla data, come già accade (i post vengono mostrati dall’ultimo al primo in base alla data di pubblicazione), per invertirne l’ordine.
Bisogna modificare il file category.php del proprio template, o meglio, se si vuole applicare la modifica ad una sola categoria, bisogna creare un file con il numero ID della categoria, ad esempio category-1.php se la categoria è la numero 1.
Se il vostro template non contiene un file category.php occorrerà crearlo, ad esempio dal file index.php apportando le necessarie modifiche.
Potete vedere la modifica (o hack) in questione in questa stessa categoria, Ottimizzare WordPress, dove gli articoli vengono mostrati in odine alfabetico anzichè cronologico.
Inizio Loop
Nel file category-1.php bisogna cercare il codice di inizio Loop:
< ?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
oppure
< ?php if (have_posts()) : ?>
< ?php while (have_posts()) : the_post(); ?>
e sostituirlo con il seguente:
< ?php if ($posts) { ?>
< ?php
$lastposts = get_posts(‘order=ASC&orderby=post_name&category=1’);
foreach($lastposts as $post) :
setup_postdata($post);
?>
In order possiamo usare ASC o DESC per averli ordinati in ordine crescente o decrescente.
In orderby possiamo inserire post_name per ordinarli in base al nome, post_date per ordinarli in base alla data, post_modified in base alla data di modifica, ID per mostrarli in base all’identificativo, post_author in base all’autore.
Infine in category dovremo specificare l’ID della categoria (chiamando il file category.php e non specificando nessuna categoria, o meglio eliminando del tutto l’opzione category, la modifica verrà applicata a tutte le categorie del sito).
Fine Loop
A questo punto, caricando il nuovo file sul server e visualizzando la categoria “modificata” dovremo ottenere un bell’errore.
Dovremo cercare la fine del loop in category-1.php:
< ?php endwhile; ?>
e sostituirla con questo codice:
< ?php endforeach; ?>
Se la categoria continua a darci errore, cercate ed eliminate il seguente codice dal vostro file category-1.php:
< ?php endif; ?>
Nel mio caso ho risolto apportando queste modifiche.
In base al tipo di template che avete potreste avere altri errori da sistemare o cercare un’altra strada per risolvere il problema.
Morena
ciao, io vorrei visualizzare nelle categorie gli articoli per ordine alfabetico però questo tuo suggerimento non mi funziona. Come posso procedere? Grazie
pi3tr0
prova a modificare un tema che non ti interessa, tipo il default di wordpress o un’altro qualsiasi, il metodo in linea di massima funziona, quindi provando su un secondo o terzo tema dovresti farcela.
poi se proprio non riesci mi dici quale tema usi e se ho un pò di tempo ci do un’occhiata
costy
Non è stata chiusa la parentesi graffa:
viene aperta qui
e poi non viene richiusa.
Comunque dopo aver corretto questo inconveniente non funziona comunque.
Inoltre in < ?php tra il minore e il punto interrogativo credo non debba essere usato lo spazio.
Aiuto! a me non funziona :(
costy
Scusa parte del commento è stata ovviamente cancellata perchè conteneva codice php comunque il disorso mi sembra chiaro una graffa non vine chiusa E c’è uno spazio tra < e ?