Os parâmetros de solicitação em $ _GET não combinam URL chamado

Eu tenho um plugin WP que usa o parâmetro de solicitação “tipo” para determinar o arquivo de código a ser carregado para fazer algum processamento. O código que lida com isso é o seguinte:

add_shortcode ('myplugin_frontend_main', 'MyPlugin_user_dispatcher'); function MyPlugin_user_dispatcher ($args=array()) { $type = $_GET['type']; $func = $_GET['func']; $typefile = ucwords($type). '.php'; require_once(dirname(__FILE__) . "/$typefile"); $class = 'MyPlugin_Controller_' . ucfirst($type); $object = new $class(); echo $object->$func($args); } 

O estranho é esse, se eu ligar

 http://localhost/wordpress/?page_id=4&type=userform&func=edit&noheader=true&ot=product_add&id=14&store=1 

e adicione

 var_dump ($_GET); exit (); 

Para o código, meu var_dump () imprime o seguinte:

 array 'page_id' => string '4' (length=1) 'type' => string 'user' (length=4) 'func' => string 'main' (length=4) 'store' => string '1' (length=1) 

Então, de alguma forma, $ _GET não contém o que eu chamo através da barra de endereços (ou clicando em um link com o mesmo conteúdo).

Alguém tem alguma idéia do que está acontecendo aqui?

Saudações / Agradecimentos R

Solutions Collecting From Web of "Os parâmetros de solicitação em $ _GET não combinam URL chamado"

O WordPress tipicamente filtra os argumentos de consulta, a menos que você diga sobre esses argumentos e peça que não o faça.

A partir deste tutorial antigo , você pode ver como adicionar uma nova variável de consulta ao WordPress (para que não seja removido):

 add_filter('query_vars', 'parameter_queryvars' ); function parameter_queryvars( $qvars ) { $qvars[] = 'myvar'; return $qvars; } 

Há uma sugestão alternativa na primeira resposta desta pergunta :

 //add author_more to query vars function add_author_more_query_var() { global $wp; $wp->add_query_var('author_more'); } add_filter('init', 'add_author_more_query_var'); 

Depois de fazer isso, você também precisa estar ciente de alguns termos reservados no WordPress. Existem apenas alguns termos que você não pode usar para dados personalizados porque eles já foram usados ​​em outro lugar. A lista completa de termos reservados está no Codex .

Um rápido olhar mostra que “tipo” está na lista reservada … o que pode ser por isso que está mudando quando você tenta usá-lo.