循环特定类别主页(Loop for a specific category for homepage

2019-10-20 20:28发布

对于我的主页我想显示特定类别(例如类“食品”),而不是所有文章的默认显示的帖子。

这怎么可能实现呢? 这是真的,我应该使用wp_query()和避免query_posts() 另外,我将需要重置wp_reset_postdata(); 这个循环中index.php

我已阅读食品和周围一派,但仍然很没有信心与改变循环。

我想下面的代码的工作,但我得到的死亡的白色屏幕在WordPress主题2012年和2013年我取代了代码index.php

<?php
$query = new WP_Query('cat=1');
if ($query->have_posts()) :
    while ($query->have_posts()) : $query->the_post();
        the_title();
    endwhile;
endif;
?>

编辑:

死亡的白色屏幕是由于缺少?>我在其他地方index.php文件。 小白的错误。 但现在我有分页的问题。 第2页显示相同的职位为1页可能是什么问题?

我对里面分页代码functions.php

if ( ! function_exists( 'my_pagination' ) ) :
    function my_pagination() {
        global $wp_query;
        $big = 999999999; // need an unlikely integer   
        echo paginate_links( array(
             'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 
             'format' => '?paged=%#%',
             'current' => max( 1, get_query_var('paged') ), 
             'prev_next'    => True,
             'total' => $wp_query->max_num_pages
        ) );
}



编辑:

我用下面的彼得·古森的解决方案。 问题解决。

Answer 1:

你不应该更改主查询的主页或任何档案页面上的自定义查询。 自定义查询是为次要内容,不显示你的主要内容。 我已经做了非常详细的帖子在这个问题上对WPSE,你可以检查出在这里 。 它也涵盖了一下,为什么你应该使用 query_posts

为了解决你的问题,从您的index.php删除您的自定义查询,并且只需添加默认的回送样

if(have_posts()){
   while(have_posts()) {
     the_post();

     //YOUR LOOP ELEMENTS

   }
} 

现在,您将再次看到主页上的所有文章。 要只在首页上显示所选择的类别,使用pre_get_post在执行之前改变主查询。 添加到您的functions.php

function show_only_category( $query ) {
    if ( $query->is_home() && $query->is_main_query() ) {
        $query->set( 'cat', '1' );
    }
}
add_action( 'pre_get_posts', 'show_only_category' );

这将解决你的问题分页以及

编辑

那么用户着想,我已经转载我的答案从WPSE到这个问题,通过相同的OP



Answer 2:

<?php
    get_header(); ?>

    <div id="container">
        <div id="content" role="main">

        <?php
            $categories = get_categories(); //get all the categories

            foreach ($categories as $category) {
                $category_id= $category->term_id; ?>

                <div><?php echo $category->name ?></div>

                <?php
                    query_posts("category=$category_id&posts_per_page=100");

                    if (have_posts()) {
                        while (have_posts()) {
                            the_post(); ?>

                <a href="<?php the_permalink();?>"><?php the_title(); ?></a>

                            <?php }
                        }
                    }
            } ?>

        </div>
    </div>


文章来源: Loop for a specific category for homepage