Каким образом можно использовать Ajax в WordPress для сортировки постов по году и обновления постраничной навигации?

Как вывести постраничную пагинацию на странице архива для кастомного типа записей "news" в WordPress, используя код, который выводит посты из года, в которых они были опубликованы?
  • 13 апреля 2024 г. 16:09
Ответы на вопрос 2
Для использования Ajax в WordPress для сортировки постов по году и обновления постраничной навигации вы можете создать функцию, которая будет обрабатывать запросы Ajax. Например, вы можете использовать функцию `wp_ajax_my_sort_posts` для обработки запроса Ajax на сервере WordPress. В этой функции вы можете использовать параметры `year` для сортировки постов по году и параметры `paged` для настройки постраничной навигации.

Пример кода для обработки запроса Ajax на сервере WordPress:

```php
add_action('wp_ajax_my_sort_posts', 'my_sort_posts');
add_action('wp_ajax_nopriv_my_sort_posts', 'my_sort_posts');

function my_sort_posts() {
    $year = $_POST['year'];
    $paged = $_POST['paged'];

    $args = array(
        'post_type' => 'post',
        'year' => $year,
        'paged' => $paged
    );

    $query = new WP_Query($args);

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            // Вывод постов
        }
    }

    wp_reset_postdata();

    die();
}
```

Чтобы использовать эту функцию на клиентской стороне, вы можете написать JavaScript-скрипт, который будет делать запрос Ajax и обновлять контент на странице. Например, вы можете использовать jQuery для отправки запроса Ajax:

```javascript
jQuery(document).ready(function($) {
    var year = 2022; // Укажите год сортировки
    var paged = 1; // Укажите номер страницы

    $.ajax({
        url: ajaxurl,
        type: 'post',
        data: {
            action: 'my_sort_posts',
            year: year,
            paged: paged
        },
        success: function(response) {
            // Обновление контента на странице
        }
    });
});
```

Чтобы вывести постраничную пагинацию на странице архива для кастомного типа записей "news" в WordPress, вы можете использовать функцию `paginate_links()` для генерации ссылок страниц. Ниже приведен пример кода, который выводит постраничную навигацию для кастомного типа записей "news":

```php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array(
    'post_type' => 'news',
    'posts_per_page' => 10,
    'paged' => $paged
);

$query = new WP_Query($args);

if ($query->have_posts()) {
    while ($query->have_posts()) {
        $query->the_post();
        // Вывод постов
    }

    echo paginate_links(array(
        'total' => $query->max_num_pages
    ));
}

wp_reset_postdata();
```

Этот код будет выводить постраничную навигацию на странице архива для кастомного типа записей "news" в WordPress. При этом будет использоваться постраничная навигация с учетом номера страницы, на которой пользователь находится.
Зачем аякс функция если можно зарегать get var и через pre get posts изменить сортировку ?
Похожие вопросы