Я использую, pre_get_posts
чтобы настроить количество сообщений, отображаемых на моей домашней странице.
function lifelounge_query_adjust( $query ) {
if ( is_home() ) {
set_query_var( 'posts_per_page', 12 );
return;
}
}
add_filter( 'pre_get_posts', 'lifelounge_query_adjust' );
Но я сталкиваюсь с проблемой с липкими сообщениями. По сути, если у меня есть какие-либо липкие посты, запрос отобразит больше, чем 12 постов, которые я указал, потому что он отобразит 12 плюс любые липкие посты. Я мог бы, конечно, игнорировать липкие посты:
function lifelounge_query_adjust( $query ) {
if ( is_home() ) {
set_query_var( 'posts_per_page', 1 );
set_query_var( 'ignore_sticky_posts', 1 );
return;
}
}
add_filter( 'pre_get_posts', 'lifelounge_query_adjust' );
Но я не думаю, что это идеально. Я думаю, что липкие посты должны быть включены в лимит 12 постов, а не добавлены к лимиту. Это то, что имеет наибольшее значение для меня. Есть ли способ достичь этого? Я сделал ошибку, достойную лица?
В значительной степени дубликат: Sticky Posts & Posts Per Page, но это было странно закрыто, поскольку слишком локализовано. Я не согласен, очевидно, потому что я ищу ответ, но также потому, что это вопрос того, почему WordPress не соблюдает posts_per_page
ограничения, если вы используете липкие посты. Если вам нужно 12 постов на страницу, вы должны получить 12, а не 13, что вы бы получили, если бы у вас было одно липкое сообщение.
$sticky_count + (12 - $sticky_count)
на12- $sticky_count
хотя. Например, если у меня есть 1 стикер, то ваша математика все равно сработает до 12, а затем WP добавит стикер, чтобы сделать 13. О, и еслиif ($sticky_count > $posts_per_page)
мы установим значение 12, не будет ли это означать, что мы покажем 24+?