Для реализации постраничной пагинации на WordPress с использованием Ajax необходимо выполнить следующие шаги:
1. Создать функцию для обработки Ajax-запросов. Для этого можно использовать стандартные функции WordPress add_action
и wp_ajax_nopriv_*
.
// Для авторизированных пользователей add_action('wp_ajax_my_pagination', 'my_pagination_function'); // Для неавторизированных пользователей add_action('wp_ajax_nopriv_my_pagination', 'my_pagination_function'); function my_pagination_function() { // Здесь происходит обработка Ajax-запроса и вывод нужной страницы // ... wp_die(); // Обязательно вызываем эту функцию в конце обработчика, чтобы прекратить обработку }
2. В файле, где отображается пагинация, добавить JavaScript-код для обработки нажатий на стрелки пагинации и выполнения Ajax-запросов.
jQuery(document).ready(function($) { $('.pagination a').click(function(e) { e.preventDefault(); var page = $(this).attr('href'); // Выполняем Ajax-запрос $.ajax({ url: my_ajax_obj.ajax_url, // Путь к файлу обработчику type: 'POST', data: { action: 'my_pagination', // Имя действия, которое будет вызвано в PHP page: page // Номер страницы, который нужно загрузить }, success: function(response) { // Обработка ответа от сервера // ... }, error: function() { // Обработка ошибки // ... } }); }); });
3. Внутри функции my_pagination_function
необходимо обработать Ajax-запрос, получить номер страницы, загрузить соответствующий контент и вернуть его в Ajax-ответе. Ниже приведен пример кода:
function my_pagination_function() { global $wp_query; // Получаем номер страницы $page = $_POST['page']; // Используем $page для настройки WP_Query $args = array( 'post_type' => 'post', 'paged' => $page ); $wp_query = new WP_Query($args); // Загружаем нужный шаблон get_template_part('template-parts/content'); wp_die(); }
4. В вашем файле шаблона, где отображается постраничная пагинация, нужно добавить класс "pagination" к контейнеру пагинации.
<div class="pagination"> <?php previous_posts_link('« Previous', $wp_query->max_num_pages) ?> <?php next_posts_link('Next »', $wp_query->max_num_pages) ?> </div>
Все вышеперечисленные шаги позволят реализовать постраничную пагинацию на WordPress с использованием Ajax. Убедитесь, что код правильно интегрирован в вашу тему WordPress и функционирует корректно.