是否可以先加载文章的最后一页?
顺序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()
调用条件。