Вкратце, теги шаблона — наиболее простой путь запрашивания информации из базы данных и выводе её на страницы сайта. Например, мы можем вывести имя автора записи, используя the_author();, а the_title(); — для отображения заголовка поста/страницы.
Условные теги шаблона WordPress довольно «обширны», что позволяет нам полностью настроить наш сайт без применения сторонних плагинов. В этой статье мы покажем вам как создать собственную страницу, которая отобразит список пользователей, используя условные теги.
В дополнение к этому мы также применим постраничную навигацию для отображения пользователей на определенном количестве страниц. Такая страница пригодится многим сайтам.
Создаем собственный шаблон
Для начала создаем новый PHP файл в папке вашей активированной темы. В этом примере будет использоваться тема TwentyTwelve. Добавьте следующий тег комментирования для регистрации страницы в качестве шаблона.
В редакторе страниц WordPress задайте его в качестве шаблона для вашей страницы автора.
![set-template[1]](https://wpincode.com/wp-content/uploads/2013/10/set-template1.jpg)
Обратите внимание, что имя файла не должо быть author.php, так как оно зарезервировано WordPress для вывода архивов записи авторов.
Запрос и формула
Давайте установим формулу. Открываем новый шаблон, который мы только что создали, в редакторе кода.
Для начала нам нужно определить количество пользователей для вывода на одну страницу. Мы установим это значение в переменную под названием $number. Как только вы захотите изменить количество отображаемых пользователей на странице, просто измените это значение.
Добавляем следующий код для точного определения текущего номера страницы.
1 | $paged = (get_query_var( 'paged' )) ? get_query_var( 'paged' ) : 1; |
Затем, используя следующий код, мы просчитываем количество пользователей, размещаемых на страницах (смещение).
1 | $offset = ( $paged - 1) * $number ; |
Нам необходимо получить зарегистрированных пользователей нашего сайта и сосчитать общее количество, используя функцию PHP count() function, как ниже.
2 | $total_users = count ( $users ); |
Также мы просчитываем общее количество запрошенных пользователей, которые будут включать отображаемых пользователей и смещение.
1 | $query = get_users( '&offset=' . $offset . '&number=' . $number ); |
Затем, мы считаем общее количество страниц, которые будут созданы. Мы можем это сделать на основе общего количества зарегистрированных пользователей и количестве пользователей, отображаемых на странице:
1 | $total_pages = intval ( $total_users / $number ) + 1; |
Выводим пользователей
Мы установили необходимую формулу, теперь мы выведем результаты на страницу.
На этом примере мы отобразим несколько свойств пользователя: аватар, полное имя и краткую биографию (описание). Эта информация может быть получена с использованием следующих тегов шаблона:get_avatar, и get_the_author_meta.
2 | foreach ( $query as $q ) { ?> |
4 | <li class = "user clearfix" > |
5 | <div class = "user-avatar" > |
6 | <?php echo get_avatar( $q ->ID, 80 ); ?> |
8 | <div class = "user-data" > |
10 | <h4 class = "user-name" > |
11 | <a href= "<?php echo get_author_posts_url($q->ID);?>" > |
12 | <?php echo get_the_author_meta( 'display_name' , $q ->ID);?> |
16 | <?php if (get_the_author_meta( 'description' , $q ->ID) != '' ) : ?> |
17 | <p><?php echo get_the_author_meta( 'description' , $q ->ID); ?></p> |
Создаем постраничную навигацию
Конечно, мы не хотим выводить сотни пользователей на одну страницу. Поэтому мы создадим ссылку для навигации и разобьем результаты на несколько страниц. В дополнение, мы будем выводить постраничную навигацию только в том случае, если общее количество зарегистрированных пользователей большем, чем пользователей на странице.
К счастью, в WordPress есть тег шаблона, который позволит вам создать пагинацию без труда, и называется он paginate_links().
2 | if ( $total_users > $total_query ) { |
3 | echo '<div id="pagination" class="clearfix">' ; |
4 | echo '<span class="pages">Страницы:</span>' ; |
5 | $current_page = max(1, get_query_var( 'paged' )); |
6 | echo paginate_links( array ( |
7 | 'base' => get_pagenum_link(1) . '%_%' , |
8 | 'format' => 'page/%#%/' , |
9 | 'current' => $current_page , |
10 | 'total' => $total_pages |
Полный код
Вот полный собранный код сегодняшней статьи, который вы можете вставить в свой шаблон страницы.
3 | $paged = (get_query_var( 'paged' )) ? get_query_var( 'paged' ) : 1; |
4 | $offset = ( $paged - 1) * $number ; |
6 | $query = get_users( '&offset=' . $offset . '&number=' . $number ); |
7 | $total_users = count ( $users ); |
8 | $total_query = count ( $query ); |
9 | $total_pages = intval ( $total_users / $number ) + 1; |
11 | echo '<ul id="users">' ; |
13 | foreach ( $query as $q ) { ?> |
15 | <li class = "user clearfix" > |
16 | <div class = "user-avatar" > |
17 | <?php echo get_avatar( $q ->ID, 80 ); ?> |
19 | <div class = "user-data" > |
21 | <h4 class = "user-name" > |
22 | <a href= "<?php echo get_author_posts_url($q->ID);?>" > |
23 | <?php echo get_the_author_meta( 'display_name' , $q ->ID);?> |
27 | <?php if (get_the_author_meta( 'description' , $q ->ID) != '' ) : ?> |
28 | <p><?php echo get_the_author_meta( 'description' , $q ->ID); ?></p> |
41 | if ( $total_users > $total_query ) { |
42 | echo '<div id="pagination" class="clearfix">' ; |
43 | echo '<span class="pages">Страницы:</span>' ; |
44 | $current_page = max(1, get_query_var( 'paged' )); |
45 | echo paginate_links( array ( |
46 | 'base' => get_pagenum_link(1) . '%_%' , |
47 | 'format' => 'page/%#%/' , |
48 | 'current' => $current_page , |
49 | 'total' => $total_pages , |
Небольшие правки в CSS — и страница неожиданно преобразится.
![user-list[1]](https://wpincode.com/wp-content/uploads/2013/10/user-list1.jpg)
VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)