2010-02-23 15 views
9

Estoy intentando crear una lista de páginas de hermanos (no publicaciones) en WordPress para rellenar la barra lateral de una página. El código que he escrito con éxito devuelve el título principal de una página.¿Cómo puedo recuperar una lista de páginas de hermanos de una página de Wordpress?

<?php 
$parent_title = get_the_title($post->post_parent); 
echo $parent_title; ?> 

lo que tengo entendido, es necesario Identificación de una página (en vez de título) para recuperar los hermanos de una página (a través de wp_list_pages). ¿Cómo puedo obtener la identificación de los padres de la página?

Enfoques alternativos son bienvenidos. El objetivo es hacer una lista de los hermanos de una página, no necesariamente solo recuperar la identificación de los padres.

Respuesta

23

$post->post_parent le está dando la identificación principal, $post->ID le dará la página ID actual. Por lo tanto, el siguiente comando lista los hermanos de una página:

wp_list_pages(array(
    'child_of' => $post->post_parent, 
    'exclude' => $post->ID 
)) 
4
<?php if($post->post_parent): ?> 
<?php $children = wp_list_pages('title_li=&child_of='.$post->post_parent.'&echo=0'); ?> 
<?php else: ?> 
<?php $children = wp_list_pages('title_li=&child_of='.$post->ID.'&echo=0'); ?> 
<?php endif; ?> 
<?php if ($children) { ?> 
<ul class="subpage-list"> 
<?php echo $children; ?> 
</ul> 
<?php } ?> 

No utilice el parámetro de excluir, solo objetivo que .current_page_item diferenciar.

+0

La mejor solución para este problema de la OMI – benpalmer

14
wp_list_pages(array(
    'child_of' => $post->post_parent, 
    'exclude' => $post->ID, 
    'depth' => 1 
)); 

La respuesta correcta, ya que las otras dos respuestas no muestran exclusivamente los hermanos.

2

Algunas de las respuestas en esta página tienen información ligeramente desactualizada. A saber, exclude ya no parece ser necesario cuando se usa child_of.

aquí está mi solución:

// if this is a child page of another page, 
// get the parent so we can show only the siblings 
if ($post->post_parent) $parent = $post->post_parent; 
// otherwise use the current post ID, which will show child pages instead 
else $parent = $post->ID; 

// wp_list_pages only outputs <li> elements, don't for get to add a <ul> 
echo '<ul class="page-button-nav">'; 

wp_list_pages(array(
    'child_of'=>$parent, 
    'sort_column'=>'menu_order', // sort by menu order to enable custom sorting 
    'title_li'=> '', // get rid of the annoying top level "Pages" title element 
)); 

echo '</ul>'; 
Cuestiones relacionadas