Qual é a real intenção do admin-post.php?

8

Enquanto procurava por formulários apropriados para o envio de formulários em plugins para usuários (frontend), eu me deparei com este artigo. Lidando com o POST Solicita a maneira do WordPress , que incentiva o uso de admin-post.php para essa finalidade. Olhando para o cabeçalho, podemos encontrar algum tipo de confirmação:

 /**
 * WordPress Generic Request (POST/GET) Handler
 *
 * Intended for form submission handling in themes and plugins.
 *
 * @package WordPress
 * @subpackage Administration
 */

A minha principal preocupação é que esse método vem da parte administrativa do código WP e seu uso em tarefas não administrativas gera alguma ambiguidade.

Alguém (especialmente autores do WP) pode confirmar que essa intenção de abordagem é realmente holística ou admin apenas como eu penso?

    
por Krzysztof Przygoda 08.03.2016 / 12:45

2 respostas

10

admin-post.php é como um controlador pobre para manipular solicitações.

É útil no sentido de que você não precisa processar sua solicitação em um gancho alternativo, como init , e verificar se as chaves especiais existem ou não nas superglobais, como:

function handle_request() {

    if ( !empty($_POST['action']) && $_POST['action'] === 'xyz' ) {
        //do business logic
    }

}

add_action('init', 'handle_request');

Em vez disso, usar admin-post.php permite que você especifique uma função de retorno de chamada que sempre será chamada em qualquer solicitação que forneça um valor de ação que corresponda ao sufixo fornecido à ação.

function handle_request() {

    //do business logic here...

}

add_action( 'admin_post_handle_request', 'handle_request' );
add_action( 'admin_post_nopriv_handle_request', 'handle_request' );

No exemplo acima, podemos abrir mão da necessidade de verificar por !empty($_POST['action']) && $_POST['action'] === 'xyz' , porque neste ponto o processamento foi feito para nós.

Esse é o resultado da especificação do parâmetro e do valor da ação e do lançamento do referido valor para a URL admin-post.php .

Além disso, o que é benéfico é que admin-post.php lida com $_POST e $_GET , portanto, não é necessário verificar que tipo de método é a solicitação, a menos que você queira um processamento mais complexo.

Linha de fundo:

É seguro usar, é apenas o nome que te joga fora.

A propósito, você também deve lembrar-se de wp_redirect() o usuário voltar para um local aceitável, já que solicitar admin-post.php não retornará nada além de uma tela branca como resposta.

    
por userabuser 08.03.2016 / 13:13
2

Parece bastante claro a partir do uso do nopriv handling (para usuários não logados) em admin-post.php que isso é de fato utilizável para manipulação de formulários frontend e backend, muito similar a como admin-ajax.php pode ser usado.

    
por majick 08.03.2016 / 13:05