Twitter Profile
salta alla navigazione

[Chicche] WordPress: pubblicare i post di una specifica categoria in una pagina dedicata 4 maggio 2009

Inviato da LukePet in : Chicche, Guide, Informatica, Prodotti, Software, Soluzioni, Sviluppo, Tutorial, Web , trackback

Proprio ieri mi sono cimentato in una piccola personalizzazione per un blog WordPress che sto gestendo; niente di particolare, avevo giusto un’esigenza di impostazione e sono riuscito a soddisfarla.

Vi spiego meglio.

In pratica dovevo creare una sezione dedicata in cui visualizzare tutti i post che rientravano in una specifica categoria. Niente di insormontabile insomma, mi è bastata qualche piccola ricerca per individuare la soluzione; ma visto che gran parte delle info che ho trovato sono in inglese, riporto qui la descrizione dei passi in italiano; così, semmai qualcuno ne avesse bisogno, ha tutto scritto per bene.

Dunque, prima di tutto vi segnalo il link che mi ha fatto da guida, eccolo qua: http://codex.wordpress.org/Template_Tags/query_posts.

E questi sono i passi da seguire per implementare questa piccola personalizzazione:

1. Andate sul vostro database WordPress ed individuate l’ID della categoria che vi interessa gestire in un’altra pagina. La tabella cui dovete far riferimento è wp_terms (da cui dovete individuare il term_id); se si tratta di una nuova categoria naturalmente dovete prima crearla e poi consultare la tabella.

2. Ora dovete andare nel vostro tema e creare un template per la nuova pagina che raccoglierà i post.

Ecco come fare…

Andate nel vostro tema e create una copia del file page.php con un nuovo nome (supponiamo di chiamarlo page_template01.php); dopo aver creato il file occorrerà editarlo, quindi apritelo ed inserite in testa queste istruzioni:
<?php
/*
Template Name: NOMETEMPLATE
*/
?>

Al posto di NOMETEMPLATE scegliete un nome da dare al vostro template.

Sempre sullo stesso file, subito dopo il <?php get_header(); ?>, dovrete inserire queste altre istruzioni:
<?php
$query= 'cat=IDCATEGORIA&orderby=date&order=DESC';
query_posts($query);
?>

Al posto di IDCATEGORIA dovete mettere l’id della categoria che avete precedentemente individuato (es: cat=9)

3. A questo punto salvate ed aprite il pannello di amministazione di WordPress, andate su Pagine -> Aggiungi nuova e tra gli attributi scegliete il template che avete appena creato. Ora non vi resta che pubblicare la pagina (potete anche non scrivere niente e lasciarla vuota).

Bene, se ora andate a vedere il blog e cliccate sulla pagina per visualizzarla vedrete che essa riporta tutti i post che sono contrassegnati dalla categoria che avete scelto. E già qui gran parte del lavoro è fatto.

Ora però, se voleste evitare che i post di quella categoria siano visibili nell’home page insieme a tutti gli altri articoli, c’è un altro piccolo passo da fare. Vediamolo.

4. Andate nella cartella del tema ed aprite il file index.php per editarlo. Subito dopo il <?php get_header(); ?> dovete aggiungere queste istruzioni:
<?php
if (is_home()) {
query_posts($query_string . "&cat=-IDCATEGORIA");
}
?>

IDCATEGORIA rappresenta sempre l’id della categoria che avete scelto (es: cat=-9).

Salvate e visualizzate il blog.

Tutti i post che rientrano nella categoria identificata dall’IDCATEGORIA non saranno più visibili in home page, ma saranno consultabili dalla pagina dedicata che avete precedentemente creato. Niente di più facile.

Ok, credo di essere stato abbastanza sintetico e chiaro…come sempre, spero di essere stato utile a qualcuno.

Buon sviluppo a tutti.

CONDIVIDI QUESTO POST »
  • Google Bookmarks
  • del.icio.us
  • StumbleUpon
  • Digg
  • Mixx
  • Yahoo! Buzz
  • Technorati
  • Facebook
  • MySpace
  • Twitter
  • FriendFeed
  • Wikio IT

POST CORRELATI:

  1. [Chicche] WordPress, Apache e i permalink Comunicazione di servizio… Se vi capitasse di installare WordPress in locale e dopo aver abilitato...
  2. [Chicche] WordPress: personalizzare le icone del plugin Sociable E’ già da un pò che mi sono adoperato per fare un piccolo restyling alle...
  3. [Chicche] Video gallery sul vostro blog WordPress! Avete un canale YouTube in cui pubblicate dei video e vi piacerebbe allestire una piccola...
  4. [Chiacchiere] WordPress…qualcosa è cambiato Qualche tempo fa ho scritto questo post: chiacchiere-i-feed-rss-di-pollosky. Bene, in questo post elencavo una serie...
  5. [Chicche] WordPress: plugin su plugin…ecco alcuni links da spulciare In questo periodo ho smanettato un bel pò con il codice di WordPress per realizzare...

Commenti»

1. Rob Alferi - 5 maggio 2009

Carina questa cosa, non è una feature che mi serve però non si sa mai… quasi quasi faccio un pingback per tenerne traccia!

2. fabio - 5 maggio 2009

Ciao a tutti, sto cercando di creare una rete tra un pc linux e altri 2 windows, ho letto le guide proposte sul blog precedente ma ho un problema… Digitato il comando etc/init.d/smb start mi dice dalla shell file not found. Come devo fare?

3. LukePet - 5 maggio 2009

Ciao Fabio, ti ho risposto nel post relativo. Clicca qui: http://pollosky.it/2007/04/30/ubuntu-rete-windows-linux-con-samba/#comment-5020

4. Pierpaolo - 18 maggio 2009

mi seriva una cosa del genere nel mio blog, i miei complimenti la guida è semplice e accurata. A me funziona tutto alla perfezione.

5. LukePet - 18 maggio 2009

Grazie, mi fa piacere che ti sia stata utile.

6. Ale - 7 giugno 2009

Ottimo tutorial davvero!
Ma se uno volesse visualizzare in quella pagina solo titolo e autore, senza tutto l’articolo?

7. Carlo - 10 giugno 2009

Interessante. Mi serve :-)
… ma ho bisogno anche di un secondo passaggio.
Praticamente devo avere due listing con categorie differenti che cambiando sia per contenuto che per aspetto grafico… però tutte le pagine puntano ad un solo dettaglio del post.
Come posso fare che il listing della categoria A si apra nel post (pagina) A e che il listing della categoria B si apra nella pagina post B in modo che listing e dettaglio per le due soluzioni siano coerenti?
GRAZIE IN ANTICIPO!

8. slovo - 31 luglio 2009

ciao e grazie per questo utilissimo tutorial. Ho modificato il mio blog seguendo la procedura che hai indicato tu, ripetendola per tre categorie e altrettante pagine. tutto funziona ma se vado su una pagina (che visualizza una data categoria) non funzionano i commenti… hai qualche idea? il problema potrebbe risiedere nel codice del template che sto usando?
grazie !

9. LukePet - 31 luglio 2009

Ma che commenti intendi? quelli su ogni singolo post?

10. slovo - 31 luglio 2009

si, proprio quelli.
i post su pagina dedicata visualizzano il link al modulo commenti, ma cliccandoci sopra non succede nulla.
(i commenti ai post sono tutti abilitati)

11. LukePet - 4 agosto 2009

Mmm sinceramente così su due piedi non saprei dirti…prova a confrontare il template della pagina con quello originale; anche se mi sembra strano perchè teoricamente cliccando sul post dovresti avere sempre lo stesso tipo di visualizzazione (indifferentemente dal fatto che sia richiamato dalla home o dalla nuova pagina).

12. slovo - 5 agosto 2009

ok, proverò a controllare… ti faccio sapere, grazie. ciao!

13. nando - 18 agosto 2009

grazie mille per la chiarezza . molto utile
 

14. Anonimo - 26 agosto 2009

…era proprio quello che stavo cercando! ottima guida, veramente chiarissima!

15. mattia - 26 agosto 2009

Grandeeeee!! questo si che è utile….

16. Emilio - 2 settembre 2009

Ciao, posso chiederti aiuto? come mai a me esce un solo articolo? ho provato a controllare il codice ma e’ identico al tuo..Aiuto!!;)

17. LukePet - 7 settembre 2009

Strano, per come è impostato il codice dovrebbe selezionare tutti i post che rientrano nell’id della categoria. Prova a controllare il valore dell’id dei post direttamente sul database.

18. Claudio - 17 settembre 2009

Mi servirebbe moltissimo questo suggerimento però nel tema che utilizzo (atahulpa342) non c’è la pagina page.php
c’è la pagina index.php
che contiene questo codice
<?php     /* get all options: */
include (TEMPLATEPATH . ‘/functions/bfa_get_options.php’);
get_header(); ?>

<?php /* If there are any posts: */
if (have_posts()) : $bfa_ata['postcount'] == 0; /* Postcount needed for option “XX first posts full posts, rest excerpts” */ ?>

Siccome sono un profano mi sapete suggerire come potrei modificare per ottenere la stessa cosa
Grazie

19. LukePet - 24 settembre 2009

In effetti la struttura di questo tema è un pò più articolata…se c’è un forum di riferimento dovresti chiedere come è possibile creare i template delle pagine.

20. martino - 28 ottobre 2009

il tema che hai spiegato chiaramente, è esattamente quello che cerco di fare da tre giorni;
ho però ancora una domanda: dove trovo il database???
per favore, se mi rispondi, fai conto di avere di fronte un bimbo di cinque anni, ….sono un e-analfabeta :)
grazie per l’attenzione
martino

21. LukePet - 28 ottobre 2009

Se il tuo blog è creato utilizzando lo spazio online di wordpress.com allora non hai modo di accedere al db. Per avere maggiore possibilità di personalizzazioni occorre installare wordpress su un proprio spazio…in questo modo si ha accesso sia ai sorgenti della piattaforma sia al database.

22. martino - 29 ottobre 2009

…bene!!!
non c’entra alcunché l’opzione “Modifica CSS” ?!???

23. LukePet - 29 ottobre 2009

No…i CSS riguardano solo gli stili.

24. mario - 11 novembre 2009

Funziona, ma il codice dell’index non impedisce la pubblicazione nella home…

25. PescePalla - 9 dicembre 2009

Grazie mille, funziona benissimo ;)

26. Stefano - 15 dicembre 2009

Mi dà un errore:
Parse error: syntax error, unexpected T_STRING [...] on line 2
Il codice iniziale della pagina è:
<?php

/* Template Name: Pagine_Personali */
/* Mystique/digitalnature */

get_header();

?>

<?php
$query= ‘cat=37&orderby=date&order=DESC’;
query_posts($query);
?>
 
Come posso risolvere?

27. Stefano - 15 dicembre 2009

Risolto…
L’editor non mi inseriva una riga vuota dopo il primo <?php ma scriveva <?php/* Template Name: Pagine_Personali */ tutto sulla stessa riga…

28. Umbe - 23 dicembre 2009

Ho trovato il tuo articolo davvero interessante.
Avrei però due domande
1. Come faccio ad inserire i link di navigazione in fondo alla lista degli articoli in modo da navigare avanti e indietro negli articoli della medesima categoria?
2. Nelle opzioni di lettura ho settato a 2 il numero di articoli recenti visualizzabili. C’è la possibilità di avere più articoli nella altre pagine?
Spero di essere stato abbastanza chiaro :)
Ciao e grazie

29. Ettore - 13 gennaio 2010

Finalmente!
Ho trovato le istruzioni che cercavo e devo dire che sono anche chiare. Purtroppo devo ammettere che sono anche alle prime armi.
Il mio problema principale sta proprio nell’accedere al database wordpress del Blog in costruzione.
Non vi sembrerà vero ma le ho provate tutte.
Dopo il “login”, vado su ”Pannello di controllo” dell’interfaccia Wordpress ma proprio non riesco a trovare il mio database wordpress (verione 2.9).
Grazie in anticipo.

30. Anonimo - 17 gennaio 2010

io non ho un dominio proprio. come faccio a trovare la ID pagine? non sono riuscita a vedrlo. Forse non avendo un dominio proprio non lo posso fare?
evatempo

31. LukePet - 25 gennaio 2010

Se avete un blog con lo spazio messo a disposizione di WordPress.com, non potete accedere al database. Per farlo è necessario avere un proprio spazio su cui installare WordPress; questo vi consente di gestire a pieno il database.

32. pinou - 16 febbraio 2010

proprio quello che cercavo… Ottimo!!!
;)

33. sigAA - 17 febbraio 2010

ciao
grazie per questa guida. sono novello di wp e di editing, ma sono riuscito a seguirla. ottima.
non riesco, però, a completare il punto 4. i post della cat vanno nella pagina specifica, ma anche in home.
il tema da me usato è

Elements of SEO 1.2

un aiutino!?!?!

34. LukePet - 24 febbraio 2010

Così su due piedi non è facile dirti quale possa essere il problema.

Io ultimamente ho notato che nel sito in cui ho implementato questa soluzione (non questo) non funziona la paginazione della home quando si vanno a ricercare i post più vecchi…è una cosa che devo verificare.

Nessun altro ha riscontrato questo comportamento?

35. Manuela - 5 marzo 2010

Ciao, ti ringrazio di questa soluzione, che mi è tornata davvero utile. L’unica cosa è che nella pagina creata l’articolo mi esce per intero, mentre io vorrei vedere l’excerpt come nella home page…come posso fare?

36. Salvatore - 5 marzo 2010

Proprio quello che mi serviva, funziona benissimo, ma ho lo stesso problema di Manuela: nella nuova pagina mi presenta gli articoli per intero e non fino al punto di interruzione (-more-) come nella pagina principale.   Per il mio tema ho utilizzato la pagina index.php e non page.php  .
Probabilmente dipende dal contenuto di questa funzione : <?php the_content();?>   che si occupa di visualizzare il contenuto del post.  Dove la trovo ?

37. Salvatore - 6 marzo 2010

Ho risolto il prolema del <–more–> che di default non funziona nelle pagine statiche con template.
Basta aggiungere queste 2 righe  dopo query_posts($query);
global $more;
$more = 0;
Adesso ho un altro problema. Come si fa ad escludere 2 categorie dalla home ?
come devo variare <?php
if (is_home()) {
query_posts("cat=-IDCATEGORIA");
}
?>

 

38. LukePet - 6 marzo 2010

Prova così…

query_posts("cat=-IDCATEGORIA1, IDCATEGORIA2");

39. Manuela - 6 marzo 2010

Grande Salvatore!! Grazie :)

40. Francesco - 30 marzo 2010

Grande, Grazie mille!

41. Barbara - 3 aprile 2010

Ottimo articolo,
utilizzando il theme Atauhalpa ho però un problema. Ho impostato la pagina news e la pagina eventi ciascuna che visualizza le categorie di post corrispondenti. Ho settato la visualizzazione a 3 post per pagina però non funzionano i tasti older post / newer post . Cliccando sui link non succede nulla, qualcuno sa darmi una mano?

42. Salvatore - 3 aprile 2010

si, ci sono passato anche io .
Si deve sostituire la query    “query_posts("cat=-IDCATEGORIA");"
con  " query_posts($query_string . "&cat=-IDCATEGORIA");"


43. Barbara - 6 aprile 2010

macchè, non sono ancora riuscita,
sostituendo nella pagina news.php la query_post che Salvatore mi ha indicato mi ripete il titolo News ma non visualizzo più i post.
Qui di seguito l’inizio del codice della pagina dove non mi funzionano più i tasti older / newer.
<?php
/*
Template Name: News
*/
?>
<?php  /* get all options: */
include (TEMPLATEPATH . ‘/functions/bfa_get_options.php’);
get_header(); ?>

<?php /* If there are any posts: */
if (have_posts()) : $bfa_ata['postcount'] == 0; /* Postcount needed for option “XX first posts full posts, rest excerpts” */ ?>
 <?php /* This outputs the next/previous post or page navigation.
 This can be edited at Atahualpa Theme Options -> Style & edit the Center column */
 bfa_center_content($bfa_ata['content_above_loop']); ?>
<div class=”post-headline”>  <h1>News</h1>  </div>
<?php query_posts(‘cat=4′); ?>
 <?php /* The LOOP starts here. Do this for all posts: */
 while (have_posts()) : the_post(); $bfa_ata['postcount']++; ?>

Sicuramente sbaglio in qualcosa ma non ho ancora individuato il problema

44. dario - 2 maggio 2010

FANTASTICO!!!FANTASTICO!!!FANTASTICO!!!FANTASTICO!!!FANTASTICO!!!FANTASTICO!!!FANTASTICO!!!
 
 
BRAVO!

45. Mirco - 23 luglio 2010

Ottimo ! …una domanda aggiuntiva
e’ possibile dopo aver fatto questa procedura visualizzare oltre ai vari post della categoria anche i contenuti inseriti nella pagina? (per avere quindi una descrizione della categoria)
e quindi un esempio
NEWS
ciao questa è la pagina uno dove sono indicati tutte le News !
——————————————————————–
e poi tutti i post di seguito !
 

46. LukePet - 28 luglio 2010

Non so, penso che basti aggiungere la descrizione nella definizione del template della pagina…ma l’ho buttata lì così su due piedi. Con esattezza non so dirti, bisognerebbe fare qualche prova.

47. Enzo - 14 agosto 2010

Ciao,

Prima di tutto grazie per questo tutorial, mi ha risolto un grande problema (e sto imparando un po’ di php, che non fa male).
Vorrei chiederti una cosa: dopo avere fatto tuttte queste modifiche (che funzionano tutte) nel tema neo-sapien06, mi sono sparite dalla homepage le due sidebar di destra. Da cosa può dipendere?
Grazie ancora!

Enzo

48. Paolo - 24 agosto 2010

Grazie mille, questo tutorial è prefetto ed è quello che cercavo, però anche io vorrei visulaizzare solo i titoli e non l’articolo per intero come si può fare? Grazie in anticipo Paolo.

49. Gian Luca - 26 agosto 2010

Ciao a tutti, sto provando a barcamenarmi con WP e mi piacerebbe fare proprio un Pagina “Albo” dove visualizzare molti articoli “annuari”. penso di aver seguito alla lettera tutto quanto scritto da voi precedentemente.
ho creato un template copia di page.php ed ho inserito nuovo nome “albo” ed ho inserito solo questo:
<?php
query_posts(‘cat=30′);
?>

dato che la mia categoria ID è 30 e gli articoli creati sono ad esso categorizzati.
la Pagina “albo” che ho creato vuota è solo stata impostata con tempalte albo.php
non riesco a visualizzare più di 1 solo articolo nella Pagina.
avete un suggerimento!
 
 

50. daria - 27 agosto 2010

Beh bello… ma dove uppiamo il file appena creato?

51. daria - 27 agosto 2010

ah ok sempre nel tema di default del nostro wp!

INSERISCI IL TUO COMMENTO
In questo blog ognuno può dire la sua, i commenti sono liberi e le discussioni aperte ad ogni tipo di intervento. Verranno rimossi esclusivamente commenti spam o che risultino particolarmente offensivi.
Ogni messaggio pubblicato è un contributo fondamentale alla discussione...ora tocca a voi!