Как можно получить несколько значений при использовании технологии Ajax?

Как передать несколько значений переменной "link" в условие "tax_query" в WordPress, чтобы ajax корректно обрабатывал все значения, когда переменная "link" содержит как одно значение, так и несколько значений, разделенных запятыми? Как можно корректно получить значения в переменной "linkCat" в зависимости от количества значений в "link"?
  • 14 января 2024 г. 15:57
Ответы на вопрос 1
Для передачи нескольких значений с помощью AJAX в WordPress, вам нужно правильно подготовить данные для `tax_query`. Если у вас есть переменная `link`, содержащая одно или несколько значений, разделенных запятыми, можно использовать следующий подход.

**В JavaScript:**

1. Сформируйте объект с данными, который вы будете передавать методом POST через AJAX.
2. Если переменная `link` содержит несколько значений, разделенных запятыми, преобразуйте эту строку в массив с помощью метода `split(',')`.
3. Передайте этот массив как часть вашего AJAX-запроса.

Пример кода:

```javascript
// Предполагаем, что link - это строка типа "3,5,10"
var link = '3,5,10';
var linkValues = link.split(','); // Преобразование строки в массив ["3", "5", "10"]

$.ajax({
    url: my_ajax_object.ajax_url, // URL для обработки запроса, определен в wp_localize_script
    type: 'POST',
    data: {
        'action': 'my_ajax_handler', // Название экшена для хука WP
        'linkCat': linkValues // Массив значений для linkCat
    },
    success: function(response) {
        // Обработка успешного ответа
    },
    error: function(error) {
        // Обработка ошибки запроса
    }
});
```

**В PHP (обработчик AJAX):**

1. Добавьте хук для обработки AJAX-запроса.
2. Получите переданные данные.
3. Преобразуйте их в нужный формат для `tax_query`.

Пример кода:

```php
add_action('wp_ajax_my_ajax_handler', 'my_ajax_handler');
add_action('wp_ajax_nopriv_my_ajax_handler', 'my_ajax_handler');

function my_ajax_handler() {
    // Проверка nonce и другие проверки безопасности (если нужно)

    // Получение данных из AJAX запроса
    $linkCat = isset($_POST['linkCat']) ? $_POST['linkCat'] : array();

    // Пример условия tax_query
    $tax_query = array(
        'relation' => 'OR' // Используйте 'AND', если нужно, чтобы посты соответствовали всем категориям
    );

    // Добавление условий для каждой категории
    foreach ($linkCat as $cat) {
        $tax_query[] = array(
            'taxonomy' => 'category', // Или ваша кастомная таксономия
            'field'    => 'id',
            'terms'    => intval($cat),
        );
    }

    // Теперь вы можете использовать $tax_query в WP_Query для получения постов
    // ... (Здесь код для WP_Query и возврата результатов)

    wp_die(); // Всегда завершайте функцию-обработчик wp_die()
}
```

Убедитесь, что обрабатываете AJAX-запросы безопасно, проверяя nonce и права пользователя, если это необходимо, а также проводя валидацию и санитизацию получаемых данных.

Также, при использовании таких запросов, не забывайте обработать случай, когда переменная `link` может быть пустой, чтобы ваш код корректно обрабатывал такую ситуацию.
Похожие вопросы