- Home
- Categorie
- Coding e Sistemistica
- Gestione di Forum
- [Wordpress] Gestire bene le pagine
-
[Wordpress] Gestire bene le pagine
Nel blog che sto preparando ho molte pagine da inserire.
La struttura è tipo questa:- Pagina Radice
-- Pagina 1
--- Pagina A
--- Pagina B
-- Pagina 2
--- Pagina C
--- Pagina D
--- Pagina E
ecc....
Il problema è che quando clicco su "Pagina Radice" nel menu in alto e leggo il contenuto di quella pagina sulla sinistra nel menu "More Pages" mi compaiono tutte le sottopagine (1, A, B, 2, C,D, E). Io invece vorrei visualizzare solo le pagine figlie della corrente, cioè se sono su "Pagina Radice" devo avere nel menu la 1 e la 2, se mi trovo su "Pagina 1" nel menu dovrei avere A e B.
Non so se sono stato chiaro, spero di si.
Ho già provato con questa soluzione,
, ma non è cambiato nulla.
- Pagina Radice
-
mhh... ho l'impressione che dovrai mettere mano alle query che fa al database. ha già cercato sul codex (http://codex.wordpress.org) ?
-
Ho visto qui e qui ma non riesco a trovare nel mio template la funzione wp_list_page che penso sia quella sulla quale lavorare
-
di solito sta nella sidebar, o nell'header.php se la lista ce l'hai orizzontale; ma mi rendo conto che è un po' vago, dipende tropo dal template che usi. cerca dentro ai file in tutta la cartella del tema
-
Ok, ho trovato la riga che mi interessa nell'header
<?php wp_list_pages('depth=1&title_li=0&sort_column=menu_order'); ?>
Penso che dovrei inserire il parametro *child_of= *e un ID di pagina. Se metto come ID lo zero mi lista tutte le pagine.
Ma come faccio a sapere l'ID della pagina attuale?Edit: per il child_of vedere qui
-
Gorka scusami ma il tuo blog lo vedo tutto defacciato te ne sei accorto?
-
@dani74 said:
Gorka scusami ma il tuo blog lo vedo tutto defacciato te ne sei accorto?
Io lo vedo bene, cosa hai visto tu?
-
l?ID della pagina lo vedi dal pannello di gestione delle pagine
-
Si Tambu però a me serve dinamico, in modo che pongo *child_of=id_attuale
*Quindi dovrei scoprire come si chiama quella variabile.
-
L'ID dovrebbe essere qui: $wp_query->post->ID
-
Grazie ragazzi, ho risolto con questo pezzetto di codice nell'header
$pagina=$wp_query->post->ID; wp_list_pages('depth=1&title_li=0&sort_column=menu_order&child_of='.$pagina);
Sono soddisfatto però all'80% in quanto con questa soluzioni mi mostra pagine "figlie" e "nipoti" io invece vorrei mostrasse solo il primo livello (quindi solo figli, niente nipoti).
Se riuscissi in quest'ultima cosa sarebbe proprio il massimo, anche se già mi sta bene così.Grazie a tutti
-
strano perché con depth=1 dovrebbe mostrare solo le sottopagine!
in realtà leggendo il codex inglese noto una sfumatura diversa nella descrizione di DEPTH... non capisco se si riferisce alla root o alla pgina in cui si è
-
Adesso non mi funziona di nuovo (nella home page non mi linka la pagina principale), appena ho tempo ci rimetto mano e se risolvo vi faccio sapere.
-
a me il codice:
[php]$pagina=$wp_query->post->ID;
wp_list_pages('depth=1&title_li=0&sort_column=menu_order&child_of='.$pagina);
[/php]
Mostra solo i figli di primo livello della pagina corrente.Nella variabile $wp_query->post->ID c'è l'id della pagina solo se ti trovi in una pagina.
Io non so di preciso cosa vuoi ottenere, se ad esempio vuoi che:
- Se sei in una pagina vedi i figli di 1° livello
- se non sei in una pagina vedi il 1° livello
puoi fare:
[php]$pagina = (is_page()) ? $wp_query->post->ID : 0;
wp_list_pages('depth=1&title_li=0&sort_column=menu_order&child_of='.$pagina);
[/php]
che è come scrivere:[php]if(is_page()){
$pagina=$wp_query->post->ID;
wp_list_pages('depth=1&title_li=0&sort_column=menu_order&child_of='.$pagina);
} else {
wp_list_pages('depth=1&title_li=0&sort_column=menu_order&child_of=0');
}[/php]
-
Spero di avere il tempo di provare pomeriggio, appena lo faccio vi informo
-
salve, io ho utilizzato questi comandi che avete dato.. ho un sol oproblema.. vorrei che l'output fosse col nome della pagina, non con l'id... (che nell'output di wp_list_pages agisse il mod_rewrite per intenderci....) voi avete idea di come fare?io ho cercato un pò in giro ma non ho trovato nulla a riguardo
-
ciao, se definisci un permalink nelle opzioni, anche l'utl delle pagine dovrebbe essere riscritto automaticamente, credo...
-
si, adesso è ok ^__^
-
ciao raga,
io volevo fare in modo di escludere una pagina dalla barra principale ed arrivare a questa tramite un link che ho creato nella sidebar.
sapete come posso fare?
grazie!
-
Finora, l'unica cosa che sembra avere a che fare col mio problema è questo codice nella pagina header
<!-- navigation ................................. -->
<div id="navigation">
<ul>
<li<?php if (is_home()) echo " class="selected""; ?>><a href="<?php bloginfo('url'); ?>">Home</a></li>
<?php
$pages = get_pages();
if ($pages) {
foreach ($pages as $page) {
$page_id = $page->ID;
$page_title = $page->post_title;
$page_name = $page->post_name;
if ($page_name == "archives") {
(is_page($page_id) || is_archive() || is_search() || is_single())?$selected = ' class="selected"':$selected='';
echo "<li".$selected."><a href="".get_page_link($page_id)."">Archives</a></li>\n";
}
elseif($page_name == "home") {"";
}
elseif($page_name == "about") {
(is_page($page_id))?$selected = ' class="selected"':$selected='';
echo "<li".$selected."><a href="".get_page_link($page_id)."">About</a></li>\n";
}
elseif ($page_name == "about_short") {/ignore/}
else {
(is_page($page_id))?$selected = ' class="selected"':$selected='';
echo "<li".$selected."><a href="".get_page_link($page_id)."">$page_title</a></li>\n";
}
}
}
?>
</ul></div>
<!-- /navigation -->Forse è questo che devo modificare?