3 回答
TA贡献1863条经验 获得超2个赞
刚刚在我的本地环境中尝试了这段代码,唯一的变化是数组post_type
中的值$args
,它似乎工作正常。
我建议做什么,如下所示:
仔细检查该值是否
post_type
与帖子类型的 slug 相匹配。这可能只是一个拼写错误的情况,多年来,这件事让我绊倒的次数比我愿意承认的还要多。
您可以通过查找functions.php
函数register_post_type
调用来找到它。检查该帖子类型下是否确实有已发布的帖子。再说一遍,我也曾多次遇到过这种情况。
此外,您可能需要考虑稍微整理一下代码,以防止可能丢失某些内容并使其在将来更易于管理。
循环访问可用的帖子类型数组,然后WP_Query
为每个可用的帖子类型构造一个数组,这是我首选执行您所描述的任务,它看起来像这样:
<?php
$post_types = array( 'yourposttype', 'yourotherposttype' );
$common_arguments = array(
'post_status' => 'publish',
'order' => 'ASC',
'posts_per_page' => -1,
);
?>
<?php foreach ( $post_types as $post_type ): ?>
<?php
$post_type_argument = array( 'post_type' => $post_type );
$arguments = array_merge( $common_arguments, $post_type_argument );
$query = new WP_Query( $arguments );
?>
<?php if ( $query->have_posts() ): ?>
<?php while ( $query->have_posts() ) : $query->the_post(); ?>
<?php // Example output ?>
<?php the_title(); ?>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
<?php endforeach; ?>
这样,如果您需要显示另一种帖子类型,您可以将其添加到$post_types
数组中,而无需复制代码块。
最后,当您使用时,您是正确的wp_reset_postdata()
,这是在循环自定义之后运行的推荐函数WP_Query
,wp_reset_query()
在这种情况下有点多余。
TA贡献1966条经验 获得超4个赞
我找到了解决办法!事实上,并不是 WP_Query() 循环导致了问题,而是保存正在显示的帖子的轮播。每个循环都会将自定义帖子放入轮播中,并且我为页面上的每个轮播重复使用相同的 id。这对 JavaScript 来说效果不佳。
为了纠正这个问题,我在主 js 文件中复制了 JavaScript 函数,但将 #original-name 更改为 #other-name。我还将 carousel id 更改为 other-name。
现在一切都按预期进行。
- 3 回答
- 0 关注
- 122 浏览
添加回答
举报