Query_Posts()与Get_Posts()多个循环

时间:2013-02-21 作者:David Garcia

我有一个模板,最初只有一个循环,它使用query\\u posts,我使用相同的方法又添加了两个循环,但是在阅读了allot关于这些的内容后,我得出结论,我将停止使用它,每个人都反对使用它。

original query_posts loop (latest posts)

<?php if ( !is_front_page() && tfuse_options(PREFIX.\'_pagination_portfolio\') ){
    $cat = get_query_var( \'cat\' );
    query_posts( array ( \'posts_per_page\' => -1, \'cat\'=>$cat ) );
}
while (have_posts()) : the_post(); ?>
    //blah posts here
<?php endwhile; ?>

2nd custom get_posts loop (random posts)

<?php if ( !is_front_page() ){
    //$cat = get_query_var( \'cat\' );
    $args = array( \'numberposts\' => 10, \'orderby\' => \'rand\' );
    $rand_posts = get_posts( $args );
}
foreach( $rand_posts as $post ) : ?>
    //blah posts here
<?php endforeach; ?>

3rd custom get_posts loop no working (most viewed posts)

if ( !is_front_page() ){
    $cat = get_query_var( \'cat\' );
    $args = array( \'v_sortby\' => \'views\', \'v_orderby\' => \'DESC\', \'numberposts\' => 10, \'cat\'=> $cat);
    $most_viewed_posts = get_posts( $args );
}
foreach( $most_viewed_posts as $post ) : 
    //blahblah
<?php endforeach; ?>
问题是,第三个循环没有显示正确的帖子,好像它无法识别帖子元,但是如果我使用query\\u posts,它就会工作!

视图v\\u排序方式,v\\u排序方式

非常感谢您的帮助,我对这方面还很陌生。

Update根据对此提出的类似问题site. 下面是使用带有元键的query\\u帖子实现它的另一种方法。我想有一种更好的重写代码的方法来使用元键+wp\\u查询或获取某人关心的帖子?我对这个很陌生,看起来太胖了s

<?php $posts_per_page = get_query_var(\'posts_per_page\'); ?>
<?php $paged = intval(get_query_var(\'paged\')); ?>
<?php $paged = ($paged) ? $paged : 1; ?>
<?php $args = array(
\'posts_per_page\' => $posts_per_page,
\'paged\' => $paged,
\'more\' => $more = 0,
\'meta_key\' => \'views\',
\'orderby\' => \'meta_value_num\',
\'order\' => \'DESC\',
); ?>
<?php query_posts($args); ?>
<?php if (have_posts()) : while (have_posts()) : the_post() ;?>
<div <?php post_class() ?> id="post-<?php the_ID(); ?>">

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

多亏了评论员们的提示,我才得以做到这一点:)

    <?php 
if ( is_front_age() ){
                    $most_viewed_posts = new WP_Query( array(\'v_sortby\' => \'views\', \'v_orderby\' => \'DESC\', \'showposts\' => 10, \'cat\'=> 3) );
                    }
                    while ( $most_viewed_posts->have_posts() ) : $most_viewed_posts->the_post(); ?>

//post structure

 <?php wp_reset_postdata(); ?>

结束

相关推荐

Excluded category from loop

我使用它从循环中排除特定类别。它做到了这一点,但它也做到了这一点:在我的页面上,它显示了除此之外的其他类别的帖子。/** Replace the standard loop with our custom loop */ remove_action( \'genesis_loop\', \'genesis_do_loop\' ); add_action( \'genesis_loop\', \'child_do_custom_loop\' ); function chil