Я использую, 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+?$posts_per_page
будет равен$sticky_count
, и здесь я установил параметр posts_per_page равным 1, и я думаю, что все будет в порядке, так как этот случай может быть редким, и это будет только на первой странице ($sticky_count + 1
).Там проблема, если липкие сообщения находятся на первой странице.
Решение состоит в том, чтобы уменьшить количество закрепленных постов для закрепленных постов, которые являются частью первой страницы.
Надеюсь, это поможет
источник
Я убрал оба вышеупомянутых ответа в один, чтобы он не загружал ненужный WP_Query, исправляет, если залипание на первой странице, сокращает время на обработку информации с более чистым более быстрым кодом.
источник