Это шестой урок из серии о том, как создать тему для WordPress из верстки. Из него вы узнаете, как добавить в тему постраничную навигацию и создать шаблоны для страницы записи и архивов single.php и archives.php
Функция постраничной навигации
Чтобы добавить в тему поддержку постраничной навигации, можно воспользоваться функцией пагинации, которую я уже приводила в своем блоге, только немного ее изменив и настроив CSS.
Сначала нужно посмотреть, какие теги и классы используются для вывода страниц в верстке. Открываем наш файл index.php, и в самом низу видим:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<!– Pager –>
<div class=“pager”>
<!–<a href=”#” class=”button previous”>Previous Page</a>–>
<div class=“pages”>
<a href=“#” class=“active”>1</a>
<a href=“#”>2</a>
<a href=“#”>3</a>
<a href=“#”>4</a>
<span>…</span>
<a href=“#”>20</a>
</div>
<a href=“#” class=“button next”>Next Page</a>
</div>
|
Теперь нам нужно немного модифицировать код функции для вывода пагинации, чтобы HTML-код, который она генерирует, был таким же, как этот. Другой вариант – оставить код функции как есть, но внести изменения в CSS файлы темы.
Сначала нужно скопировать код постраничной навигации в файл function.php, и вызвать его в файле index.php. Давайте сделаем это ниже существующей навигации из верстки, чтобы были видны отличия. Код и его вызов можно взять в этом посте.
Посмотрим, какой HTML сейчас генерирует функция:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<div class=‘clearfix navigation-top’>
<div class=‘pagination’>
<span>
Pages:
</span>
<span class=‘current’>
1
</span>
<a href=‘/page/2/’ class=‘inactive’ >
2
</a>
<a href=‘/page/3/’ class=‘inactive’ >
3
</a>
<a href=‘/page/2/’>
›
</a>
<a href=‘/page/6/’>
»
</a>
</div>
</div>
|
Не совсем то, что нам нужно, правда? Поэтому внесем изменения в код функции.
Изменяем код вывода пагинации
В комментариях я написала, какие значения были изменены:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
/*
* Pagination
*/
// $range – сколько страниц выводить до и после текущей страницы, я поставила 3
function oriolo_pagination($pages = ”, $range = 3)
{
$showitems = ($range * 2)+1;
global $paged;
if(empty($paged)) $paged = 1;
if($pages == ”)
{
global $wp_query;
// $pages – это общее число страницы, запомним это, дальше оно нам понадобится
$pages = $wp_query->max_num_pages;
if(!$pages)
{
$pages = 1;
}
}
// здесь начинается вывод навигации
if(1 != $pages)
{
// я изменила название класса на pager
echo “<div class=’pager’>”;
// изменен порядок вывода кнопок со ссылками на первую страницу и на предыдущую
// добавлен класс button previous для кнопки со ссылкой на предыдущую страницу
if($paged > 1 && $showitems < $pages) echo “<a href='”.get_pagenum_link($paged – 1).“‘ class=’button previous’> “ . __(‘Previous Page’, ‘striped’) . ” </a>”;
// добавлена строка с <div class=’pages’> – внутри него будут кнопки со страницами
echo “<div class=’pages’>”;
// кнопка первой страницы
if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo “<a href='”.get_pagenum_link(1).“‘>1</a>”;
// вывод всех остальных страниц
for ($i=1; $i <= $pages; $i++)
{
if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged–$range–1) || $pages <= $showitems ))
{
// к текущей странице добавим класс active
echo ($paged == $i)? “<a class=’active’>”.$i.“</a>”:“<a href='”.get_pagenum_link($i).“‘ >”.$i.“</a>”;
}
}
// перед выводом кнопки с последней страницей добавлен <span> с многоточием
// текстом ссылки будет общее количество страниц: $pages
if ($paged < $pages–1 && $paged+$range–1 < $pages && $showitems < $pages) echo “<span>…</span><a href='”.get_pagenum_link($pages).“‘> $pages </a>”;
// закроем div со страницами
echo “</div>”;
// выведем кнопку со следующей страницей
if ($paged < $pages && $showitems < $pages) echo “<a href='”.get_pagenum_link($paged + 1).“‘ class=’button next’>” . __(‘Next Page’, ‘striped’) . “</a>”;
echo “</div>n”;
}
}
|
После изменения функции, HTML код из верстки нужно удалить. На первой странице навигация будет выглядеть так:
А на второй и следующей – добавится ссылка на предыдущую страницу:
На этом мы практически закончили с настройкой главной страницы нашей темы. В следующей части мы создадим шаблон archive.php, который будет выводить страницы архивов и рубрик.