Question about querying posts

时间:2012-05-23 作者:Jaypee

我正在做的查询中有这个代码

<?php query_posts(\'post_type=vendors\'); ?>
<?php while (have_posts()):the_post(); ?>
<?php 
$featured = get_field(\'promote_to_homepage\', $post -> ID, true) ;                   
?>
<?php if($featured){ ?>
<div id="vendor-img"><img src="<?php the_field(\'vendor_logo\'); ?>"/></div><h5><?php  
the_title() ?></h5><?php } ?>
<?php endwhile; ?>
因此,如果我设置

&;showposts=1

&;posts\\u per\\u page=1

问题是,如果我设置为显示1,查询将始终查询最新的帖子,但如果在另一篇帖子上设置了“升级到页面”选项,则不会显示该选项,会发生什么情况。

关于如何查询该帖子类型下的所有帖子,但只显示1,有什么想法吗?

谢谢

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

这里有一个非常基本的示例,它应该做您需要它做的事情。基本上,我们会获取自定义帖子类型中的所有帖子,然后逐个循环浏览它们。当我们找到带有“promote\\u to\\u homepage”的集合时,我们会呈现一些显示并退出循环:

// Query for all posts in the post type "vendors"
query_posts( \'post_type=vendors\' );

$exitloop = false;

// Start the loop
while ( have_posts() ) : the_post();

    // Is this post the featured post?
    $featured = get_field( \'promote_to_homepage\', $post->ID, true ) ;                   

    if ( $featured ) { ?>

    // This is our featured post, so display it and set $exitloop so we quit
    $exitloop = true;

        <div id="vendor-img">
            <img src="<?php the_field(\'vendor_logo\'); ?>"/>
        </div>
        <h5><?php the_title(); ?></h5>

    <?php }

    if ( $exitloop ) break;

endwhile;
不过,有更优雅的方法可以做到这一点。没有get_field() 函数,所以我假设您使用的是高级自定义字段插件。如果是,此字段存储在元键中,也可以通过以下方式检索:

get_post_meta( $post->ID, \'_promote_to_homepage\', true );
这意味着您可以执行自定义查询,只选择一篇包含特定元键的文章:

$args = array(
    \'post_type\'      => \'vendors\',
    \'posts_per_page\' => 1,
    \'meta_query\'     => array( array(
        \'key\'     => \'_promote_to_homepage\',
        \'value\'   => true,
        \'compare\' => \'=\'
    ) )
);

$custom_query = new WP_Query( $args );

// Start the loop
while ( $custom_query->have_posts() ) : $custom_query->the_post(); 
?>

    <div id="vendor-img">
        <img src="<?php the_field(\'vendor_logo\'); ?>"/>
    </div>
    <h5><?php the_title(); ?></h5>

<?php 
endwhile;

结束

相关推荐