2010-02-23 37 views
9

Tôi đang cố gắng tạo danh sách các trang anh chị em (không phải bài đăng) trong WordPress để điền vào một thanh bên của trang. Mã tôi đã viết thành công sẽ trả về tiêu đề của trang gốc.Làm cách nào để truy xuất danh sách các trang anh chị em của trang Wordpress?

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

Theo tôi được biết, bạn cần id của trang (chứ không phải là tiêu đề) để lấy anh chị em của một trang (thông qua wp_list_pages). Làm thế nào tôi có thể nhận được id của cha mẹ của trang?

Phương pháp thay thế được hoan nghênh. Mục đích là liệt kê anh chị em của một trang, không nhất thiết chỉ lấy id của cha mẹ.

Trả lời

23

$post->post_parent cấp cho bạn ID cha, $post->ID sẽ cung cấp cho bạn ID trang hiện tại. Vì vậy, sau đây sẽ liệt kê anh chị em của page:

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 } ?> 

Không sử dụng các tham số loại trừ, chỉ cần mục tiêu mà .current_page_item để phân biệt.

+0

giải pháp tốt nhất cho vấn đề này IMO – benpalmer

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

Câu trả lời đúng, vì cả hai câu trả lời khác đều không độc quyền hiển thị anh chị em.

2

Một số câu trả lời trên trang này có thông tin lỗi thời. Cụ thể, exclude không còn cần thiết khi sử dụng child_of.

Đây là giải pháp của tôi:

// 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>'; 
Các vấn đề liên quan