web-dev-qa-db-ja.com

get_pages()& "child_of"

私は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"の使い方を誤解していませんか?

どうもありがとう!

1
Kenny

あなたは間違った場所でそれを使っています、あなたは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または任意のページテンプレートで記述する必要があります。そうすると、現在のページの子ページが返されます。

あなたが問題を見つけたら私に知らせてください。

0
Sudhir Tiwari