如何生成子页面列表,并使用它们的一些定制字段?

时间:2010-09-02 作者:cannyboy

我的页面结构如下:

-Home
-Cars
  -Volvo 640
   - Pics
   - Info
  -Porsche 911
   - Pics
   - Info
我想在所有汽车的汽车页面上生成一个汽车列表(这是汽车的子页面)。我该怎么做?该列表基本上是一个子菜单,应该按字母顺序显示所有汽车(注意,我不需要指向“孙子”的链接,如图片、信息)。我还需要从每个汽车页面获取自定义字段数据,并将其放在页面链接旁边。。可能吗?

2 个回复
最合适的回答,由SO网友:nickmjones 整理而成

你可以使用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;
        }
    }
?>
这很艰难,但我认为这会让你走得很远。本质上,您是在以编程方式构建标题并返回所有内容以进行打印。关键是格式化所有内容并正确设置条件。

SO网友:EAMann

这个wp_list_pages() 函数可以为您提供子页面的列表。不过,从每个页面获取自定义字段数据需要单独的查询和更多的工作。但这是一个开始:

$args = array(
    depth => \'1\',
    child_of => \'123\'
);

wp_list_pages( $args );
这将为您提供指向页面ID 123的所有子页面的链接列表。这个depth 该规范还防止检索孙页面。

但是,正如我之前所说,获取自定义字段数据有点棘手。您需要首先获取每个子页面的页面ID(可能使用query_posts()) 并将它们存储在一个数组中。然后循环遍历该数组,依次从每个页面获取自定义字段数据。

所以这是可行的。。。但我不能马上给出一个快速的解决方案。

结束

相关推荐