PHP循环浏览类别(以及所有帖子的生成网址)

时间:2018-07-06 13:52:32

标签: php wordpress loops

我对php还是比较陌生的(不要进一步调整一些代码) 所以我想要的是每个类别(类别ID 1(未分类)除外) 我想要类别网址+类别名称 对于类别中的每个帖子,我都希望url +标题(最多循环3次)

我到目前为止所拥有的是:

<div class="divs">
    <div class="divs">
        <div class="divs">
            <h3 class="divs">
                <a href="<?php echo get_category_link( "5" );?>">
                    <?php echo get_cat_name(5);?>
                </a>
            </h3>
        </div>

        <div class="divs">
            <ol>
                <?php
                    $args = array('category' => 5, 'post_type' =>  'post'); 
                    $postslist = get_posts($args);   
                    $i = 0; 

                    foreach ($postslist as $post) :  setup_postdata($post);{if(++$i > 3) break;} 
                ?>  

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

                      <?php endforeach; ?> 
        </div>
    </div>
</div>
</ol>

这确实满足了我的要求,只是它仅针对课程ID 5。有没有一种简单的方法可以使所有类别的循环都如此?

编辑: 基本上,我希望代码能够遍历所有类别,而不只是针对类别5(我们添加/删除类别,因此对数字进行硬编码没有用)

2 个答案:

答案 0 :(得分:0)

这应该有效

<?php
$args = array( 'category__and' => array(2, 3, 4, 5), 'post_type' =>  'post' );
$i = 0; 
$postslist = get_posts( $args );   
foreach ($postslist as $post) {
    setup_postdata($post); 
    if (++$i > 4) break;
    ?>
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> 
<?php } ?>

答案 1 :(得分:0)

由于您不想对类别ID进行硬编码,因此需要通过get_all_category_ids来获取它们并在结果上循环。这可能有效:

<div class="divs">
    <div class="divs">
        <?php
        $categoryIds = get_all_category_ids();
        foreach($categoryIds as $categoryId): ?>
        <div class="divs">
            <h3 class="divs">
                <a href="<?php echo get_category_link($categoryId); ?>">
                    <?php echo get_cat_name($categoryId); ?>
                </a>
            </h3>
        </div>

        <div class="divs">
            <ol>
                <?php
                $args = array('category' => $categoryId, 'post_type' => 'post');
                $postslist = get_posts($args);
                $i = 0;

                foreach ($postslist as $post) : setup_postdata($post);
                    {
                        if (++$i > 3) {
                            break;
                        }
                    }
                    ?>

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

                <?php endforeach; ?>
            </ol>
        </div>
        <?php endforeach; ?>
    </div>
</div>