Display page of custom posts?

时间:2014-07-24 作者:Steve

我有一个自定义的帖子类型,“design\\u asset”。

我将它们显示在页面模板上,带有循环

<?php
rewind_posts();
$paged = ( get_query_var( \'paged\' ) ) ? get_query_var(\'paged\') : 1;
$args = array( \'post_type\' => \'design_asset\', \'posts_per_page\' => 100, \'orderby\' => \'title\', \'order\' => \'ASC\'  );
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
?>
<div class="col-md-4 col-xs-12">
<div class="thumbnail">
    <div class="caption">
        <?php the_post_thumbnail( \'thumbnail\', array(\'class\' => \'img-responsive\') ); ?>
        <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
        <p class="excerpt"><?php the_excerpt(); ?></p>
    </div>
</div>
</div>
<?php    endwhile;   ?>
同样在这一页上,我列出了wp_list_categories

单击此列表中的类别时,它将转到存档。php并在此处显示类别,thanks to this post\'s reply, e、 g。/category/components/

我不完全理解Wordpress为什么使用archive.php 而不是category.php, 但现在让我们继续吧。

现在,我正在尝试重新设计这个循环archive.php. 我把它搬到了loop-assetThumbs.php 并称之为<?php get_template_part(\'loop\', \'assetThumbs\'); ?>

当然,它会调用所有帖子或帖子类型,我不知道如何在URL中只显示“活动”类别,/category/components/

如何修改循环以执行此操作?或者有没有更好的方法通过wp_list_categories?

注意:我也不知道为什么这里会显示循环的2个空迭代。

enter image description here

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

我想你的问题就在你提到的代码中。pre_get_post 如果你没有正确使用它,它就是一个混蛋。

使用中使用的任何存档类型条件pre_get_posts, 它将影响前端和后端。这包括归档页面、类别和分类页面、标记页面和作者页面。你需要做一个检查,确保你只运行pre_get_posts 在前端(使用!is_admin()).

你需要做的另一件重要事情是跑步pre_get_posts 仅在主查询上。因为pre_get_posts 首先在主查询之前运行,然后WP_Query 并使用修改查询变量,包括主查询和任何自定义查询WP_Query 将受到影响。(使用is_main_query())

因此,您需要将有问题的代码修改到此中,以添加!is_admin 检查

function namespace_add_custom_types( $query ) {
    if( !is_admin() && $query->is_category() && $query->is_main_query ) {
        $query->set( \'post_type\', array(
            \'post\', \'your-custom-post-type-here\'
));
    }
}
add_filter( \'pre_get_posts\', \'namespace_add_custom_types\' );
我希望这有帮助。如果没有,请告诉我。

EDIT

史蒂夫,在你做出我提议的这些改变之前,先检查一下my answer 关于你的另一个问题。但请记住这个答案中的要点,以供将来参考。

结束

相关推荐

Featured posts and the loop

我正在尝试在索引中添加一个框。php在何处显示最新的3篇特色帖子。根据this tutorial, 我已将以下内容添加到functions.php:add_theme_support( \'featured-content\', array( \'filter\' => \'magdeleine_get_featured_posts\', \'max_posts\' => 3, ) ); function magdeleine