Как создать пагинацию WordPress для пользовательских типов записей
Опубликовано: 2020-02-24Создание разбиения на страницы для пользовательских типов записей не должно быть проблемой, поскольку вы можете использовать ту же идею, которую мы использовали здесь — как создать пользовательское разбиение на страницы запросов в WordPress. Нам нужно запросить пользовательский тип сообщения, а затем отобразить сообщения запросов, которые относятся к этому типу сообщений или к нескольким типам сообщений.
В этом посте я покажу вам, как создать пагинацию WordPress для пользовательских типов записей. Разбивка на страницы будет аналогична этой числовой разбивке на страницы. Мы создадим собственный запрос, который получит все пользовательские типы сообщений, а затем отобразит пользовательские типы сообщений с циклом и нумерацией страниц.
Создайте пользовательский тип записи
Первый шаг — создать пользовательский тип записи , используя следующий код:
/** * Пользовательский тип сообщения - register_post_type() * @description- Njengah Tutorial Пример пользовательского типа записи * @ссылка - https://gist.github.com/Njengah/839466b773085ac2430772e081357cee * */ add_action('init', "njengah_tutorial_cpt"); функция njengah_tutorial_cpt () { $метки = массив( 'name' => _x('Учебники', 'общее название типа записи'), 'singular_name' => _x('Учебник', 'тип сообщения в единственном числе'), 'menu_name' => _x('Учебники', 'меню администратора'), 'name_admin_bar' => _x('Учебник', 'добавить новый в панель администратора'), 'add_new' => _x('Добавить новый', ''), 'add_new_item' => __('Добавить новый учебник'), 'edit_item' => __('Редактировать учебник'), 'new_item' => __('Новое руководство'), 'all_items' => __('Все туториалы'), 'view_item' => __('Просмотреть учебник'), 'search_items' => __('Руководство по поиску'), 'not_found' => __('Учебники не найдены'), 'not_found_in_trash' => __('Учебники не найдены в корзине'), 'parent_item_colon' => __('Учебники для родителей:'), ); $аргументы = массив( 'иерархический' => правда, 'метки' => $метки, 'общедоступный' => правда, 'public_queryable' => правда, 'описание' => __('Описание.'), 'show_ui' => правда, 'show_in_menu' => правда, 'show_in_nav_menus' => правда, 'query_var' => правда, 'переписать' => правда, 'query_var' => правда, 'переписать' => массив ('слаг' => 'учебник'), 'capability_type' => 'страница', 'has_archive' => правда, 'меню_позиция' => 22, "show_in_rest" => правда, 'supports' => array( 'название', 'редактор', 'автор', 'миниатюра', 'комментарии', 'ревизии', 'атрибуты страницы', 'настраиваемые поля' ) ); register_post_type('учебник', $args); }
Добавьте этот код в свой файл functions.php, и вы увидите, что на панели управления WordPress появится настраиваемый тип записи « Учебники» .
Этот код можно изменить в соответствии с вашим конкретным типом пользовательского сообщения. Пользовательский тип записи также можно создать с помощью плагинов генерации пользовательских типов записей.
Создайте шаблон страницы для отображения пользовательских типов сообщений
Нам нужно создать собственный шаблон страницы, который будет использоваться для отображения пользовательских типов записей с помощью цикла WordPress.
Чтобы создать собственный шаблон страницы, вы должны создать новый файл в корневой папке вашей темы.
Назовите файл — custom -page.php или любое другое имя, описывающее пользовательский тип записи, например, для пользовательского типа записи, созданного выше, имя может быть tutorials-page.php.
В этот файл добавьте заголовок пользовательского шаблона страницы, используя следующий код, и сохраните изменения:
<?php /** * Название шаблона: Шаблон учебных пособий */ получить_заголовок();
Теперь вы должны увидеть, что настраиваемый шаблон страницы отображается в параметре шаблона атрибутов страницы, как показано ниже:
Создать пользовательский запрос типа записи
Пользовательский запрос — это первый шаг, который позволит нам запрашивать существующие настраиваемые типы сообщений и отображать их в пользовательском шаблоне страницы, созданном на предыдущем шаге.
Ниже приведен код, который будет запрашивать пользовательский тип записи учебника и извлекать первые две записи, а затем отображать их в пользовательском шаблоне страницы, который мы создали выше.
<?php /** * Название шаблона: Шаблон учебных пособий */ получить_заголовок(); // Шаг 1: Создание пользовательского запроса $paged = (get_query_var('paged'))? get_query_var('выгружается'): 1; $аргументы = массив( 'posts_per_page' => 2, // запрашиваем последние 2 сообщения 'post_type' => 'учебник', 'выгружается' => $выгружается ); $customPostQuery = новый WP_Query($args); ?>
Отображение пользовательских сообщений учебника в пользовательском шаблоне страницы
Ниже приведен код, который будет запрашивать пользовательский тип сообщения и отображать его в пользовательском шаблоне страницы:
<?php /** * Название шаблона: Шаблон учебных пособий */ получить_заголовок(); // Шаг 1: Создание пользовательского запроса $paged = (get_query_var('paged'))? get_query_var('выгружается'): 1; $аргументы = массив( 'posts_per_page' => 2, // запрашиваем последние 2 сообщения 'post_type' => 'учебник', 'выгружается' => $выгружается ); $customPostQuery = новый WP_Query($args); ?> <!-- Шаг 2: Отображение сообщений, которые мы запросили на шаге 1 --> <div класс="обертка"> <div id="основной" класс="контент-область"> <main id="main" class="site-main" role="main"> <?php если($customPostQuery->have_posts() ): в то время как ($ customPostQuery-> have_posts ()) : $customPostQuery->the_post(); глобальный $пост; ?> <div class="inner-content-wrap"> <ul class="cq-posts-list"> <li> <h3 class ="cq-h3"><a href="<?php the_permalink(); ?>" ><?php the_title(); ?></а></h3> <дел> <ул> <дел> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('миниатюра'); ?></а> </div> </ul> <ул> <p><?php echo the_content(); ?></p> </ul> </div> </li> </ul> </div> <!-- конец сообщения в блоге --> <?php в конце; конец; wp_reset_query();
Создание пользовательской функции пагинации записей в WordPress
На этом шаге мы должны теперь создать пользовательскую функцию разбивки на страницы для типов сообщений, которая будет добавлена к функциям темы и будет вызываться после того, как цикл отобразит пользовательские типы сообщений.
Следующий код должен быть добавлен в functions.php для создания пользовательской функции разбивки на страницы.
// Функция пагинации пользовательского типа записи функция cpt_pagination($pages = '', $range = 4) { $showitems = ($range * 2)+1; глобальный $paged; если (пусто ($ paged)) $ paged = 1; если($страницы == '') { глобальный $wp_query; $pages = $wp_query->max_num_pages; если(!$страниц) { $страниц = 1; } } если(1 != $страниц) { echo "<nav aria-label='Пример навигации по странице'> <ul class='pagination'> <span>Страница ".$paged." из ".$pages."</span>"; if($paged > 2 && $paged > $range+1 && $showitems < $pages) echo "<a href='".get_pagenum_link(1)."'>« First</a>"; if($paged > 1 && $showitems < $pages) echo "<a href='".get_pagenum_link($paged - 1)."'>‹ Предыдущий</a>"; для ($i=1; $i <= $pages; $i++) { if (1 != $pages &&( !($i >= $paged+$range+1 || $i <= $paged-$range-1) || $pages <= $showitems )) { эхо ($paged == $i)? "<li class=\"элемент страницы активен\"><a class='page-link'>".$i."</a></li>":"<li class='page-item' > <a href='".get_pagenum_link($i)."' class=\"page-link\">".$i."</a></li>"; } } if ($paged < $pages && $showitems < $pages) echo " <li class='page-item'><a class='page-link' href=\"".get_pagenum_link($paged + 1)." \">i class='flaticon flaticon-back'></i></a></li>"; if ($paged < $pages-1 && $paged+$range-1 < $pages && $showitems < $pages) echo " <li class='page-item'><a class='page-link' href=' ".get_pagenum_link($pages)."'><i class='flaticon flaticon-arrow'></i></a></li>"; эхо "</ul></nav>\n"; } }
Вызов функции пагинации пользовательского типа сообщения в шаблоне страницы
Поскольку мы создали функцию разбивки на страницы пользовательского типа сообщений, и мы уже запустили цикл и отобразили пользовательские типы сообщений, теперь нам нужно добавить функцию разбивки на страницы в нижней части пользовательского шаблона страницы, чтобы мы отображали разбиение на страницы.
Ниже приведен код, который следует использовать для проверки существования пользовательской функции разбивки на страницы, и если она существует, мы должны вызвать ее для отображения разбивки на страницы.
// Шаг 3: здесь вызовите функцию разбиения на страницы если (function_exists("cpt_pagination")) { cpt_pagination($customPostQuery->max_num_pages); }
Мы создали настраиваемый тип сообщения, настраиваемый шаблон страницы, добавили функцию разбиения на страницы настраиваемого типа сообщения и отобразили как настраиваемые типы сообщений с запросом, так и функцию разбиения на страницы настраиваемого типа сообщений.
Пользовательские стили пагинации для типов сообщений
Вам нужно добавить стили в разбивку на страницы пользовательского типа записи, используя следующий код:
/** * Пользовательские стили пагинации для типов сообщений * @author Джо Нженга */ .pagination { ясно: оба; должность: родственница; размер шрифта: 16 пикселей; высота строки: 13 пикселей; поплавок: справа; тип стиля списка: нет; ширина:100% } .pagination span, .pagination a { дисплей:блок; плыть налево; поле: 2px 2px 2px 0; отступы: 6px 9px 5px 9px; текстовое оформление: нет; ширина:авто; цвет:#fff; фон: #237697; } .pagination a: hover { цвет:#fff; фон: #000; } .pagination .current{ отступы: 6px 9px 5px 9px; фон: #999; цвет:#fff;
Мы готовы просмотреть результат этого кода. Чтобы просмотреть разбивку на страницы пользовательского типа записи, вам нужно создать новую страницу с шаблоном пользовательской страницы, который мы создали на втором шаге.
После создания этой страницы вы должны увидеть, что страница отображает пользовательский тип сообщения, который мы запросили, и созданную нами разбивку на страницы, как показано на изображении ниже:
Последние мысли
Чтобы создать разбивку на страницы пользовательского типа сообщения, вам необходимо создать собственный шаблон страницы, добавить собственный запрос, чтобы получить все настраиваемые сообщения, которые вы хотите отобразить, и вызвать пользовательскую функцию разбиения на страницы, которую вы добавляете в functions.php. Чтобы получить этот полный код, я добавил его в репозиторий git, и вы можете получить к нему доступ здесь — WordPress Custom Post Type Pagination.