Пользовательский WP_Query «posts_per_page» не работает

У меня проблемы с отображением нескольких сообщений, когда я объявил «posts_per_page».

Во время моего исследования мой код развивался, но пока безрезультатно я пробовал

'ignore_sticky_posts' => 1, 'nopaging' => true (Нумерация страницы)

переключение тем и отключение плагинов. Я не могу найти проблему. Любая помощь приветствуется. Вот текущий результат — alderneyfootball.co.uk

У меня есть две петли на странице, и это пользовательский шаблон страницы. Я использую Плагин WP-Club-Manager

<?php
// the query
wp_reset_query();

$wpb_next_game = array('post_type'=>'wpcm_match', 'post_status' => 'future', 's' => 'Alderney', 'posts_per_page' => 1 );

$wpb_next_game = new WP_Query($wpb_next_game);
if ( have_posts() ) : while ( $wpb_next_game->have_posts() ) : $wpb_next_game->the_post();

$date = date_i18n( get_option( 'date_format' ), strtotime( $post->post_date ) );
$time = date_i18n( get_option( 'time_format' ), strtotime( $post->post_date ) );
$side = wpcm_get_match_clubs( $post->ID );

// badge
$badges = wpcm_get_match_badges( $post->ID, 'crest-medium', array( 'class' => 'home-logo' ) );
$badges = wpcm_get_match_badges( $post->ID, 'crest-medium', array( 'class' => 'away-logo' ) );
$format = get_match_title_format();
if( $format == '%home% vs %away%') {
$badge = $badges[0];
} else {
$badge = $badges[1];
}
?>

<div id="next-match" class="row">
<div class="span_6 col">
<h3 class="next-match-home"><?php echo $side[0]; ?></h3>
</div>
<div class="span_6 col">
<h3 class="next-match-away"><?php echo $side[1]; ?></h3>
</div>
</div>
<div class="row">
<h4 id="next-match-time">Next Match at <?php echo $time; ?> on <?php echo $date; ?></h4>
<?php endwhile; ?>
<!-- end of the loop -->
<?php else : ?>
<h4 id="next-match-time"><?php _e( 'Sorry, scheduled matches' ); ?></h4>
<?php endif; ?>

0

Решение

Если данные двух циклов перезаписаны, то ваш первый код wp_reset_query () неверен. Если вы используете WP_Query, то

wp_reset_postdata() //remove wp_reset_query() which is used for wp_query()

следует использовать после окончания цикла WHILE, что означает, что в ваших двух циклах вы должны иметь

wp_reset_postdata()  // use this at both loops

в обоих циклах в конце цикла while.

Теперь ваши коды выглядят так:

<?php

$wpb_next_game = array('post_type'=>'wpcm_match', 'post_status' => 'future', 's' => 'Alderney', 'posts_per_page' => 1 );

$wpb_next_game = new WP_Query($wpb_next_game);
if ( have_posts() ) : while ( $wpb_next_game->have_posts() ) : $wpb_next_game->the_post();

$date = date_i18n( get_option( 'date_format' ), strtotime( $post->post_date ) );
$time = date_i18n( get_option( 'time_format' ), strtotime( $post->post_date ) );
$side = wpcm_get_match_clubs( $post->ID );

// badge
$badges = wpcm_get_match_badges( $post->ID, 'crest-medium', array( 'class' => 'home-logo' ) );
$badges = wpcm_get_match_badges( $post->ID, 'crest-medium', array( 'class' => 'away-logo' ) );
$format = get_match_title_format();
if( $format == '%home% vs %away%') {
$badge = $badges[0];
} else {
$badge = $badges[1];
}
?>

<div id="next-match" class="row">
<div class="span_6 col">
<h3 class="next-match-home"><?php echo $side[0]; ?></h3>
</div>
<div class="span_6 col">
<h3 class="next-match-away"><?php echo $side[1]; ?></h3>
</div>
</div>
<div class="row">
<h4 id="next-match-time">Next Match at <?php echo $time; ?> on <?php echo $date; ?></h4>
<?php endwhile;
wp_reset_postdata();
?>
<!-- end of the loop -->
<?php else : ?>
<h4 id="next-match-time"><?php _e( 'Sorry, scheduled matches' ); ?></h4>
<?php endif; ?>

Надеюсь, что это работает для вас

Благодарю вас

1

Другие решения

Возможно, ваш следующий цикл берет запрос из предыдущего.
Убедитесь, что вы используете wp_reset_query () для query_posts и / или wp_reset_postdata () для wp_query

После каждого цикла.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector