WordPress как на ладони
Шаблоны, плагины и темы для настоящих поклонников Elementor. От TemplateMonster.com 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
2 месяца назад
  • 0
    el-lable50 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 2 месяца назад

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

    Комментировать
  • 0
    Glomberg64 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 2 месяца назад

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

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

    Glomberg 2 месяца назад

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

    //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 2 месяца назад

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

    lethalblo 2 месяца назад

    не работает

    lethalblo 2 месяца назад

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

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

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

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

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

    lethalblo 2 месяца назад

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

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