无法在我的页面上获取带有类别的帖子

时间:2012-04-11 作者:Siddharth

我正在使用wordpress作为我的CMS。我在想,左边的面板在其相关类别下有我的“帖子”的标题,右边是帖子的标题及其内容。

我尝试将以下代码放在页面中(在为wordpress启用php插件之后)。但由于我不懂php,我尝试了下面的方法,但它不显示类别为“basics”的页面。

[php]
$myposts = get_posts(\'numberposts=5&category=basics\'); 
foreach($myposts as $post) :    
setup_postdata($post);
//add in standard WordPress post specific template tags here eg.   the_title(),     the_permalink, the_content, the_excerpt etc.
endforeach;
[/php]

2 个回复
SO网友:onetrickpony

在此处添加标准的WordPress帖子特定模板标记,例如\\u title()、\\u permalink、\\u content、\\u摘录等;

正如注释所说,调用显示标题所需的函数。

类别参数appears 表示类别ID,而不是slug。尝试使用category_name 相反

[php]

$myposts = new WP_Query(\'posts_per_page=5&category_name=basics\'); 
while($myposts->have_posts()):
  $myposts->the_post();

  // your output
  the_title();

endwhile;

wp_reset_query();

[/php]

SO网友:Tom J Nowell

要知道要修复什么,你需要知道你做错了什么。这就是您的代码所做的:

抓取类别中所有带有数字的帖子:“基本”

  • 对于找到的每个帖子,不做任何事情
    • 完成for循环
      • 您没有检查是否确实找到了任何帖子,您也没有在之后清理查询数据,因此之后的任何循环都不会工作,而且正如小马提到的一个技巧,您使用的是slug而不是ID。

        因此,取而代之的是:

        // use WP_Query isntead as it\'s clearer, and use category_name
        $myposts = WP_Query(\'numberposts=5&category_name=basics\');
        
        // check if we actually have any posts
        if($myposts->have_posts()){
            // we do, start the post loop
            while($myposts->have_posts()){
                $my_posts->the_post();
        
                //add in standard WordPress post specific template tags here eg.
                the_title();
                the_content();
        
            }
        } else {
            // if no posts were found it\'s a good idea to know about it
            echo \'no posts were found in the basics category\';
        }
        
        // cleanup the post data
        wp_reset_postdata();
        

    结束