私はYoutubeでget_pages()と "child_of"についてのワードプレスチュートリアルを見ています。
(17’28”から18’35”まで) https://www.youtube.com/watch?v=GHTZn3atTcM
ページが子を持っているかチェックするために(ren)、それをチェックするために "child_of"と共にget_pages()を使うことを提案しました。それで、私は以下のカテゴリー構造を作成しました:
About Us
- Sub about us // child of about us
Contact Us // with no child(ren)
各カテゴリに1つの投稿があります。
それから私はチェックするためにsingle.phpに以下を入れます:
$array = get_pages('child_of=' . $post->ID);
echo count($array);
"About Us"は子供がいるので1を返すべきだとします。
"Sub about us"と "Contact Us"はどちらも子を持っていないので0を返すべきです。
しかし、最終的にはすべて0を返しています。自分が間違っていることを知っているでしょうか。
Get_pages()& "child_of"の使い方を誤解していませんか?
どうもありがとう!
あなたは間違った場所でそれを使っています、あなたはpage.phpの中で同じ関数を使うことができます、そして、あなたがsingle.phpの中でそれを使いたいならあなたはパラメータとして静的なpageIdを渡さなければなりません。
現時点では、現在の記事の投稿IDを返す$post->ID
を渡していますが、Articlesはページとは関係ありません。
$defaults = array(
'depth' => 0,
'show_date' => '',
'date_format' => get_option( 'date_format' ),
'child_of' => 0,
'exclude' => '',
'title_li' => __( 'Pages' ),
'echo' => 1,
'authors' => '',
'sort_column' => 'menu_order, post_title',
'link_before' => '',
'link_after' => '',
'item_spacing' => 'preserve',
'walker' => '',
);
$r = wp_parse_args( $args, $defaults );
上記のコードはすべてのページを返します。今、あなたが私たちについての子供を取得したい場合は'child_of' => 0
パラメータで私たちについてのPageIDを渡します。当方の子供のみ返却します。
もう一つは、あなたは次の関数を使用して現在のページの子ページを取得することができます。
$mypages = get_pages( array( 'child_of' => $post->ID, 'sort_column' => 'post_date', 'sort_order' => 'desc' ) );
ここでは、このコードをpage.phpまたは任意のページテンプレートで記述する必要があります。そうすると、現在のページの子ページが返されます。
あなたが問題を見つけたら私に知らせてください。