2012-04-24 7 views
0

子ページで、親ページのいくつかのカスタムフィールドを照会するだけでなく、親ページのすべての子ページも表示したいと思いますか? (理想的に子ページのリストで、私はそれが現在どの子ページを識別することができるはずです)WordPressの子ページの親ページのカスタムフィールドをクエリする方法はありますか?

ここで私はこれは、あなたが始めるのに役立つはずです

<?php if($post->post_parent): 
$parent = get_post($post->post_parent); 
?> 
<h2><?=$parent->address;?></h2> 
<? parent->get('address');?> 
<?php endif; ?> 

答えて

1

を使用していますコードです:

は、
<?php 
global $post; 
if($post->post_parent): 
$parent = get_page($post->post_parent); 
?> 
<h2><?php echo get_post_meta($post->post_parent, 'address', true); ?></h2> 
<?php 
$args = array(
    'child_of'  => $post->post_parent, 
    'title_li'  => '', 
    'echo'   => false, 
    'sort_column' => 'menu_order, post_title', 
); 
$children = wp_list_pages($args); //RETURNS HTML OF ALL CHILD PAGES 
endif; 
?> 

私はあなたが照会できる親ページ内に「アドレス」という名前のカスタムフィールドを持つことを意味していると思います。それ以外の場合は、「アドレス」の意味を明確にしてください(カスタムメタフィールド、テーマオプションなど)。

警告:$ children変数は、一致する親の子孫のみを取得します。そのトップレベルの祖先ではありません。つまり、現在のページが孫や孫の場合、親ページは別のページの子になります。

トップレベルの祖先を取りたい場合は、これを再帰的に行う関数を作成しましたが、かなり醜いです。私はそのルートに行くことに反対することをお勧めします。

EDIT: get_page()ではなくget_post()を使用します。投稿は階層的ではありません。

関連する問題