调用带有WP_QUERY的函数只会产生第一个结果

时间:2016-10-25 作者:Robert Porter

因此,我制作了一个简单的php脚本,以列表的形式显示一个类别中排名前三的帖子。非常简单。问题是我会经常使用它,所以我想我应该是CLIVER,并将其作为一个函数写出来,在这里我可以传递类别ID号,它将生成列表。我是php新手,但我在JavaScript中经常这样做。

问题是它似乎只想显示我传递给它的第一个类别。我已经读了一些内容,但wp\\u reset\\u postdata();wp\\u reset\\u query()或rewind\\u posts()似乎有效。

这看起来应该很简单,但我真的不知道如何继续。非常感谢您的帮助。

这是我的代码,去掉了所有额外的位:

<!--PHP Slider Unordered List Generator-->
<?php
    function SliderBuilder($catagoryID) { 
        //Set up variables to convert catagoryID into useable string
        $preped_catagoryID = "\'cat=".$catagoryID."&posts_per_page=3\'";
        echo $preped_catagoryID;
        ?>
            <ul class="blog-slider" id="blog-slider">
        <?php
            $catquery = new WP_Query( $preped_catagoryID );
            while($catquery->have_posts()) : $catquery->the_post();
                ?>
                    <li class="blog-slide" onclick="location.href=\'<?php the_permalink();?>\';">
                        <div class="blog-thumb">
                            <?php the_post_thumbnail(\'small-thumbnail\'); ?>
                        </div>
                    </li>
                <?php
                echo $preped_catagoryID;
            endwhile;

            wp_reset_postdata();
        ?>
            </ul>
        <?php
    }
    SliderBuilder("2");
    SliderBuilder("3");
?>

1 个回复
最合适的回答,由SO网友:jgraup 整理而成

如果切换到get_posts 您不必担心重置循环。

function SliderBuilder( $categoryID ) {

    $args = array (
            \'cat\'            => $categoryID,
            \'posts_per_page\' => 3,
    );

    $posts = get_posts( $args );

    echo $categoryID;

    ?>
    <ul class="blog-slider" id="blog-slider">
        <?php

        foreach ( $posts as $post ) { ?>

            <li class="blog-slide" onclick="location.href=\'<?php echo get_the_permalink( $post->ID ); ?>\';">
                <div class="blog-thumb">
                    <?php echo get_the_post_thumbnail( $post->ID, \'small-thumbnail\' ); ?>
                </div>
            </li>

            <?php
        }

        ?>
    </ul>
    <?php
}

SliderBuilder( 2 );
SliderBuilder( 3 );

相关推荐

retrieve post details in loop

我编写了一个函数来循环浏览用户的帖子,我试图按状态显示每个帖子,并为每个状态组显示不同的消息。出于某种原因-get\\u post\\u status不起作用,其他任何挂钩也不起作用。有人能帮忙吗?我甚至试着暂时缩短函数,只是回显变量,看看它们在做什么,它只是空白。function user_item($type, $tax, $term_name, $term_id) { if (!is_user_logged_in()) return; $args = array(