php - Wordpress 如何为自定义帖子类型执行嵌套/多级查询
问题描述
我正在尝试显示具有相应子模块的不同自定义帖子类型(名为“leistungen”)的列表。
所以在 URL“/services”下我想要这样的东西。
服务A
- 模块 A1
- 模块 A2
- 模块 A3
服务乙
- 模块 B1
- 模块 B2
- 模块 B3
我在 UI 中有以下设置
我当前的存档循环看起来像这样。我似乎错过了一些东西,但经过几个小时的尝试,我还是没有得到它。
<?php
$outer_args = array(
'post_type' => 'leistungen',
'numberposts' => -1,
'post_parent' => 0
);
$outer_query = new WP_Query($args);
if ($outer_query->have_posts()) : ?>
<?php while ($outer_query->have_posts()) : $outer_query->the_post(); ?>
<?php $outer_id = get_the_ID(); ?>
<h2><?php the_title(); ?></h2>
<?php $issue = new WP_Query(array(
'numberposts' => -1,
'post_type' => 'leistungen',
'post_parent' => $outer_id,
)); ?>
<?php
if ($inner_query->have_posts()) ?>
<?php while ($inner_query->have_posts()) : $inner_query->the_post(); ?>
<p><?php the_title(); ?></p>
<?php endwhile; ?>
<?php $inner_query->reset_postdata(); ?>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
目前,我既没有得到结果,也没有任何错误。
解决方案
您可以使用WP_Query
with 组合get_pages
来实现您想要的。
$args = array(
'post_type' => 'leistungen',
'posts_per_page' => -1,
);
$results = new WP_Query($args);
if ($results) {
while ($results->have_posts()) {
$results->the_post();
echo "<h3>" . get_the_title() . "<h3>";
$sub_pages_args = array(
'post_type' => 'leistungen',
'child_of' => get_the_ID(),
);
$sub_pages = get_pages($sub_pages_args);
echo "<ul>";
foreach ($sub_pages as $sub_page) {
echo "<li>";
echo $sub_page->post_title;
echo "</li>";
}
echo "</ul>";
}
}
wp_reset_postdata();
哪个输出:
Service A
Module A1
Module A2
Module A3
Service B
Module B1
Module B2
Module B3
测试和工作!让我知道你是否也可以让它工作!
推荐阅读
- c++ - 在 C++ Visual Studio 中处理模板化类的更简单方法?
- c# - 使用指定字符串拆分字符串,中间没有分隔符,中间有文本
- python-3.x - 如何使用 Etsy API 凭据在 python 中获取和发布数据
- r - ggplot 强制实线
- typescript - 在 TypeScript 中解析生成的方法声明
- flutter - Snackbar 和异常:scaffold.of()
- html - 如何在 django 模板中保存选定的选项?
- java - VLCJ 获取原始输出数据
- c# - 为什么 WriteableBitmap BackBufferStride 与 EmguCV Mat Step 不同
- android - android片段livedata删除观察者不起作用