关于自定义查询的模板的建议

时间:2013-05-12 作者:Dominic P

我正试图找出解决这个问题的最佳方法。我有几个归档类型的页面,可以一次显示多个帖子类型的内容。例如,我用自己的搜索功能覆盖了WordPress的默认搜索行为。由于没有使用核心WordPress搜索,全局$wp_query 变量为空,标准循环函数(have_posts(), the_post(), 等)不会起作用。

我的搜索类生成按相关性排序并按帖子类型分组的结果。结果如下所示:

$results = array(

    \'page\'  => array(
        \'post_id\' => {WP_Post object},
        \'post_id\' => {WP_Post object},
        \'post_id\' => {WP_Post object}
    ),
    \'post\'  => array(
        \'post_id\' => {WP_Post object},
        \'post_id\' => {WP_Post object}
    ),
    \'custom_post_type\' => array(
        \'post_id\' => {WP_Post object},
        \'post_id\' => {WP_Post object}
    )
);
我现在所做的输出这些是非常可怕的。我循环浏览每个帖子类型并输出<section> 为了它。然后,在帖子类型部分的模板中,我运行以下循环来输出各个帖子:

foreach ( $my_posts as $my_post ) {

    $GLOBALS[\'post\'] = $my_post;
    setup_postdata( $my_post );

    get_template_part( \'content-multi\', $post_type );
}
问题是,我希望模板部分在标准WordPress循环和覆盖标准WordPress查询的情况下(如搜索页面)可用。因此,对全局变量和setup_postdata(). 有人能推荐一种更好的方法来实现这一目标吗?

UPDATE: 因此,我构建自定义循环的方式似乎并没有那么糟糕。不过,我仍在努力找出这些页面的提要。RSS对我来说是很新的。有人能给我一些关于生成这些提要的建议吗?

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

我真的不认为你所做的有什么不对;全球化$post 和使用setup_postdata() 是非常标准、成熟的技术,用于处理不是直接从标准循环中出来的帖子;他们通常不被认为是黑客。

结束