Very short trick: pagine genitori e pagine figlie in WordPress

In WordPress alternativamente ai post sono disponibili le pagine che, se pur simili, hanno alcune importanti differenze con i “Post” (articoli) veri e propri. In praticolare una pagina può avere delle sotto pagine (“figli”), similmente a quello che accade con le categorie. Ecco alcuni script utili per districarsi nella loro gestione e manipolazione:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
 * Questo codice, ad esempio, può essere messo in
 * una sidebar e verrà visualizzato nel momento che
 * viene visualizzata una pagina (vedi is_page())
 *
 * $post è global $post;
 *
 */

if( is_page() ) { // se stiamo visualizzando una pagina
  // controlla se questa pagina ha un "genitore"
  if($post->post_parent) {
      // elenco dei figli a partire dal genitore $post->post_parent
      $children = wp_list_pages("&title_li=&child_of=" . $post->post_parent . "&echo=0");
  } else {
    // altrimenti sono "io stesso il genitore" e quindi elenco i miei figli
    $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
  }
  if ($children) {
    echo $children;
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
/**
 * Recupera il link (permalink) ad una pagina, sia essa
 * genitore o figlio
 *
 * @return HTML del link
 * @param object $p Pagina
 */

function get_page_link_from_any( $p ) {
  if( $p->post_parent ) {
    $p = get_post( $p->post_parent );
  }
  return( '<a href="' . get_permalink($p->ID) . '">' . $p->post_title . '</a>');
}

3 commenti a: “ ”

  1. 13 mar, 2009 Very short trick: pagine padri e pagine figlie in Wordpress …:

    [...] approfondire consulta articolo originale: Very short trick: pagine padri e pagine figlie in WordPress … Articoli correlati: WordPress trick: inserire un testo predefinito alla fine dei post [...]

  2. 27 mar, 2011 alcina:

    uhm… ho letto solo il titolo dell’articolo, ma non ho continuato perché il titolo, appunto, non mi ha ispirato per nulla… infatti contiene un antipatico errore, che dimostra quanto si conosca sempre meno la lingua italiana e nel contempo si sia sempre maschilisti… eh già, le pagine “padri”!!! ma questo è un colmo!
    Le pagine possono essere solo madri, o meglio, in questo contesto, il termine “genitrici”.
    Spero sia una semplice svista, anche se stile “lapsus freudiano”, e che tu abbia la cortesia di correggerlo, e che, passando io, o un’altra ragazza, su questo blog, non si legga più questo titolo, ma solo le utili “dritte” di cui ti ringrazio.
    Ciao!
    alcina

  3. 28 mar, 2011 Giovambattista Fazioli:

    @alcina: concordo! Purtroppo di sviste ne potresti trovare altre, dovute principalmente alla “fretta” e all’abitudine di leggere (e tradurre male) dall’inglese. Ho preferito, tuttavia, vista la tua corretta osservazione, tradurre letteralmente il termine tecnico “parent” in “genitore”, così da non offendere nessuno. La “p” di parent ti porta ad tradurre – erroneamente – in “padre”. Che poi, tra sviluppatori, nei discorsi tecnici, la traduzione non è usata; si usa appunto dire “…la pagina parent…”, in un gergo italo-tecnico-inglese non piacevole e non gradito ad alcuni, anche se molto utilizzato tra programmatori (sia scritto che parlato).
    È nell’articolo che mi sento obbligato a tradurre, per rendere comprensibili – al pubblico meno tecnico – alcuni concetti a me ovvi.
    Se trovi altre traduzioni non appropriate, come sicuramente accadrà, ti prego di segnalarmelo, così che io possa “rimediare” immediatamente.
    Grazie :)

Lascia un commento

TAG XHTML PERMESSI: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERIMENTO CODICE:
<pre></pre> // blocco generico
                   <code></code> // blocco generico
                   [cc_actionscript][/cc_actionscript] // Actionscript
                   [cc_actionscript3][/cc_actionscript3] // Actionscript 3
                   [cc_css][/cc_css] // CSS Style Sheet
                   [cc_html][/cc_html] // HTML
                   [cc_js][/cc_js] // Javascript
                   [cc_objc][/cc_objc] // Objective-C
                   [cc_php][/cc_objc] // PHP
                   [cc_sql][/cc_sql] // SQL