Creare una pagina archivio senza plugin in WordPress

8 condivisioni

Creare una pagina archivio senza plugin in WordPress

Sponsor

Bisognerebbe sempre avere una pagina archivio in un blog, così da dare la possibilità al lettore di spulciare tutti gli articoli, anche quelli del passato, direttamente da un’unica pagina, senza fargli perdere troppo tempo.

Ho già mostrato come creare una pagina archivio, ma avevo utilizzato due plugin. Visto che la velocità è molto importante e che i plugin rallentano (chi più, chi meno) il caricamento di WordPress, perchè non creare una pagina Archivio senza installare nessun plugin?

Creare un template personalizzato

In WordPress è possibile assegnare un template diverso per ogni pagina. Per template, intendo una struttura della pagina stessa, ad esempio eliminando la sidebar, aggiungendo un testo iniziale e poi mostrare articoli, dividendo la pagina in colonne, ecc ecc.

Si può fare davvero di tutto.

Per creare una pagina Archivio, dovrai creare un template apposito.

Fai una copia del file page.php (scaricalo sul tuo computer via FTP) del tema e chiamalo page_archivio.php . Inserisci il seguente codice prima di ogni altro codice della pagina:

<?php
/**
 * The template for displaying archive pages.

 Template Name: Archivio

 */
 ?>

Questo serve per indicare le informazioni principali della pagina stessa e soprattutto per indicare il nome del template: Archivio.

Il codice

Il codice che ti mostrerò l’ho preso inizialmente da Aowa.com, e poi l’ho modificato a mio piacimento, mostrando tutti gli articoli che sono stati pubblicati suddividendoli per Mese e Anno.

<?php
/*
/ mostra l'archivio di un blog WordPress senza usare nessun plugin
*/
$ultimo_articolo = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_date <'" . current_time('mysql') . "' AND post_status='publish' AND post_type='post' AND post_password='' ORDER BY post_date DESC LIMIT 1");
//$output = get_option('hfy_archives_'.$ultimo_articolo);

if(empty($output)){
 $output = '';
 $wpdb->query("DELETE FROM $wpdb->options WHERE option_name LIKE 'hfy_archives_%'");
 // Legge tutti i mesi che hanno almeno un post
 $query_mese = "SELECT DISTINCT YEAR(post_date) AS year, MONTH(post_date) AS month, count(ID) as posts FROM " . $wpdb->posts . " WHERE post_date <'" . current_time('mysql') . "' AND post_status='publish' AND post_type='post' AND post_password='' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC";
 $risultati_mese = $wpdb->get_results($query_mese);

 if ($risultati_mese) {
 // Estrae i risultati per ogni mese
 foreach ($risultati_mese as $risultato_mese) {
 $questo_mese    = zeroise($risultato_mese->month, 2);
 $questo_anno    = $risultato_mese->year;

 // Estrae tutti i post per il mese corrente
 $query_post = "SELECT ID, post_date, post_title, comment_count FROM " . $wpdb->posts . " WHERE post_date LIKE '$questo_anno-$questo_mese-%' AND post_date AND post_status='publish' AND post_type='post' AND post_password='' ORDER BY post_date DESC";
 $risultati_post = $wpdb->get_results($query_post);

 if ($risultati_post) {
 // Mostra il nome del mese e anno
 $text = sprintf('%s %d', $month[zeroise($risultato_mese->month,2)], $risultato_mese->year);
 $postcount = count($risultati_post);
 $output .= '<p><h2>' . $text . '</h2></p>';
 $output .= "<ul class='archiveslist'>\n";

 foreach ($risultati_post as $risultato_post) {
 if ($risultato_post->post_date != '0000-00-00 00:00:00') {
 $url = get_permalink($risultato_post->ID);
 $arc_title    = $risultato_post->post_title;
 if ($arc_title)
 $text = wptexturize(strip_tags($arc_title));
 else
 $text = $risultato_post->ID;
 $title_text = 'read more &quot;' . wp_specialchars($text, 1) . '&quot;';
 $output .= '    <li>' . "<a href='$url' title='$title_text'>$text</a>";
 $output .= "</li>\n";
 }
 }
 $output .= "</ul>\n\n";
 }
 }
 update_option('hfy_archives_'.$ultimo_articolo,$output);
 }
 else{
 $output = '<strong>'. __('ERROR:') .'</strong> '. __('No items were found to be displayed.') .'';
 }
}
 echo $output;
?>

Il risultato è semplice ma funzionale… Ovviamente sei libero di personalizzarlo come meglio credi :)

Quando hai terminato le modifiche, elimina i // che trovi alla riga 6. In questo modo mantiene la pagina salvata in memoria fino a che non viene creato un nuovo articolo (funziona da cache), per evitare di continuare a fare delle richieste inutili al database.

archivio

Dove inserire il codice

Questo è il problema più grande che dovrai affrontare :)

Io ti consiglio di inserirlo dopo <?php the_content(); ?> . In questo modo, verrà visualizzato anche il contenuto che scriverai nella pagina tramite editor, utile se vuoi introdurre l’archivio con del testo.

Ecco come risulta la mia pagina page_archivio.php:

<?php
/**
 * The template for displaying archive pages.
 *

 Template Name: Archivio

 */
 ?>

<?php get_header(); ?>
<!-- begin colLeft -->
	<div id="colLeft">
    <!-- Begin .postBox -->
		<div class="postBox">
			<div class="postBoxTop"></div>
			<div class="postBoxMid">
				<div class="postBoxMidInner first clearfix">
				<h1><?php the_title(); ?></h1>
				<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

				<?php the_content(); ?>
CODICE CHE HO MOSTRATO PRIMA
                                <?php endwhile; else: ?>
				<p><?php _e('Sorry, no posts matched your criteria.','ritheme'); ?></p>
				<?php endif; ?>
			</div>
		</div>
		<div class="postBoxBottom"></div>
        </div>
	 <!-- End .postBox -->
	</div>
	<!-- end colleft -->

	<?php get_sidebar(); ?>

<?php get_footer(); ?>

Assegnare il template alla pagina

Salva il file che hai creato e caricalo nella cartella del tema.

Nella pagina di modifica della pagina (scusa il gioco di parole :) ) è presente il box Attributi pagina sulla destra, qui seleziona nella tendina Modello il template Archivio, ed aggiorna la pagina (o pubblicala).

Attributi pagina wordpress

Vai a vedere il risultato :)

Se non ti compare il box Attributi pagina, clicca su Impostazioni schermo in alto a destra e seleziona la casella Attributi pagina.

Buon archiviazione :)

PS: se non ti compare in automatico la pagina archivio nel blog e la vuoi mostrare, utilizza i menù personalizzati, comodi e molto utili!

Sponsor

VUOI CREARE IL TUO SITO O BLOG WORDPRESS?

HOSTING

Scegli uno tra i migliori hosting per WordPress

Hosting

GRAFICA

Scegli uno tra i migliori temi WordPress professionali

Grafica

GESTIONE

Guide e risorse per gestire il sito WordPress a 360°

Gestione

EMAIL NEWSLETTER

Vuoi ricevere i miei ultimi articoli
comodamente nella tua email? È gratis!
Ben 741 persone lo stanno già facendo!
   
con le dita sempre in costante, frenetico movimento sulla tastiera… vengo spesso trascinato e catturato “in rete” per colpa delle mille idee che mi girano per la testa (prima o poi troverò quella giusta)… dal futuro incerto (nonostante una laurea, e chi non lo è?..siamo in tanti!) .. credo fortemente nella condivisione della conoscenza!
  • Ottimo articolo, finalmente una soluzione per visualizzare tutti i post senza l’utilizzo di plugin. Sto notando come le pagine siano un ottimo strumento di personalizzazione.

    • Ti ringrazio manuenghel, le pagine non sempre sono la soluzione migliore, ma spesso permettono ampie personalizzazioni con il minimo sforzo.

Lascia un commento

... i tempi di risposta potrebbero essere anche molto (ma molto) lunghi

sponsor

Scarica gli ebook gratuiti

Vuoi creare e gestire il tuo blog WordPress autonomamente ed in maniera gratuita? Magari sfruttando anche i motori di ricerca e i Social Media?

Allora scarica gratuitamente gli ebook Blogging Box e Le 30+ cose da non fare con WordPress, inserisci la tua email qui sotto:
1636+

Per maggiori informazioni guarda questa pagina per la Blogging Box e questa per le 30+ cose da non fare con WordPress.

Seguimi

Consiglio l’hosting

Scarica gli ebook gratuiti

Scarica gratuitamente gli ebook Blogging Box e Le 30+ cose da non fare con WordPress, inserisci la tua email qui sotto:
1636+

Per maggiori informazioni guarda questa pagina per la Blogging Box e questa per le 30+ cose da non fare con WordPress.