显示帖子的最后一页

时间:2012-07-25 作者:Squrler

我使用自定义循环来显示使用分页的帖子。我的查询显示每页有4篇文章,共有4页,因此总共有16篇文章。是否可以先加载文章的最后一页?所以当我加载查询时,它首先显示第4页,然后当我单击“显示下一页”时,它显示第3页,等等?

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

是否可以先加载文章的最后一页?

顺序DESC 而不是ASC 并利用posts_clauses 滤器

function wpse_59557_order_desc( $pieces ) 
{
    // Add conditionals here and abort in cases, where we don\'t want this, for e.g.:
    // if ( ! is_home() OR ! is_front_page() ) return;

    // We only want if to run once
    remove_filter( current_filter(), __FUNCTION__ );

    return $pieces[\'orderby\'] = \'DESC\';
}
add_filter( \'posts_clauses\', \'wpse_59557_order_desc\' );
解释posts_clauses 是一系列过滤器中的最后一个过滤器(例如。posts_where), 允许操作当前查询的。如果调用所有任务,前面的过滤器会执行以下操作:修改sql查询的where/order/orderby/etc.段。此筛选器允许详细修改默认核心查询,因此有助于避免对单个任务执行另一个查询。

何时使用它

如果您需要执行某项任务,默认情况下这是不可能的,并且会使您陷入拒绝第一个查询并添加另一个查询的情况,那么可以使用此筛选器。

要考虑什么?这个过滤器会触发很多东西。因此,始终确保在不需要/不需要修改的情况下中止此过滤器。我还给remove_filter() 避免多次拦截查询。如果需要,可以将条件句移出函数并包装add_filter() 调用条件。

结束

相关推荐

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