Переопределить количество по умолчанию, чтобы показать для одного цикла?
Вопрос
Возможно ли переопределить набор сообщений в блогах, чтобы показать на страницу (как определено в соответствии с настройками чтения в администраторе WordPress)? Я хочу сделать это так, как я использую пользовательский цикл, покажет неограниченный номер.
Решение
Аргумент, который контролирует, сколько постов показано в запросе, это post_per_page
<?php query_posts( array(
'post_type' => 'post',
'posts_per_page' => -1 )
);
?>
Также следует отметить, что в филиале 3.0 есть ошибка, которая предотвращает отображение всех постов -1 целого числа. Он зафиксирован в 3.1, но обходной путь состоит в том, чтобы использовать очень высокое число вместо -1
видеть:
Другие советы
Конечно, измените запрос, добавив
<?php query_posts('post_type=post&numberposts=-1'); ?>
Эйлин прав, но лучше использовать аргументы в качестве массива <?php query_posts( array( 'post_type' => 'post', 'numberposts' => -1 ) ); ?>
У меня была та же проблема. Я решил добавить пользовательскую переменную, а затем поймать эту переменную во время pre_get_posts
Чтобы установить post_per_page
Query_var:
function custom_query_vars_filter($vars) {
$vars[] = 'post_per_page_override';
return $vars;
}
add_filter( 'query_vars', 'custom_query_vars_filter' );
add_action( 'pre_get_posts', 'rc_modify_query_get_design_projects' );
function rc_modify_query_get_design_projects( $query ) {
if( $query->query_vars['post_per_page_override'] == '3') {
$query->set('posts_per_page', '3');
}
}
Затем я пошел еще дальше и заставил его получить точную сумму, которую вы хотите отобразить в пользовательском запросе var:
function custom_query_vars_filter($vars) {
$vars[] = 'post_per_page_override';
return $vars;
}
add_filter( 'query_vars', 'custom_query_vars_filter' );
add_action( 'pre_get_posts', 'rc_modify_query_get_design_projects' );
function rc_modify_query_get_design_projects( $query ) {
if( $query->query_vars['post_per_page_override']) {
$customPPPlimit = $query->query_vars['post_per_page_override'];
$query->set('posts_per_page', $customPPPlimit);
}
}
Работал на меня ..