0

我尝试将其发布在 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 79 下所有六个子类别的列表。但是,我还想在每个列表项中为 6 个子类别中的每一个返回一个随机缩略图。

不幸的是,此代码从我的所有帖子中返回一个随机缩略图,而不仅仅是 ID 79 和它的特定子级。我需要它从其 parent 中返回的同一类别中返回一个缩略图<li>

此外,如果没有代码,代码将返回“无缩略图”,或者如果我else取出,它什么也不返回。我想让它每次都返回至少一张图像,所以理想情况下会有某种逻辑说总是返回至少一张图像。我只是不知道该怎么做。

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

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

提前感谢您的帮助!

4

1 回答 1

0

因此,为了做到这一点,我需要首先为每个循环执行一次,将类别 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>';
?>
于 2013-11-13T03:57:38.513 回答