Child Category Image

时间:2013-01-10 作者:Josh Rodgers

我有一些代码可以在我的一个页面上显示我的子类别帖子的标题:

<?php
    $parent = get_cat_ID("photos");
    $cats = get_categories(\'child_of=\'.$parent);
    foreach ($cats as $cat) {
        echo "<ul>";
        echo sprintf("<li><a href=\'%s\'>%s</a></li>", get_category_link($cat->term_id), apply_filters("get_term", $cat->name));
        echo "</ul>";
} ?>
有没有一种方法可以同时发布子类别帖子中的随机特色图片?我很确定我可以使用这个现有的代码,只是不确定要修改什么才能使它工作。

谢谢,乔希

2 个回复
最合适的回答,由SO网友:Mike Madern 整理而成

您可以使用以下代码按类别随机获取帖子:

query_posts( array (
    \'showposts\' => 1,
    \'orderby\'   => \'rand\',
    \'cat\'       => $cat->term_id
) );

if ( have_posts() ) : while ( have_posts() ) : the_post();
...
然后使用get_the_post_thumbnail() 要检索帖子特色图像,请执行以下操作:

if ( has_post_thumbnail() )
    $image = get_the_post_thumbnail( $post_id );
您的最终代码可能如下所示:

$parent = get_cat_ID( \'photos\' );

if ( is_category( $parent ) ) {
    $cats = get_categories( \'child_of=\' . $parent );

    foreach ( $cats as $cat ) {
        query_posts( array (
            \'showposts\' => 1,
            \'orderby\'   => \'rand\',
            \'cat\'       => $cat->term_id
        ) );

        if ( have_posts() ) :
            while ( have_posts() ) :
                the_post();

                $image = \'\';
                if ( has_post_thumbnail() )
                    $image = get_the_post_thumbnail( get_the_ID() );

                echo \'<ul>\';
                printf( \'<li>%s<a href="%s">%s</a></li>\',
                    $image,
                    get_category_link( $cat->term_id ),
                    apply_filters( \'get_term\', $cat->name ) );
                echo \'</ul>\';
            endwhile;
        else:
            // CATEGORY HAS NO POSTS
        endif;
    }
} else {
    // CATEGORY DOESN\'T EXIST
}

SO网友:Josh Rodgers

我的最终代码如下所示:

<?php
    $parent = get_cat_ID("photos");
    $cats = get_categories("child_of=".$parent);
    foreach ($cats as $cat) {
    query_posts("posts_per_page=1&orderby=rand&cat=".$cat->cat_ID);
?>
    <?php if ($parent == true && have_posts()) : while (have_posts()) : the_post(); ?>
        <ul>
            <?php if (has_post_thumbnail()) { ?>
                <?php
                    printf( \'<li><a href="\'.get_category_link($cat->cat_ID).\'">\'.get_the_post_thumbnail(get_the_ID(), "album-thumb").\'</a><a href="\'.get_category_link($cat->term_id).\'">%s</a></li>\',
                    apply_filters(\'get_term\', $cat->name));
                ?>
            <?php } ?>
        </ul>
    <?php endwhile; endif; } ?>
    <?php if (! $parent == true || ! $cat == true) { ?>
        <p><?php _e("Sorry, no posts matched your criteria."); ?></p>
    <?php } ?>
<?php wp_reset_query(); ?>
基本上,在这个版本中,有两件事发生了变化:

我更改了if 为了确保父类别存在并且我们有帖子,如果这两个条件都满足,那么它将显示我的内容。。。如果没有,它什么也不做。

自从else 我写了我自己的。。。上面说。。。如果父类别或子类别不存在,则显示我的错误消息。。。如果是这样,那就什么都不做。

我不知道为什么else不起作用,但我猜是因为foreach 这是这个循环中唯一不同的地方,这在大多数其他循环中都没有。

希望这对其他人有帮助:)

谢谢迈克的帮助!!

*P、 我将把你的解决方案作为答案,因为它确实回答了我最初的问题:)

乔希

结束

相关推荐

problems exluding categories

我以前做过,但由于某种原因,它不起作用,我也不知道为什么。我只是想从博客页面中排除一些类别。我以为这件事很简单。我有索引。php文件打开,在循环之前,我这样做了 query_posts( $guery_string . \'&cat=-6\' ) if (have_posts)......rest of loop here. 我甚至尝试添加全局$query\\u字符串;最重要的是,我所做的一切都不能摆脱第6类。这种方法在最新版本的wordpress中是否不再有效?