Wp-Hack: il box delle pillole

gioxx, 24/06/2009 ore 8.00 (ultima modifica 23/06/2009 ore 13.06) | 1,095 views

ATTENZIONE: Questo post e' stato scritto piu' di 3 mesi fa. Potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a scrivere un commento per chiedere delucidazioni! :)

Ultima modifica: 23/06/2009 ore 13.06


Dopo la sidebar -della quale vi avevo parlato poco tempo fa- si passa alla index.php e la possibilità di non far comparire i post di una specifica categoria nell’insieme degli articoli, mantenendo il tutto in un box che chiameremo “PILLOLE“, proprio come  nella home page del mio blog.

Le modifiche andranno applicate sul tema utilizzato dal blog, inserendo le righe di codice al giusto posto si otterrà il risultato voluto. Ogni tema è però differente dall’altro, bisognerà quindi stare attenti ad individuare la giusta posizione dove piazzare il codice spiegato nei prossimi paragrafi.

ATTENZIONE: Prima di eseguire qualsiasi modifica ai vostri file e/o dispositivi siete pregati di effettuare un backup di questi. Solo così sarete capaci di tornare indietro riparando ad eventuali errori di distrazione. L’articolo e l’autore non possono essere ritenuti responsabili di alcun danno subito dalla vostra strumentazione. Buon lavoro.

Fiato alle trombe quindi, si parte :)

# exclude posts from some category

Ovvero: escludere i post facenti parte della categoria “Pillole” da quelli visualizzati in Home Page, nella lista completa dei post. Se avete già creato la categoria si può procedere, altrimenti fatelo ora e ricavate l’ID attraverso il metodo spiegato nel post precedente. Nel mio caso la categoria Pillole ha ID 2407.

La documentazione che servirà per questo specifico caso riguarda la funzione The Loop di Wordpress, disponibile come sempre nel Codex. Nello specifico facciamo riferimento (appunto) all’esclusione di post di una determinata categoria:

codex.wordpress.org/The_Loop#Exclude_Posts_From_Some_Category

La stringa interessata effettua il controllo di categoria subito dopo il ciclo while che calcola il numero di post da mostrare in pagina. Per l’esattezza si occuperà di saltare” la visualizzazione dei post di una determinata categoria solo nel caso in cui ci si trovi in home page, così da non intaccare archivi e altro:

<?php if (in_category('2407') && is_home() ) continue; ?>

Inserendo la stringa prima della visualizzazione del post permetteremo al ciclo di ignorare la categoria Pillole. Occorrerà piazzarla quindi (secondo documentazione) tra:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

Nel mio tema (BigBlue modificato) questo è il risultato:


<?php if (have_posts()) : ?>
		<?php while (have_posts()) : the_post(); ?>
		<?php if (in_category('2407') && is_home() ) continue; ?>
		<div class="entry">

e funziona egregiamente. Il test è stato effettuato su un post in particolare (Aggiorna MfE sul tuo E65) realizzato e pubblicato in Pillole ma mai visto sulla Home Page tra gli articoli disponibili, raggiungibile solo per permalink o dagli archivi di Giugno 2009.

# la creazione del box

Fatta la prima parte dello sporco lavoro si passa alla visualizzazione in box dedicato. Trattandosi di post alla stregua di “un twitter maggiorato ma di un tumblr minorato” basterà un piccolo spazio lungo tanto quanto la colonna che lo ospita ma alto (nel mio esempio) poco, bastano appena 160 pixel. Chiaro che le dimensioni cambiano nel caso in cui si decida di non inserirlo nella home page ma magari in Sidebar ;-)

Il codice? E’ presto realizzato:


	<b>PILLOLE: notizie flash da Gioxx</b>
	<div class="boxpillole" style="border: 1px solid ; padding: 4px 6px 2px; width: 500px; height: 160px;">
	<?php $my_query = new WP_Query('cat=2407&showposts=1');
		while ($my_query->have_posts()) : $my_query->the_post(); ?>
		<b><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent
		Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></b>
		<?php the_content('Read the rest of this entry &raquo;'); ?>
	<?php endwhile; ?>
	</div><br />

Differisce da quello visto l’ultima volta per il semplice fatto che stavolta non si visualizzerà il riassunto del post, ma il contenuto completo con tanto di link o immagini magari (anche se sarebbe meglio non metterne per questioni di corretta visualizzazione ;) ) … si nota proprio da quel “the_content” come ultima riga prima della chiusura del ciclo While.

Il box va messo (se si sceglie la home page) prima di qualsiasi altro codice, ancora prima del “<?php if (have_posts()) : ?>“, dopo del get_header e del div content. Per farvi capire meglio ecco il suo posizionamento all’interno dell’index.php di BigBlue:


<?php get_header(); ?>
	<div id="content">
	<b>PILLOLE: notizie flash da Gioxx</b>

Il gioco è così fatto. Se pubblicherete qualcosa all’interno della categoria Pillole (e mi raccomando, nessun’altra se volete tenerlo nascosto) lo vedrete solo ed esclusivamente nel box dedicato (e anche in archivio ovviamente o tramite un search, un link diretto), tutti gli altri post continueranno a susseguirsi nel corpo della home page :)

Cheers!

7 Responses to “Wp-Hack: il box delle pillole”

  1. 1
    SimoNo Gravatar Says:

    Grazie mille Gioxx! Credo che lo userò per le mie Freddure, che in home “stonano” un po’… salvato su delicious :)

  2. 2
    gioxxNo Gravatar Says:

    @ Simo:
    figurati, lieto di esserti stato utile ;)

  3. 3
    Luca MercatantiNo Gravatar Says:

    Ciao, c’è un problema nel codice che hai postato per eliminare gli articoli di una determinata categoria!
    Una volta raggiunto l’articolo da eliminare lascia uno spazio vuoto al posto dell’articolo che non viene pubblicato, invece di pubblicare l’articolo successivo.

    RISULTATO: nella mia home page invece di apparire 3 articoli ne appaiono 2 (dato che il terzo è nella categoria che non voglio far vedere).

    Come posso risolvere questo problema? :)

  4. 4
    gioxxNo Gravatar Says:

    @ Luca Mercatanti:
    mi sembra strano Luca. Ho già pubblicato 2 articoli dedicati alle “Pillole” e nella home page non ci sono spazi vuoti, gli articoli vanno a finire tranquillamente nel box ignorando tutto il resto. Non è che per caso il tuo tema tratta diversamente la pubblicazione? :O

    Che tema usi?

  5. 5
    Luca MercatantiNo Gravatar Says:

    @Gioxx

    Uso ileather, ampiamente modificato dal sottoscritto.
    Veramente strano in effetti, ma non saprei come risolvere O_O

  6. 6
    gioxxNo Gravatar Says:

    @ Luca Mercatanti:
    c’è sicuramente (IMHO) qualcosa che non va nel tema perché il caricamento “originale” (while) di WP prevede quel codice proprio per eliminare una categoria dalla vista principale della home page.

    Il BigBlue utilizzato sul mio blog è fin troppo semplice nel codice e rispetta la sintassi corretta del motore permettendomi quel giochetto che ho descritto. Prova a dare una occhiata alla index.php del tuo e controlla che ci siano i cicli scritti correttamente :S

  7. 7
    WordPress Hack: Mostrare Articoli Solo Nella Sidebar Says:

    [...] Fonti Parziali: gioxx [...]

Leave a Reply