私はこのようなページ構造を持っています:
-Home
-Cars
-Volvo 640
- Pics
- Info
-Porsche 911
- Pics
- Info
すべての自動車のCarsページに自動車のリストを作成したい(これはCarsの子ページです)。どのようにこれをしますか?リストは基本的にすべての車をアルファベット順に表示するサブメニューです(注、私は '孫'へのリンクを必要としません - 写真、情報)。また、各自動車ページからカスタムフィールドデータを取得して、ページへのリンクの横に配置する必要があります。それは可能ですか。
これを行うには、get_pages
を使用できます。
<?php
$args = array(
'post_type' => 'page',
'child_of' => 7,
);
$postobj = get_pages($args);
foreach($postobj as $item){
$dir = get_bloginfo('template_directory'); // Theme directory
$title = $item->post_title;
$parent = $item->post_parent;
$id = $item->guid;
$name = $item->post_name;
ここに着いたら、カスタムフィールドを引き出して変数に入れることができます。
$model_number = get_post_meta($item->ID, 'model_number', true);
私はそれらのトップの見出しを作るためにある種のif
ステートメントを使うでしょう。たとえば、次のようにします。
if($model_number == true){
echo stuff;
} else {
echo other stuff;
}
}
?>
それはラフですが、これはあなたにかなり長い道のりを与えることができると思います。基本的には、プログラムによって見出しを作成し、すべてを返して印刷します。重要なのは、すべてをフォーマットして、自分の条件を正しく設定することです。
wp_list_pages()
関数はあなたにあなたの子供のページのリストを与えることができます。ただし、各ページからカスタムフィールドデータを取得するには、個別のクエリともう少し作業が必要です。しかし、ここから始まります:
$args = array(
depth => '1',
child_of => '123'
);
wp_list_pages( $args );
これにより、ページID 123のすべての子ページへのリンクのリストが表示されます。depth
の指定では、孫ページも取得されないようにします。
ただし、前述したように、カスタムフィールドデータを取得するのは少し面倒です。最初にそれぞれの子ページのページIDを取得し(おそらくquery_posts()
を使用して)、それらを配列に格納する必要があります。次に、その配列をループ処理して各ページからカスタムフィールドデータを順番に取得します。
それでそれは実行可能です...しかし私は私の頭の上からすぐに解決策を提供することはできません。