Revised by
Willy Bahuaud
b1e5dac
| <?php
add_filter( 'query_vars', 'sticky_offset_query_var' );
function sticky_offset_query_var( $vars ) {
$vars[] = 'ppp_include_sticky';
return $vars;
}
add_filter( 'the_posts', 'sticky_count_offset', 10, 2 );
function sticky_count_offset( $posts, $q ) {
if ( $q->get( 'ppp_include_sticky' )
&& 0 < $q->get( 'posts_per_page' )
&& false == $q->get( 'ignore_sticky_posts' ) ) {
$posts = array_slice( $posts, 0, $q->get( 'posts_per_page' ) );
}
return $posts;
}
add_filter( 'pre_get_posts', 'sticky_count_on_paged' );
function sticky_count_on_paged( $q ) {
if ( is_home()
&& $q->get( 'ppp_include_sticky' )
&& $q->is_paged()
&& false == $q->get( 'ignore_sticky_posts' ) ) {
$offset = count( get_option( 'sticky_posts', array() ) );
$page_offset = $offset + ( ( $q->get( 'paged' ) -1 ) * $q->get( 'posts_per_page' );
$q->set( 'offset', $page_offset );
}
return $q;
}
|