我从get_post()获取重复数据

时间:2011-11-01 作者:Dr Deo

我试图在我的wordpress博客上只显示“最新”类别的帖子,但奇怪的是,同样的帖子竟然显示了两次。我做错了什么?enter image description here

/*
* Theme file:index.php
*/
    global $post;
    $categories=get_categories();
    foreach($categories as $categories_item)
    {
        if(strcasecmp($categories_item->name, \'latest\') == 0)//case-insensitive string comparison
        {
            $args = array(
            \'numberposts\'     => 2,
            \'category\'        => $categories_item->cat_ID,
            \'orderby\'         => \'post_date\',
            \'order\'           => \'ASC\',
            \'post_status\'     => \'publish\'
            );
                $latest_stuff = get_posts( $args );
                echo "<h2>Latest stuff</h2>";
                foreach($latest_stuff as $latest_stuff_item)
                {
                    setup_postdata($post);
                    echo "<div>".the_content()."<div><hr>";
                }   
        }
    }

3 个回复
SO网友:pp19dd

如果不查看数据库数据(post、inherits等),这只是一点猜测。

请尝试以下操作:

确保"post_type"=>"post" 指定,以便不获取自动保存的继承(如果默认为“any”)get_category_by_slug(\'latest\') 到调用的“category”(它返回一个ID为的对象)

SO网友:Zeth

在我的例子中,是WPML返回了两种语言。解决方法是suppress_filter in the WP_Query.

$args = array(
  ...
  \'suppress_filters\' => false
  ...
);

$wp_query = new WP_Query( $args );
....

SO网友:Lee

问题是您正在使用echo the_content();.

这会导致循环输出出现在循环外部。如果你改变the_content()get_the_content() 这将起作用。

注意:您可能需要将ID传递到get_the_content() 通过使用$latest_stuff_item->ID

foreach($latest_stuff as $latest_stuff_item)
{
  setup_postdata($post);
  echo "<div>".get_the_content()."<div><hr>";
}  

结束