WordPress как на ладони
wordpress jino

Заданное количество постов с 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
26 дней назад
  • 0
    el-lable25 cайт: 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 26 дней назад

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

    Комментировать
  • 0
    Glomberg5 cайт: 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 25 дней назад

    Работает но не совсем так как хотелось бы, поскольку выводит страниц страниц больше 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 25 дней назад
    //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 25 дней назад

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

    Glomberg 25 дней назад

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

    //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 25 дней назад

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

    lethalblo 25 дней назад

    не работает

    lethalblo 25 дней назад

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

    Комментировать
  • 0
    kolshix345 cайт: paxtoy.com

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

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

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

    lethalblo 21 день назад

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

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