来自短代码的WP_Query和posts_per_page只返回一个帖子(WordPress)

时间:2012-10-16 10:18:08

标签: php wordpress loops shortcode

我在我的functions.php中创建了一个短代码,用于返回标有“突出显示”的3个最新博客文章(标题,缩略图,阅读更多链接)。我的短代码中的PHP成功识别了tag参数,但它只返回一个帖子。

如您所见,我使用“posts_per_page”参数来定义我想要返回的帖子数。此刻,当我输入1,2或3时,它会按日期顺序返回第1,第2或第3个帖子 - 而不是3个最新帖子。我没有成功尝试过“numberposts”和“showposts”(试错!)。

有谁能告诉我我在这里缺少什么?这是在我的functions.php文件中:

function highlight_posts() {
    $args = array('tag' => 'highlight' , 'posts_per_page' => 4);
    $the_query = new WP_Query( $args );
        while ( $the_query->have_posts() ) : $the_query->the_post();
            $return_string = '<div class="blog-post-highlight"><div class="blog-post-img"><a href="'.get_permalink().'">'.get_the_post_thumbnail($page->ID, array( 300, 168 )).'</a></div><div class="blog-post-content"><h3><a href="'.get_permalink().'">'.get_the_title().'</a></h3><p class="read-more"><a href="'.get_permalink().'">Read More...</a></p></div><div class="clear"></div></div>';
        endwhile;
    wp_reset_postdata();
    return $return_string;
}

add_shortcode( 'highlightposts', 'highlight_posts' );

通过插入[highlightposts]

,将其部署在WYSIWYG编辑器中

1 个答案:

答案 0 :(得分:3)

试试这个:

function highlight_posts() {
    $args = array('tag' => 'highlight' , 'posts_per_page' => 4);
    $return_string ="";
    $the_query = new WP_Query( $args );
        while ( $the_query->have_posts() ) : $the_query->the_post();
            $return_string .= '<div class="blog-post-highlight"><div class="blog-post-img"><a href="'.get_permalink().'">'.get_the_post_thumbnail($page->ID, array( 300, 168 )).'</a></div><div class="blog-post-content"><h3><a href="'.get_permalink().'">'.get_the_title().'</a></h3><p class="read-more"><a href="'.get_permalink().'">Read More...</a></p></div><div class="clear"></div></div>';
        endwhile;
    wp_reset_postdata();
    return $return_string;
}

add_shortcode( 'highlightposts', 'highlight_posts' );

您为$ return_string提供了新值,而不是添加新值。 检查是否是那个