你很接近了。您有:
foreach (get_child_pages(wp_get_post_parent_id(get_the_ID())) as $s) {
echo \'<li><a href="\' . get_the_permalink($s->ID) . \'">\' . get_the_title($s->ID) . \'</a></li>\';
}
我们需要在上面添加一层来显示这两个列表。然而,我们不能假设一种类型的帖子都会出现在一起(即一个类别的所有帖子,然后是下一个类别的所有帖子)。这意味着我们不能按照它进来的顺序把它全部吐出来。
下面是一种利用holding对象根据该字段的值对帖子进行分组的方法:
//this will hold the post IDs sorted by outer groups
$list_groups = array();
foreach (get_child_pages(wp_get_post_parent_id(get_the_ID())) as $s) {
//get the category of this post
$list_category = get_post_meta( $s->ID, "type", true );
//if this is the first post of that category, initialize the array
if ( ! isset( $list_groups[ $list_category ] ) ){
$list_groups[ $list_category ] = array();
}
//add this post ID to that category in our holding array
$list_groups[ $list_category ][] = $s->ID;
}
//at this point we have an array ($list_groups) that has an inner array of post IDs for each category
foreach ( $list_groups as $category_name => $category_posts ){
echo "<div class=\'category-group\'><h2>$category_name</h2><ul>";
foreach ( $category_posts as $category_post_id ){
$p_permalink = get_the_permalink( $category_post_id );
$p_title = get_the_title( $category_post_id );
echo "<li><a href=\'$p_permalink\'>$p_title</a></li>";
}
echo "</ul></div>";
}
因此,我们首先创建了一个保持数组,其结果如下所示:
$list_groups
---Product
---10
---15
---33
---About
---5
---12
---55
它只是一个为每种类型保存数组的数组,在这些数组中是属于那里的帖子的ID。
然后我们循环遍历持有数组的对象,并按类别将其吐出。
旁注:您的wp\\u查询似乎将结果限制为两个类别中的一个。我可能误解了这一点,但如果你只得到一个类别,请检查它。