WordPress tem uma API realmente útil chamada “the reescrever API“. Eu acho que já com “reescrita de URL”, esse é o processo que torna os URLs mais legíveis. Por exemplo, um URL escrito como este http://mysite.com/?page=12&category=12&author=47 não é tão bonito. É difícil lembrar, e os mecanismos de pesquisa não gostam muito. É por isso que quase todos os CMS têm uma função interna que “reescreve” URLs para torná-los assim: http://mysite.com/category/business/finance.


A API de reescrita e a classe WP_Rewrite

Dentro do WordPress, esse processo também é conhecido como estrutura permalinks. Ao alternar da estrutura de ligação permanente padrão para uma estrutura personalizada, você ativa automaticamente a API de reescrita. Isso é totalmente automático. Mas, às vezes, você precisa criar suas próprias regras de reescrita personalizadas.

Nesta postagem, criaremos funções simples para criar uma regra de reescrita personalizada simples. Digamos que queremos obter um valor de referência, equivalente a um valor de $ _GET [‘referrer’].

Se dermos uma olhada no Codex, podemos ver na página de API de reescrita que esta API possui 6 funções internas. O uso mais comum da reescrita é usar essas funções, há muitos tutoriais sobre isso, é por isso que vou usar filtros em vez de funções. Porque sim, a API de reescrita também pode ser usada com filtros! Esses filtros estão listados no Classe WP_Rewrite Página Codex.

Adicionando um novo Query Var

Para começar, precisamos criar uma função que informe ao WordPress que uma nova regra de reescrita está definida. Este é o trabalho do add_rewrite_rule ()add_rewrite_tag ()  funções, mas você também pode fazê-lo usando os query_vars e rewrite_rules_array filtros. Para fazer isso, precisamos criar duas funções e dois filtros. A primeira função simplesmente adiciona uma nova variável ao filtro query_vars e a segunda registra essa nova variável nas regras globais de reescrita:

/ *
|--------------------------------------------------------------------------
| Inicie a reescrita. Exemplo: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// Registra uma nova var
função rc_add_query_vars ($ vars) {
$ vars [] = "referenciador"; // nome do var como visto no URL
retornar $ vars;
}

// Conecta nossa função em query_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Adicione a nova regra de reescrita às existentes
função rc_add_rewrite_rules ($ rules) {
$ new_rules = array ('referenciador / ([^ /] +) /? $' => 'index.php? referrer = $ corresponde a [1]'));
$ rules = $ new_rules + $ rules;
retornar $ regras;
}

// Conecta a função em rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');

Depois de adicionar esse código a qualquer um dos arquivos do seu plug-in ou do arquivo theme.php, acesse settings> Permalinks e salve a estrutura dos permalinks. Esta ação é necessária. Agora você deve conseguir acessar seu site com este tipo ou URL: http://mysite.com/referrer/seu nome. Se você deseja ser redirecionado para uma página específica, altere index.php? Referrer = $ correspondências [1] por index.php? Pagename = minha-página & referrer = $ correspondências [1] onde “minha-pagina” é a página a ser redirecionado para slug.

Recuperando o valor da variável

Agora que sua regra de reescrita está definida, convém acessar o valor da variável. Mas se você fizer um simples $ _GET [‘referrer’], não receberá nenhum valor. Para recuperar os valores dos URLs de URL, você precisa conectar uma função ao filtro “template_redirect”. A ligação ao filtro “init” é muito cedo. Então você pode acessar as variáveis ​​necessárias através do objeto $ wp_query. Aqui está uma amostra rápida de como fazê-lo:

// Recuperar var URL
função rc_get_my_vars () {
global $ wp_query;

if (isset ($ wp_query-> query_vars ['referrer'])) {
$ referrer = get_query_var ('referenciador');
}
}

// Conecta a função em template_redirect
add_action ('template_redirect', 'rc_get_my_vars');

Em seguida, você pode repetir o valor do referenciador $ ou usá-lo como faria com uma variável GET normal.

Obviamente, você pode modificar o uso de mais de uma variável:

// em rc_add_query_vars ()
$ vars [] = "referenciador";
$ vars [] = "campanha";

// em rc_add_rewrite_rules ()
$ new_rules = array ('referenciador / ([^ /] +) / ([^ /] +) /) /' $ '=>' index.php? nome da pagina = minha-página & referenciador = $ correspondências [1] & campaign = $ correspondências [ 2] ');

Não se esqueça de que o módulo mod_rewrite do PHP está habilitado para usar a reescrita de URL.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me