- Statut : non résolu
- Ce sujet contient 8 réponses, 3 participants et a été mis à jour pour la dernière fois par dlo, le il y a 16 années.
-
AuteurMessages
-
10 décembre 2008 à 15 h 45 min #465297
Bonjour,
Ma configuration WP actuelle
– Version de WordPress : 2.6Problème(s) rencontré(s) :
Bonjour,
je souhaiterai afficher dans ma sidebar, l’arborescence des pages, du niveau 1 dans lequel je me situe…
j’ai bien trouvé ça :
http://codex.wordpress.org/Conditional_Tags#Testing_for_sub-Pages
if ( is_page(‘about’) || $post->post_parent == ‘2’ ) {
$bannerimg = ‘home.jpg’;} elseif ( is_page(‘learning’) || $post->post_parent == ’56’ ) {
$bannerimg = ‘teaching.jpg’;} elseif ( is_page(‘admissions’) || $post->post_parent == ’15’ ) {
$bannerimg = ‘admissions.jpg;} else {
$bannerimg = ‘home.jpg’; // Fall-through
}
?>mais ça marche pour 2 niveaux … mais pas trois (ou 4 ou cinq……)
Comment tester « l’ancetre » / la premiere page / le niveau 1 d’une arborescence de page …
Merci d’avance
10 décembre 2008 à 16 h 02 min #653523Tu testes l’ID du parent jusqu’à ce que tu arrives à une ID de page au niveau zéro (que tu peux obtenir en faisant un list_pages() avec la bonne option sur la profondeur)
A chaque fois que tu fais ton test, tu incrémentes un compteur dans une variable.
Tu prends la valeur du compteur.10 décembre 2008 à 16 h 04 min #653524outch … merci … ça a l’air bien … mais la jsuis largué 😉
un exemple concret ?10 décembre 2008 à 16 h 12 min #653525Et hop, un petit code qui permet de récupérer l’id de la page ancêtre d’une page dont on fournit l’identifiant:
function get_root_parent($page_id) {
global $wpdb;
$parent = $wpdb->get_var(« SELECT post_parent FROM $wpdb->posts WHERE post_type=’page’ AND ID = ‘$page_id' »);
if ($parent == 0) return $page_id;
else return get_root_parent($parent);
}Cordialement
10 décembre 2008 à 16 h 23 min #653526si je te suis … en faisant ceci, ça devrait coller ?
ben ça ne colle pasget_var(« SELECT post_parent FROM $wpdb->posts WHERE post_type=’page’ AND ID = ‘$page_id' »);
if ($parent == 0) return $page_id;
else return get_root_parent($parent);
}
echo get_root_parent(« 325 »);
if ( get_root_parent ==’320′ ) {
wp_list_pages(« title_li=&child_of=320 »);
} elseif ( get_root_parent ==’282’ ) {
wp_list_pages(« title_li=&child_of=282 »);
} else {
}
?>10 décembre 2008 à 16 h 28 min #653527au temps pour moi …
c’est en faisant ça que ça colle o/
(si je ne met pas de parametre forcement …)get_var(« SELECT post_parent FROM $wpdb->posts WHERE post_type=’page’ AND ID = ‘$page_id' »);
if ($parent == 0) return $page_id;
else return get_root_parent($parent);
}
echo get_root_parent(« 325 »);
if ( get_root_parent($post->ID) ==’320′ ) {
wp_list_pages(« title_li=&child_of=320 »);
} elseif ( get_root_parent($post->ID) ==’253’ ) {
wp_list_pages(« title_li=&child_of=253 »);
} else {
}
?>10 décembre 2008 à 16 h 34 min #653528Euh non, c’est pas tout à fait cela… Il faut récupérer l’id de la page en cours et l’utiliser comme paramètre de la fonction get_root_parent. Un truc comme ceci:
get_var(« SELECT post_parent FROM $wpdb->posts WHERE post_type=’page’ AND ID = ‘$page_id' »);
if ($parent == 0) return $page_id;
else return get_root_parent($parent);
}
$currentID = get_the_id();
if ( get_root_parent($currentID) == 320 ) {
wp_list_pages(« title_li=&child_of=320 »);
} elseif ( get_root_parent($currentID) == 282 ) {
wp_list_pages(« title_li=&child_of=282 »);
} else {
}
?>Cordialement
[EDIT] Oupsss, je vois que tu as trouvé tout seul dans l’intervalle. C’est tout bon. [/EDIT]
10 décembre 2008 à 16 h 50 min #653522euuh … ben … bizarrement … ma solution fonctionne chez moi … alors que la tienne non …oO
$post->ID n’équivaut pas a ton $currentID ??
(pour rappel … je debute hein … le php et moi …je ne suis QUE graphiste 😉10 décembre 2008 à 17 h 54 min #653529Tout dépend du contexte dans lequel tu te trouves. Si cela fonctionne, c’est le principal. 🙂
-
AuteurMessages
- Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.