Я пытаюсь реализовать базовую функциональность, которая могла бы реализовать несколько страниц для разных типов сообщений на одной странице.
Изначально я пытался сделать пользовательскую нумерацию страниц. Например, прямо сейчас я передал номер страницы в качестве параметра URL.
/release/?page_news=1
/release/?page_news=2 ...
/release/?page_resource=1
/release/?page_resource=2 ...
Но выглядит неуклюже. Я думал, как это должно выглядеть
/релиз/новости/
/релиз/новости/2 ...
/выпуск/ресурс/
/выпуск/ресурс/2 ...
Пожалуйста, дайте мне знать, если у кого-нибудь есть лучший подход к этой ситуации.
Я попробовал ниже, чтобы это работало.
Регистрация переменных запроса. Код добавляет var1
и var2
в качестве пользовательских переменных запроса с помощью фильтра query_vars
.
Правило перезаписи: создается пользовательское правило перезаписи, которое сопоставляет URL-адреса в формате /payments-slug/var1-value/var2-value/
и перезаписывает их в соответствующие index.php
с соответствующими параметрами запроса.
<?php
global $wp;
@$wp->add_query_var('var1');
@$wp->add_query_var('var2');
add_filter('query_vars', 'wpse12965_query_vars');
function wpse12965_query_vars($query_vars)
{
$query_vars[] = 'var1';
$query_vars[] = 'var2';
return $query_vars;
}
add_action('init', 'wpse12065_init');
function wpse12065_init()
{
global $payments_page_id;
$post = get_post($payments_page_id);
$slug = @$post->post_name;
add_rewrite_rule(
$slug . '(/([^/]+))?(/([^/]+))?/?(/([^/]+))?(/([^/]+))?/?',
'index.php?pagename=' . $slug . '&var1=$matches[2]&var2=$matches[3]',
'top'
);
}
Всего страниц и диапазона: рассчитывается общее количество страниц и задается диапазон отображаемых ссылок на страницы.
Цикл пагинации: он перебирает все страницы и генерирует список номеров страниц в виде ссылок. Текущая страница выделена, а на другие страницы имеются ссылки.
Вывод: каждая ссылка на страницу ведет на URL-адрес, основанный на названии таксономии ($taxName
) и номере страницы.
<div class = "pagination">
<div class = "moreCenter animateme animated">
<div class = "paginationBox">
<?php
$totalPages = $wc_query->max_num_pages;
$range = 4;
$showitems = ($range * 2) + 1;
for ($i = 1; $i <= $totalPages; $i++) {
if (1 != $totalPages && (!($i >= $paged + $range + 1 || $i <= $paged - $range - 1) || $totalPages <= $showitems)) {
$page_url = get_permalink() . '' . $taxName . '/' . $i;
echo ($paged == $i) ? "<span class=\"current\">" . $i . "</span>" : "<a href='" . $page_url . "' class=\"inactive\">" . $i . "</a>";
}
}
?>
</div>
</div>
</div>