显示每个类别的随机缩略图 - Wordpress

时间:2013-11-13 03:26:52

标签: php wordpress wp-list-categories

我尝试在WordPress交易所发布这个,但不幸的是我没有进一步,所以我在这里尝试。希望这有效!

我有一种感觉,我走在正确的轨道上,我只是没有足够的可靠的PHP知识来比我目前所处的更进一步。

我目前正在使用以下代码从单个类别返回子类别列表:

<?php
    $taxonomyName = "category";
    $terms = get_terms($taxonomyName,array('parent' => 79));
    echo '<ul>';
    foreach($terms as $term) {
        echo '<li>';
        echo '<a href="'.get_term_link($term->slug,$taxonomyName).'">'.$term->name.'</a><br/>';

        $thumbnails = get_posts('numberposts=1&orderby=rand');
        foreach ($thumbnails as $thumbnail) {
        echo '<a href="' . get_permalink( $thumbnail->ID ) . '" title="' . esc_attr( $thumbnail->post_title ) . '">';
            if ( has_post_thumbnail($thumbnail->ID)) {
                echo get_the_post_thumbnail($thumbnail->ID, 'thumbnail');
            } else {
            echo 'no thumbnail';    
        }
        echo '</a>';
        }
        echo '<li>';
    }
    echo '</ul>';
?>

此代码有些作用。它返回父ID下的所有六个子类别的列表,ID 79.但是,我还希望在每个列表项中为6个子类别中的每一个返回一个随机缩略图。

不幸的是,这段代码会从我的所有帖子中返回一个随机缩略图,而不仅仅是ID 79及其特定的孩子。我需要它从同一类别中返回一个缩略图,该缩略图在其父<li>中返回。

此外,如果没有代码,代码将返回“无缩略图”,或者如果我取出else,则不返回任何内容。我想把它带到每次至少返回一个图像的位置,所以理想情况下会有某种逻辑表示始终返回至少一个图像。我只是不知道该怎么做。

有一些简单的方法可以做到这一点吗?我想我需要对该数组进行排序并在嵌套的foreach循环中返回类别,但遗憾的是它已经超出了我的想法。

我想我正在寻找类似这个人的东西,但不幸的是,他们没有得到任何回复。 - &GT; https://stackoverflow.com/questions/18750040/random-featured-image-based-on-category

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

因此,为了做到这一点,我需要先为每个循环执行a,将类别slug存储为变量JAMterm,然后在查询中使用它来从类别中提取一个随机缩略图。

感谢@Renishkhunt帮助我一路获得这个答案。

<?php
    $taxonomyName = "category";
    $terms = get_terms($taxonomyName,array('parent' => 79));
    echo '<ul>';
    foreach($terms as $term) {
        echo '<li><a href="'.get_term_link($term->slug,$taxonomyName).'">'.$term->name.'</a><br/>';

        $JAMterm = $term->slug;

        global $wp_query;
        $term = $wp_query->queried_object;

        $args=array(
            'orderby' => 'rand',
            'posts_per_page' => 1,
            'post_type' => 'post',
            'tax_query' => array(
                array(
                    'taxonomy' => 'category', 
                    'field' => 'slug', 
                    'terms' =>  $JAMterm
                )
            )
        );

        $new_query = null;
        $new_query = new WP_Query($args);

        while ($new_query->have_posts()) : $new_query->the_post();
            the_post_thumbnail(); 
        endwhile;
        wp_reset_postdata();


        echo '</li>';
        }
    echo '</ul>';
?>