Я використовую 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 дописів, а не додаватися до ліміту. Саме це має для мене найбільше сенсу. Чи є спосіб досягти цього? Чи зробив я помилку, гідну обличчя?
Дуже багато дубліката: Клейкі повідомлення та повідомлення на сторінку, але це було дивно закрито як занадто локалізоване. Я не погоджуюся, очевидно, тому що я шукаю відповідь, а також тому, що це питання, чому 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+?