sticky post in custom loop

时间:2012-08-02 作者:George Grigorita

我在自定义循环中显示粘性帖子时遇到问题。这是我用于自定义循环的代码:

<?php
    $post_from_cat_a = new WP_Query(array( 
    \'category_name\' => \'events\',  //Get posts from category a
    \'posts_per_page\'=> 2 //Limit it to the latest one
    ));

    if( $post_from_cat_a->have_posts() ){
        while( $post_from_cat_a->have_posts() ): $post_from_cat_a->the_post(); //Display output here for post from category a
    $category = get_the_category(); 
    if($category[0]){
    echo \'<div class="cat-events"><a href="\'.get_category_link($category[0]->term_id ).\'">\'.$category[0]->cat_name.\'</a></div>\';
    }     
    get_template_part( \'content\', \'events\' ); 
    endwhile;
    }
?>          
我不明白为什么它不起作用。

Later edit: 这是我的全部homepage.php 出现问题的位置,这是content-events.php 用于事件类别中每个帖子的文件。

Second edit: 如果我包括\'post__in\' => get_option(\'sticky_posts\')wp_query 数组显示粘性帖子,但不会列出类别中的下一篇帖子。页面上只显示粘性帖子,这有点忽略了\'posts_per_page\'=> 2 论点

有人知道为什么会这样吗?

2 个回复
SO网友:Damien

如果您使用\'post__in\' => get_option(\'sticky_posts\') 然后你只会过滤那些有粘性的帖子。

正如mrwweb所说,您需要查看您的查询。然后想想你想要的“循环”。

您想显示特定查询中的所有帖子,还是显示所有类别中粘性的所有帖子?

您可能需要进行两次查询或一次客户数据库查询来选择所需的帖子。

您最好在帖子中添加标签或自定义元数据,因为您无法为特定类别的粘性帖子创建循环。

SO网友:mrwweb

您尝试使用的一些背景query_postsWP_Query 同时一次只能使用一个,它们的使用方式不同。您需要查看WP_Queryquery_posts 然后阅读以下两个WPSE线程:

  • When should you use WP_Query vs query_posts() vs get_posts()?
  • When to use WP_query(), query_posts() and pre_get_postssticky posts are enabled by default, 所以这真的会给你带来任何问题。这个query_posts 您的这一行是直接从Codex中获得的,并带有以下描述:

    仅显示第一个粘性贴子:

    修复问题,您的WP\\u查询内容看起来不错,所以我怀疑问题出在您的循环中或内容本身。

    删除您不需要的query\\u posts内容var_dump() 属于get_option( \'sticky_posts\' ) 并确认所需页面的ID是否存在\'ignore_sticky_posts\' => 0 到您的WP_Query $argscontent-home.php. 您可能正在该页面上输出不同的循环

结束

相关推荐

get_meta_data within a loop

我试图制作一个简单的小部件,它显示一个帖子列表,后面是每个帖子的一些元数据。这是我的代码:$eventdate 包含我需要检索的元数据。query_posts(\'\'); if (have_posts()) : echo \"<ul>\"; while (have_posts()) : the_post(); $eventdate = get_post_meta($post->ID, \'event-date