特定的POST不会被排除在循环之外

时间:2014-01-15 作者:agis

我已注册CPT并创建archive-myCPT.php, 在这里,我想从主循环中排除一个特定的帖子。

这是我的代码:

<?php 
    $query = new WP_Query( array(
   \'post_type\' => \'cpt\',
   \'orderby\' => \'date\', 
   \'order\' => \'DESC\', 
   \'posts__not_in\' => array( 118 ),
   \'posts_per_page\' => 1
) );
        if( $query->have_posts() ){ 
            // normal blog layout
                $x = 1;
                while ( $query->have_posts() ){
                    $query->the_post(); 
                    if ( 0 === (int) $post->post_parent ) {
                    get_template_part( \'inc/post-format/content-debate\');
                }
  ........................
所有其他参数都按预期工作,但\'posts__not_in\' => array( 118 ), 不起作用,我仍然能看到。

我做错了什么?

谢谢

UPDATE:

这是我在循环中使用的更相关的代码:

<?php 

        if( have_posts() ){ 
            // normal blog layout
                $x = 1;
                while ( have_posts() ){
                    the_post(); 
                    if ($post->ID != 118) {
                    get_template_part( \'inc/post-format/content-debate\');
                }


                    // advertising between posts
                    if($ad_posts_mode != \'none\'){
                        // take into account ad frequency
                        if (($x % $ad_posts_frequency) == 0){

                            switch ($ad_posts_mode) {
                                case \'image\':
                                    echo \'<div class="\'.(($ad_posts_box) ? \'box\' : \'\').\' between_posts"><a target="_blank" href="\'.of_get_option(\'ad_posts_image_link\').\'"><img src="\'.of_get_option(\'ad_posts_image\').\'"></a></div>\';
                                break;
                                case \'html\':
                                    echo \'<div class="\'.(($ad_posts_box) ? \'box\' : \'\').\' between_posts">\'.apply_filters(\'shortcode_filter\',do_shortcode(of_get_option(\'ad_posts_code\'))).\'</div>\';
                                break;
                            }
                        }
                    }
                    $x++;
                }
            }

1 个回复
最合适的回答,由SO网友:Gilipe 整理而成

你似乎只差一个字母。

post__not_in => array(118)

Post & Page Parameters

您还可以尝试添加if语句,例如:

if($post->ID != 118) :
。。。运行其余代码

虽然不是最优的,但如果没有看到模板的其余部分,我无法确定。

其他编辑:

<?php
$loop = new WP_Query(array(
    \'post_type\'       => \'cpt\',
    \'orderby\'         => \'date\',
    \'order\'           => \'DESC\',
    \'posts_per_page\'  => -1
));
if($loop->have_posts()) :while($loop->have_posts()) : $loop->the_post();
    if($post->ID != 118) :
?>
The Title is: <?php the_title(); ?>. The ID is: <?php $post->ID; ?>
<?php endif; endwhile; endif; wp_reset_query(); ?>
在我创建的一个测试CPT上使用这个简单的示例,并创建几个测试帖子(再加上使用其中一个测试帖子的随机ID),帖子没有显示出来。如果它仍然为您显示,则可能不是正确的$post->ID,或者您的示例中缺少了一些内容。

结束

相关推荐

按自定义域(wp-Query和循环)排序和显示帖子)

我只想在主页上显示即将到来的活动帖子。我使用“custom field suite”插件创建了一个自定义字段,名为“ENDS”,表示事件结束的日期。正如你所知,我只想在家里举行即将到来的活动,最接近现在的日期排在第一位。过期后,我希望将其归档到“归档”中,该页面在另一个页面上可见(该页面还应以最近过期的事件开始排序归档的事件帖子)。模板使用无限滚动加载帖子,这是我的索引文件,带有默认循环:http://pastebin.com/x3NzZBZX我需要集成这样的东西,但没有成功:<?php $