绕过循环的自定义Wordpress index.php无法正常工作

绕过循环的自定义Wordpress index.php无法正常工作,php,wordpress,wordpress-theming,Php,Wordpress,Wordpress Theming,我正在为一个客户构建一个Wordpress主题,它不同于我以前构建的任何其他主题,因为主页是一个跨越多个不同容器和样式的帖子集合。它看起来和感觉都像一本杂志,在每个月初,9个不同的帖子同时发布,每个帖子都属于不同的类别。许多帖子的风格都不一样,我无法使用传统的循环: <?php if(has_posts()) : while(has_posts)) : the_post(); ?> // do stuff <?php endwhile; endif; ?> $slugs

我正在为一个客户构建一个Wordpress主题,它不同于我以前构建的任何其他主题,因为主页是一个跨越多个不同容器和样式的帖子集合。它看起来和感觉都像一本杂志,在每个月初,9个不同的帖子同时发布,每个帖子都属于不同的类别。许多帖子的风格都不一样,我无法使用传统的循环:

<?php if(has_posts()) : while(has_posts)) : the_post(); ?>
// do stuff
<?php endwhile; endif; ?>
$slugs数组是我需要查询的每个类别slugs的集合-每个类别都将显示一篇文章。我的想法是,我可以循环这个数组,并使用一组固定的查询参数$args,检索每个slug的单个最新帖子。当我在slug数组上循环时,我将查询结果存储在一个关联数组$slugPostMap中,其中类别slug指向实际的post

稍后在页面正文中,我将使用类别slug索引从$slugPostMap中获取所需的帖子。下面是一个例子:

<?php  
foreach($slugPostMap['ministry-update'] as $p): 
    setup_postdata($p); 
?>
<a class="homepageVideoPostTitle" href="<?php the_permalink(); ?>"><?php the_date('F Y','','',true); ?></a>
<div class="homepageVideoPostSubtitle">
    <?php the_title();  ?>
</div> <!-- end homepageVideoPostSubtitle -->
<div class="homepageVideoPostContent">
    <?php the_excerpt(); ?>
</div>
<?php endforeach; ?>
我在开始时使用foreach循环的原因是,据我所知,Wordpress模板的几个核心标记--u title、_permalink等只在循环中可用。因为我在这里手动调用setup_postdata,这是在循环过程中幕后调用的,所以我还使用foreach来限制调用setup_postdata时发生的任何奇怪巫毒事件的范围

在大多数情况下,这是可行的。在上面的示例中,调用_摘录的结果显示为预期结果。但是,其他一些模板标记没有返回任何值,特别是\u permalink和\u title。当我在真实的Wordpress安装中尝试这一点时,我没有收到任何错误,页面加载也很好

我假设问题在于我不了解如何在这种情况下正确绕过循环,但事实上,没有任何错误或任何其他线索导致我出现在这里

这是Wordpress 3.0,运行在某种Linux版本上。我已经有许多其他Wordpress安装在这个盒子上运行,没有问题,我能够使用这个相同的Wordpress实例和默认主题,没有问题


谢谢你抽出时间-对不起,这本小说。如果我遗漏了任何相关细节,请告诉我。

就像你的情况一样,我也不知道会发生什么奇怪的巫毒,但是如果你更改了主题代码以使用在循环之外工作的函数呢。和
应该做你需要做的。

就像你的情况一样,我也不知道会发生什么奇怪的巫毒,但是如果你改变了主题代码,使用循环之外的函数会怎么样。和
这些模板函数使用:global$post;访问post信息

与此相反:

foreach$slugPostMap['ministry-update']作为$p:

您应该能够简单地使用$post作为子变量:


foreach$slugPostMap['ministry-update']作为$post:

这些模板函数使用:global$post;访问post信息

与此相反:

foreach$slugPostMap['ministry-update']作为$p:

您应该能够简单地使用$post作为子变量:

foreach$slugPostMap['ministry-update']作为$post:

<?php  
foreach($slugPostMap['ministry-update'] as $p): 
    setup_postdata($p); 
?>
<a class="homepageVideoPostTitle" href="<?php the_permalink(); ?>"><?php the_date('F Y','','',true); ?></a>
<div class="homepageVideoPostSubtitle">
    <?php the_title();  ?>
</div> <!-- end homepageVideoPostSubtitle -->
<div class="homepageVideoPostContent">
    <?php the_excerpt(); ?>
</div>
<?php endforeach; ?>