Как использовать ответ на действие в плагине для остальных API

Это должно быть что-то очень простое, но я не могу понять.

Тема имеет функцию действия ajax, которая обновляет профиль пользователя. Вот код:

      add_action( 'wp_ajax_nopriv_update_profile', 'update_profile' );
add_action( 'wp_ajax_update_profile', 'update_profile' );

if( !function_exists('update_profile') ):
    function update_profile(){
        //update profile discipline
        ......    
        echo json_encode( array( 'success' => true) );
        die();
    }
endif;

Я работаю над плагином, который расширяет функциональность темы для отдыха API. Теперь я хочу использовать вышеуказанное действие в своем плагине и что-то сделать после его возврата. Но поскольку это произошло в конце, я не могу продолжить выполнение после действия. Вот как я называю это в своем плагине:

      add_action( 'rest_api_init', function () {
    register_rest_route( 'mobile-api/v1', '/update-profile', array(
      'methods' => 'POST',
      'callback' => 'editProfile',
    ));
});
function editProfile() {
    do_action("wp_ajax_update_profile");

    $response = array(); //<---- this and next doesn't get executed
    $response["works"] = "Voila!";
    wp_send_json($response, 200);
}

я пробовал ob_get_contents()но он не пройдет мимо метода умирания.

Редактировать тему не вариант.

Как я могу избежать die()из действия темы и вернуть мой собственный ответ?

Или как лучше всего имитировать запрос ajax в PHP-коде.

Причина: ошибка в исходном действии. Я хочу исправить, уничтожив то, что было сделано в действии.

1 ответ

Повторно используйте функцию (или сделайте ее многоразовой, если не можете). Не имитируйте обычный вызов WP-AJAX из обработчика конечной точки REST API. Вы просто слишком все усложняете таким образом.

Другие вопросы по тегам