【问题标题】:WP_Query and posts_per_page from shortcode only returning one post (WordPress)来自简码的 WP_Query 和 posts_per_page 仅返回一篇文章(WordPress)
【发布时间】:2012-10-06 10:05:03
【问题描述】:

我在我的functions.php 中创建了一个短代码,旨在返回带有“highlight”标签的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 编辑器中

【问题讨论】:

    标签: php wordpress loops shortcode


    【解决方案1】:

    试试这个:

    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 赋予了新值,而不是添加新值。 检查是不是那个

    【讨论】:

    • 您先生,是个传奇人物。效果很好。非常感谢。我在 StackOverflow 上找不到任何涵盖此内容的内容,因此希望您的回答将来对其他人有所帮助(假设我的标题和描述足够好!)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 2013-12-06
    • 2013-07-27
    • 2019-11-14
    • 1970-01-01
    相关资源
    最近更新 更多