Как использовать ответ на действие в плагине для остальных 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. Вы просто слишком все усложняете таким образом.