WordPress: настройка ответа на запрос Ajax с помощью фильтра

В родительской теме есть функция, и я хочу настроить сообщение об успешном завершении, я не хочу вносить изменения в файл родительской темы. И функция не подключаемая, поэтому я не могу ее переопределить. Покопавшись, я обнаружил, что могу использовать хук add_filter для фильтрации ответов.

Я написал этот код:

add_filter( 'wp_ajax_sync-data', 'custom_sync_data' );

function custom_sync_data(){
   $response = array(
               'success' => true,
               'message' => 'Date is updated'
               );
   wp_send_json($response);
}

Он выполняет свою работу, но всегда возвращает сообщение success без какой-либо проверки. Я не знаю, как передать параметр для проверки или принятия решения.


person Alena    schedule 15.11.2018    source источник


Ответы (1)


Можешь попробовать это

function custom_sync_data($params){
    //$params can be data or parameters you will have to pass
    //or you will have to check
    //based on that your setup validation or logic
    $response = array(
        'success' => true,
        'message' => 'Date is updated'
    );
}
wp_send_json($response);

Вы также можете использовать var_dump($params), чтобы проверить, передается ли что-либо в функцию.

Надеюсь это поможет.

person zipkundan    schedule 15.11.2018
comment
Я уже пробовал это, но нет никакого параметра, он ничего не печатает. - person Alena; 15.11.2018
comment
Не могли бы вы объяснить, что вы пытаетесь сделать? - person zipkundan; 15.11.2018
comment
Я думаю, что вопрос очень ясен, но давайте еще раз кратко объясним, что есть функция, которая вставляет данные в базу данных. После вставки он отправляет сообщение об успехе. И я хочу настроить это сообщение, не затрагивая родительскую тему. Код (я добавил в вопросе) отправляет правильное сообщение, но всегда отправляет это сообщение, неважно, что происходит внутри функции. Это даже работает, если я поставлю exit(); в начало функции родительской темы. Итак, я хочу проверить текущий ответ функции, если он успешен, то отправьте свое собственное сообщение вместо исходного сообщения. Надеюсь теперь понятно.. - person Alena; 15.11.2018
comment
Можете ли вы опубликовать код функции в родительском элементе, который хотите переопределить? - person zipkundan; 15.11.2018
comment
Здесь более 1500 строк кода, поэтому я не могу вам его показать. Однако вы можете проверить мой другой вопрос, чтобы понять код структура. - person Alena; 16.11.2018