自定义发布类型的条件

时间:2011-11-07 作者:Erika

我有一个查询,可以提取自定义帖子类型和常规帖子,但我如何告诉它在查询中只抵消一种帖子类型?

我的查询:

<?php query_posts( array(
      \'posts_per_page\' => 10,
      \'paged\' => ( get_query_var(\'paged\') ? get_query_var(\'paged\') : 1 ),
 ));
?>
但我希望它包括:

如果存在“Post Type”,则偏移1。

非常感谢您的帮助!

3 个回复
SO网友:Kevin Langley Jr.

您试图做的事情将无法通过单个查询完成。不确定为什么要获取所有帖子类型的所有帖子。

但是,为了做您想要做的事情,您只需要让php逻辑检查它是否是该帖子类型中的第一篇帖子,如果是,请跳过它。

SO网友:patnz

我不太清楚你所说的“Post Type”是否存在,但你能做一些类似的事情吗:

<?php 
    query_posts( 
        array( 
            \'posts_per_page\' => 10, 
            \'paged\' => ( get_query_var(\'paged\') ? get_query_var(\'paged\') : 1 ), 
            if("Post Type exists?"){ \'offset\' => 1 }
    )); 

? >

SO网友:patnz

正如KevinLangleyJr.所说,您可能需要使用php逻辑来实现这一点。

您需要为查询修改此选项,但请在循环中尝试为帖子类型添加标志:

$firstOfPostType = true; //set your flag to true initially

if( have_posts() ) : while( have_posts() ) : the_post();
if( $firstOfPostType == true && $post->post_type == "YOUR POST TYPE" ){
    continue;// Skip this iteration
    $firstOfPostType = false;// set this to false so it doesn\'t run again.
}
[编辑:添加注释中提供的格式化代码]

may 工作取决于内容POSTFORMAT中的内容。php是由get\\u template\\u part()引入的,您可能需要将代码放在其中。

<?php 

query_posts( 
array( 
    \'posts_per_page\' => 10, 
    \'paged\' => ( get_query_var(\'paged\') ? get_query_var(\'paged\') : 1 ), 
    )
); 


$posts = get_posts( 
    array ( 
        \'numberposts\' => \'10\', 
        \'post_type\' => array ( 
            \'post\', 
            \'episodes\', 
            \'featured-stories\' 
        ), 
    ))
; 
$firstOfPostType = true;
foreach ($posts as $post) : start_wp(); 

if( $firstOfPostType == true && $post->post_type == "episodes"){ 
    $firstOfPostType = false;
    continue;
}

?> 


<?php 
    static $count2 = 0; 
    if ($count2 == "10") { break; } 
    else { ?> 
        <?php get_template_part( \'content\', get_post_format() ); ?> 
        <?php $count2++; } ?> 
<?php endforeach; ?> 

结束

相关推荐