Вопрос или проблема
Я создаю страницу в WordPress series.php
, и вот код, где я застрял!
<?php
$categories=get_categories(
array( 'parent' => $cat->cat_ID)
);
foreach ($categories as $c) {
// то, что вы на самом деле хотите вместо var_dump, это что-то для
// создания разметки-- возможно, элементы списка. Например
$idp = $c->term_taxonomy_id;
// затем я получаю данные из базы данных
$cat_data = get_option("category_".$idp);
?>
<div class="wide-box">
<!-- Блок с деталями контента -->
<a href="https://wordpress.stackexchange.com/questions/241244/<?php echo get_category_link( $idp ); ?>" class="wb-image"><img src="<?php echo $cat_data['original_img']; ?>"></a>
<!-- Центр Wb -->
<div class="wb-center">
<h3 class="wb-name"><a href="https://wordpress.stackexchange.com/questions/241244/<?php echo get_category_link( $idp ); ?>"><?php echo $c->name; ?></a></h3>
<div class="wb-details">
Жанры : <?php echo $cat_data['genres']; ?><br>
Страна : <?php echo $cat_data['country']; ?><br>
Язык : <?php echo $cat_data['language']; ?><br>
Год : <?php echo $cat_data['year']; ?>
</div>
<div class="latest-label">Последний эпизод:</div>
<?php
$catquery = new WP_Query( 'cat=".$idp."&posts_per_page=1' );
while($catquery->have_posts()) : $catquery->the_post();
?>
<a href="<?php the_permalink() ?>" class="latest-ep"><?php the_title(); ?></a>
<?php endwhile; ?>
</div>
<!-- Центр Wb -->
</div>
<?php
}
?>
</div>
Итак, как добавить постраничную навигацию для цикла, чтобы показать её?
Добавьте этот аргумент в ваш WP_Query.
'paged' => get_query_var( 'paged' ),
И используйте массив в качестве стиля аргументов, а не стиль запроса постов.
Вы можете использовать функцию paginate_links()
вместе с параметром paged в вашем запросе.
<?php
$categories=get_categories(
array( 'parent' => $cat->cat_ID)
);
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; // Получаем текущую страницу или устанавливаем 1, если не установлено
foreach ($categories as $c) {
// то, что вы на самом деле хотите вместо var_dump, это что-то для
// создания разметки-- возможно, элементы списка. Например
$idp = $c->term_taxonomy_id;
// затем я получаю данные из базы данных
$cat_data = get_option("category_".$idp);
?>
<div class="wide-box">
<!-- Блок с деталями контента -->
<a href="<?php echo get_category_link( $idp ); ?>" class="wb-image"><img src="<?php echo $cat_data['original_img']; ?>"></a>
<!-- Центр Wb -->
<div class="wb-center">
<h3 class="wb-name"><a href="<?php echo get_category_link( $idp ); ?>"><?php echo $c->name; ?></a></h3>
<div class="wb-details">
Жанры : <?php echo $cat_data['genres']; ?><br>
Страна : <?php echo $cat_data['country']; ?><br>
Язык : <?php echo $cat_data['language']; ?><br>
Год : <?php echo $cat_data['year']; ?>
</div>
<div class="latest-label">Последний эпизод:</div>
<?php
$category_query = new WP_Query( array(
'cat' => $idp,
'posts_per_page' => 1,
'paged' => $paged
) );
while($category_query->have_posts()) : $category_query->the_post();
?>
<a href="<?php the_permalink() ?>" class="latest-ep"><?php the_title(); ?></a>
<?php endwhile; ?>
</div>
<!-- Центр Wb -->
</div>
<?php
}
// Пагинация
echo paginate_links( array(
'total' => $category_query->max_num_pages
) );
?>
</div>
Ответ или решение
Как добавить пагинацию к циклу foreach в WordPress
Добавление пагинации к циклу foreach
в WordPress может показаться сложной задачей, однако с правильным подходом и использованием встроенных функций это можно сделать довольно просто. В этом ответе будет описан процесс добавления пагинации к вашему коду, основанный на данных, получаемых через WP_Query
.
Шаг 1: Подготовка данных
Первым делом необходимо определить текущую страницу. Для этого используем функцию get_query_var('paged')
. Если страница не установлена, присваиваем значение 1.
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
Шаг 2: Обновление запроса
Затем нужно адаптировать ваш запрос, чтобы он учитывал параметр paged
. Вы можете это сделать следующим образом. Обновим ваш цикл для получения категорий:
$categories = get_categories(array('parent' => $cat->cat_ID));
foreach ($categories as $c) {
$idp = $c->term_taxonomy_id;
$cat_data = get_option("category_" . $idp);
// Далее ваш код...
}
Шаг 3: Запрос публикаций с пагинацией
Теперь давайте обновим ваш запрос WP_Query
, добавив параметр paged
. Мы также изменим стиль передачи параметров на ассоциативный массив для ясности:
$category_query = new WP_Query(array(
'cat' => $idp,
'posts_per_page' => 1,
'paged' => $paged
));
Шаг 4: Отображение данных и меток пагинации
Теперь мы можем перейти к выводу данных и добавлению нумерации страниц с использованием функции paginate_links()
. После завершения цикла while
, добавляем следующий код для отображения пагинации:
while ($category_query->have_posts()) : $category_query->the_post();
// Ваш код для отображения постов
endwhile;
// Пагинация
echo paginate_links(array(
'total' => $category_query->max_num_pages
));
Полный пример кода
Объединив все части, ваш код может выглядеть так:
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$categories = get_categories(array('parent' => $cat->cat_ID));
foreach ($categories as $c) {
$idp = $c->term_taxonomy_id;
$cat_data = get_option("category_" . $idp); ?>
<div class="wide-box">
<a href="<?php echo get_category_link($idp); ?>" class="wb-image"><img src="<?php echo $cat_data['original_img']; ?>"></a>
<div class="wb-center">
<h3 class="wb-name"><a href="<?php echo get_category_link($idp); ?>"><?php echo $c->name; ?></a></h3>
<div class="wb-details">
Genres: <?php echo $cat_data['genres']; ?><br>
Country: <?php echo $cat_data['country']; ?><br>
Language: <?php echo $cat_data['language']; ?><br>
Year: <?php echo $cat_data['year']; ?>
</div>
<div class="latest-label">Latest Episode:</div>
<?php
$category_query = new WP_Query(array(
'cat' => $idp,
'posts_per_page' => 1,
'paged' => $paged
));
while ($category_query->have_posts()) : $category_query->the_post(); ?>
<a href="<?php the_permalink(); ?>" class="latest-ep"><?php the_title(); ?></a>
<?php endwhile; ?>
</div>
</div>
<?php
}
// Пагинация
echo paginate_links(array('total' => $category_query->max_num_pages));
?>
Заключение
Используя описанные выше шаги, вы сможете внедрить пагинацию в ваш цикл foreach
. Это не только улучшит навигацию по контенту, но и сделает вашу страницу более удобной для пользователей. Пагинация является важной частью пользовательского опыта, особенно на сайтах с большим количеством контента. Не забудьте протестировать ваш код, чтобы убедиться, что пагинация работает как следует.