WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Заданное количество постов с wp_query

Вывожу посты вот таким образом, есть пагинация, нужно сделать чтобы выводились не все посты а только первые 100

global $wp_query;
$foo = $wp_query;
$args = array(
	'paged'          => $paged,      
	'post_type'      => 'post', 
	'posts_per_page' => 10, 
	'meta_key' => 'ratings_average',
	'orderby' => 'meta_value_num',
	'order' => 'DESC',
	'meta_query' => array(
		array(
			'key' => 'ratings_users',
			'value' => 2,
			'compare'   => '>=',
		)
	)       
);  
0
lethalblo
1.1 года назад 5
  • 0
    el-lable260 el-lable.ru
    global $wp_query;
    	$foo = $wp_query;
    	$args = array(
    		'paged'          => $paged,       
    		'post_type'      => 'post', 
    		'posts_per_page' => 10, 
    		'meta_key' => 'ratings_average',
    		'orderby' => 'meta_value_num',
    		'order' => 'DESC',
    		'numberposts' => 100
       'meta_query' => array(
    	   array(
    		   'key' => 'ratings_users',
    		   'value' => 2,
    		   'compare'   => '>=',
    	   )
       )        
    	);
    lethalblo 1.1 года назад

    что-то не сработал параметр 'numberposts' => 100

    Комментировать
  • 0
    Glomberg139 viktor-web.ru

    Здравствуйте.
    Параметр запроса numberposts работает в функции get_posts();.
    Вы, видимо, по-другому получаете записи.
    Попробуйте использовать условие:

    global $wp_query;
    if( get_query_var('paged') <= 10 ){  
    	$foo = $wp_query;
    	$args = array(
    		'paged'          => $paged,       
    		'post_type'      => 'post', 
    		'posts_per_page' => 10, 
    		'meta_key' => 'ratings_average',
    		'orderby' => 'meta_value_num',
    		'order' => 'DESC',
    		'meta_query' => array(
    			array(
    			   'key' => 'ratings_users',
    			   'value' => 2,
    			   'compare'   => '>=',
    			   )
    			)        
    	);
    	// Тут выполняем запрос с параметрами $args
    }
    lethalblo 1.1 года назад

    Работает но не совсем так как хотелось бы, поскольку выводит страниц страниц больше 10, но записи есть только на 10 страницах, остальные пустые.
    Вот весь код

    global $wp_query;
    
    	$foo = $wp_query;
    	$args = array(
    
    		'paged'          => $paged,       
    		'post_type'      => 'post', 
    		'posts_per_page' => 1, 
    		'meta_key' => 'ratings_average',
    		'orderby' => 'meta_value_num',
    		'order' => 'DESC',
    		'numberposts' => 1,
       'meta_query' => array(
    	   array(
    		   'key' => 'ratings_users',
    		   'value' => 2,
    		   'compare'   => '>=',
    	   ))); 
    
    $my_post = new WP_Query( $args );?>
    <?php $wp_query = $my_post;?>
    
    <?php if($my_post->have_posts()) : ?>
    <?php while($my_post->have_posts()) : $my_post->the_post(); ?>
    //пост
    <?php endwhile; endif; ?>
    
    <div style="clear:both"></div> 
    <div class="page-nav"><?php theme_page_navigation(); ?></div>
    <?php $wp_query = $foo; ?>
    Glomberg 1.1 года назад
    //global $wp_query;
    //$foo = $wp_query;
    // Так как вы создаете новый экземпляр WP_Query(),
    // то вам не нужно сохранять текущий поисковый запрос
    // и возвращаться к его исходному состоянию после цикла.
    
    $args = array(
    	'paged'          => $paged,       
    	'post_type'      => 'post', 
    	'posts_per_page' => 1, 
    	'meta_key'       => 'ratings_average',
    	'orderby'        => 'meta_value_num',
    	'order'          => 'DESC',
    	'meta_query' => array(
    		array(
    			'key' => 'ratings_users',
    			'value' => 2,
    			'compare'   => '>=',
    		)
    	)
    );
    $my_post = new WP_Query( $args );?>
    
    <?php //$wp_query = $my_post;?>
    
    <?php // Условие должно выполняться одновременно: есть посты в запросе и текущая страница не больше десятой ?>
    <?php if( $my_post->have_posts() && get_query_var('paged') <= 10 ) : ?>
    <?php while( $my_post->have_posts() ) : $my_post->the_post(); ?>
    //пост
    <?php endwhile; endif; ?>
    
    <div style="clear:both"></div> 
    <div class="page-nav"><?php theme_page_navigation(); ?></div>
    
    <?php //$wp_query = $foo; ?>
    lethalblo 1.1 года назад

    Пагинация не выводится, может переделать код под numberposts ? только непонятно как это сделать

    Glomberg 1.1 года назад

    Попробуйте так (комментарии стоят ради информации для размышления, уберите их сами):

    //global $wp_query;
    //$foo = $wp_query;
    // Так как вы создаете новый экземпляр WP_Query(),
    // то вам не нужно сохранять текущий поисковый запрос
    // и возвращаться к его исходному состоянию после цикла.
    
    $args = array(
    	// Непонятно, как получается переменная $paged 'paged'          => $paged,  
    	'paged'          => ( get_query_var('paged') ? get_query_var('paged') : 1 ), 
    	'post_type'      => 'post', 
    	'posts_per_page' => 1, 
    	'meta_key'       => 'ratings_average',
    	'orderby'        => 'meta_value_num',
    	'order'          => 'DESC',
    	'numberposts'    => 100
    	'meta_query'     => array(
    		array(
    			'key' => 'ratings_users',
    			'value' => 2,
    			'compare'   => '>=',
    		)
    	)
    );
    $my_post = get_posts( $args );?>
    
    <?php //$wp_query = $my_post;?>
    
    <?php foreach( $my_posts as $post ) : ?>
    <?php setup_postdata($post); ?>
    
    	// пост
    
    <?php endforeach; ?>
    <?php wp_reset_postdata(); ?>
    
    <div style="clear:both"></div> 
    <div class="page-nav"><?php theme_page_navigation(); ?></div>
    
    <?php //$wp_query = $foo; ?>
    Glomberg 1.1 года назад

    Кажется, не будет работать... В функции get_posts() нет параметра paged... sad

    lethalblo 1.1 года назад

    не работает

    lethalblo 1.1 года назад

    ладно пока оставлю, как есть. Спасибо за помощь

    Комментировать
  • 0
    kolshix546 paxtoy.com

    не могу найти статью - так же как и вы с этой "ХЕРНЕЙ" боролся.
    Попробую пересказать в двух словах с учетом вашей проблемы.
    Есть 2 штуки QUERY - 1-й Вордпресовский и 2-й ваш с "'numberposts'=> 100" в итоге получается кривой QUERY Ваш+ВП - который работает 50на50

    К сожалению сам так и не понял как правильно сделать и пришлось пользоваться одним от WP и выводит на всей страницах одинаковое количество, а хотелось под каждую категорию выводить свое количество!

    везде пишут что нужно создавать новый независимый запрос - а как правельно не пишут

    lethalblo 1.1 года назад

    Честно говоря я пока решил оставить как есть. Если найдете решение делитесь с ним в данном вопросе. Я хотел рейтинг записей сделать топ 100, но сейчас просто по рейтингу)

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация