Como parar _wpnonce e _wp_http_referer de aparecer no URL

Estou tentando desenvolver um plug-in que tenha um campo de pesquisa e use WP_List_Table. O plug-in é estritamente para o backend e procura os usuários no database e retorna-os juntamente com algum outro meta de um plug-in adicional.

Quando eu faço uma pesquisa pelo usuário, os campos de input ocultos de _wpnonce e _wp_http_referer são adicionados à string do url. O _wpnonce não é tão grande, mas o _wp_http_referer é um problema.

Se a pessoa que usa o plug-in continua fazendo pesquisas múltiplas, a seqüência _wp_http_referer fica tão longa no URL que dá um erro: Request-URI Too Large O comprimento do URL solicitado excede o limite de capacidade para este servidor.

Então, como faço para impedir que os valores ocultos apareçam no URL ou reiniciar _wp_http_referer sempre que o botão de pesquisa for clicado?

Solutions Collecting From Web of "Como parar _wpnonce e _wp_http_referer de aparecer no URL"

Esta questão arrisca por causa de alguns problemas:

1) WP_List_Table::search_box() insere os campos _wp_http_referer e _wpnonce padrão usando wp_nonce_field() sem dar-lhe a capacidade de replace e dizer “Eu já tenho um campo não obrigado”.

2) Você precisa usar o GET como seu método de submissão de formulário ao subclassificar WP_List_Table porque WP_List_Table::print_column_headers() apenas checa $_GET para os parâmetros atuais de orderby e order e usa $_SERVER['REQUEST_URI'] para construir seus links de header. Se você não usar o GET como método de formulário, perderá o parâmetro de pesquisa ao classificar uma coluna.

Há algumas maneiras de parar o Request-URI Too Large The requested URL's length exceeds the capacity limit for this server erro de Request-URI Too Large The requested URL's length exceeds the capacity limit for this server :

A) Como todas as funções de verificação não são capazes de usar um campo de solicitação _wp_http_referer ou um retorno para o header apropriado para o referente, você pode remover a consulta _wp_http_referer inicialmente no processamento.

Portanto, uma maneira simples de resolver esse problema é adicionando o seguinte muito cedo na function prepare_items() da sua subclass WP_List_Table .

 $_SERVER['REQUEST_URI'] = remove_query_arg( '_wp_http_referer', $_SERVER['REQUEST_URI'] ); 

B) A maneira indiscutivelmente melhor e mais segura seria mudar para o método de submissão de formulário POST e atualizar $_SERVER['REQUEST_URI'] em prepare_items() com todos os parâmetros que você gosta, depois de WP_List_Table::print_column_headers() los para que WP_List_Table::print_column_headers() funciona como esperado.

 $options = array( 'blog_id' => $blog_id, 's' => $search, 'record_type' => $record_type, 'orderby' => $orderby, 'order' => $order, ); // Update the current URI with the new options. $_SERVER['REQUEST_URI'] = add_query_arg( $options, $_SERVER['REQUEST_URI'] );