Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Fazer requisição Ajax para uma API externa

Boa tarde, gostaria de saber como faria uma requisição ajax via HTTP, para uma REST API externa ? utilizando o wp_remote_post( $url , $args ), como fazer a chamada do formulário e onde encaixo a função como realizar o tratamento dos campos etc, alguem saberia ? Ex:

FORM:

<!-- MODAL EXPERIMENTE GRÁTIS-->
<div class="modal col-md-12" id="experimenteModal" tabindex="-1" role="dialog" style="margin-top: 67px; font-family: 'Roboto', sans-serif; ">
    <div class="modal-dialog" role="document" style="max-width: 50%; top: 10%;">
        <div class="modal-content">
            <form action="" method="post">
                <div class="modal-header">
                    <h4 class="modal-title" style="color: #3fc1e0; text-align: center; font-weight: bold;">Experimente Grátis</h4>
                    <button type="button" class="close" data-dismiss="modal">
                        &times;
                    </button>
                </div>
                <div class="modal-body">    
                    <div style="padding-bottom: 10px;">
                        <span>E-mail?</span><br>
                        <input type="text" class="inputExperimenteGratis" style="width: 100%"><br>
                    </div>
                    <div style="padding-bottom: 10px;">
                        <span class="col-6" style="float:left; padding-left: 0px;}">
                            <span>Fullname?</span><br>
                            <input type="text" class="inputExperimenteGratis" style="width: 100%">
                        </span>
                        <span class="col-6" style="padding-left: 0px;">
                            <span>Phone number?</span><br>
                            <input type="text" class="inputExperimenteGratis" style="width: 50%"><br>
                        </span>
                    </div>
                    <div style="padding-bottom: 10px;">
                        <span class="col-6" style="float:left; padding-left: 0px;}">
                            <span>Create new password</span><br>
                            <input type="text" class="inputExperimenteGratis" style="width: 100%">
                        </span>
                        <span class="col-6" style="padding-left: 0px;">
                            <span>Confirm password</span><br>
                            <input type="text" class="inputExperimenteGratis" style="width: 50%"><br>
                        </span>
                    </div>
                    <div style="padding-top: 10px;">
                        <span style="padding-bottom: 10px;">What is your goal?</span><br>
                        <input type="radio" name="administrar" value="1" checked><span style="font-size: 12px;"> I want to administrate my own.</span><br>
                        <input type="radio" name="administrar" value="2"><span style="font-size: 12px;"> I'm collaborator and I want to administrate my own</span><br>
                    </div>
                </div>
                <div class="modal-footer">
                    <button style=" border-radius: 17px; border: none; height: 35px; width: 135px; background-color: #f26a24; color: #fff; font-size: 13px;"><?php _e('START NOW','theme')?></button>
                </div>
            </form>
        </div>
    </div>
</div>

e no functions.php estou colocando o seguinte código, porém não sei ao certo como chamar, e se realmente é no functions.php:

add_action('user_register', 'cadastro_conta', 10, 1);
function cadastro_conta(){ 

    $url  = 'URL DA API EXTERNA';
    $body = array(
        'email'     => $email,
        'fullname'     => $fullname,
        'phone'     => $phone,
        'password'  => $password,
    );

    $args = array(
        'method'      => 'POST',
        'timeout'     => 45,
        'body'        => $body,
    );

    $response = wp_remote_post( $url, $args );

}
3 respostas
solução!

Oi Gabriel, tudo bem? A requisição para mim está correta, mas tenho duas observações sobre o código.

  1. Como você está usando add_action, isso quer dizer que a sua requisição só vai ser feita quando o user_register for acionado. Tá bem? Se esse é o objetivo, mandou bem ?)

  2. Isso não parece AJAX, visto que provavelmente o user_register não é e você tá fazendo isso no lado servidor.

Minha sugestão é: cria um outro arquivo só pra lidar com isso, fora do functions e faz como normalmente se faz no PHP.

No action, coloca a url desse arquivo e no arquivo faz aqueles ifs marotos para descobrir se houve um post para aquele arquivo e se os dados chegaram como você esperava :)

Digamos que na sua pasta do tema, criou o arquivo api.php.

O seu action ficaria algo assim:

<?php echo get_template_directory_uri() . /'api.php' ?>

Wanderson, Muito obrigado pela resposta, realmente me abriu a mente :D, então eu tinha tentado fazer com esta action, porém não estava sabendo como lidar com o mesmo, vou tentar seguir teus passos e ver se consigo, muito obrigado, minha duvida é como chamar as cosias e quais são os arquivos que elas tem que estar :D. pois estudei um bucado pra chegar nesse resultado que mostrei na questão :D, e como mencionado acima, não estou tão longe da resolução :D

Isso, a vezes fica confuso mesmo! O WordPress também não ajuda tanto com isso. Ele meio que já é projeta pensando que você tem uma experiência legal com PHP.

É bem isso, uma ideia daqui e outra dali, juntamos as peças e pronto! Feito!

Se precisar de mais alguma coisa, chama aqui :)