fbpx

Bem vindo ao
Blog da FULL.

Aprenda, crie e cresça seu negócio na internet.

Encontre conteúdos, dicas, tutoriais e novidades sobre as principais ferramentas Wordpress

Siga a FULL.

A API de reescrita do WordPress

Você está em:

A API de reescrita do WordPress

O WordPress tem uma API muito útil chamada “a API de reescrita ”. Acho que já tem de “reescrita de URL”, este é o processo que torna as 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 disso, e os mecanismos de busca não gostam muito disso. É por isso que quase todo CMS tem uma função interna que “reescreve” urls para que fiquem 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 de permalinks . Ao alternar da estrutura de permalink 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.

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

Se dermos uma olhada no Codex, podemos ver na página da API de reescrita que esta API tem 6 funções embutidas. O uso mais comum da reescrita é usar essas funções, existem muitos tutoriais sobre isso, por isso vou usar filtros ao invés de funções. Porque sim, a API de reescrita também pode ser usada com filtros! Esses filtros estão listados na página do Codex da classe WP_Rewrite .

Adicionando uma nova Var de Consulta

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

/*

|————————————————————————–

| Start Rewrite. Sample: http://mysite.com/referrer/remi

|————————————————————————–

*/

// Register a new var

function rc_add_query_vars( $vars) {

$vars[] = “referrer”; // name of the var as seen in the URL

return $vars;

}

// Hook our function into query_vars

add_filter(‘query_vars’, ‘rc_add_query_vars’);

// Add the new rewrite rule to existings ones

function rc_add_rewrite_rules($rules) {

$new_rules = array(‘referrer/([^/]+)/?$’ => ‘index.php?referrer=$matches[1]’);

$rules = $new_rules + $rules;

return $rules;

}

// Hook the function into rewrite_rules_array

add_filter(‘rewrite_rules_array’, ‘rc_add_rewrite_rules’);

Depois de adicionar esse código a qualquer arquivo de plugin ou ao arquivo functions.php do tema, vá para configurações > Permalinks e salve a estrutura de permalinks. Essa ação é necessária. Agora você deve conseguir acessar seu site com este tipo ou url: http://mysite.com/referrer/your-name . Se você deseja ser redirecionado em uma página específica, altere index.php?referrer=$matches[1] por index.php?pagename=my-page&referrer=$matches[1] onde “my-page” é a página a ser redirecionado para slug.

Recuperando o valor da variável

Agora que sua regra de reescrita está definida, talvez você queira acessar o valor da variável. Mas se você fizer um simples $_GET[‘referrer’], você não receberá nenhum valor. Para recuperar os valores de URL vars, você precisa conectar uma função ao filtro “template_redirect”. Conectar-se 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 fazer isso:

// Retrieve URL var

function rc_get_my_vars() {

global $wp_query;

if(isset($wp_query->query_vars[‘referrer’])) {

$referrer = get_query_var(‘referrer’);

}

}

// Hook the function into template_redirect

add_action( ‘template_redirect’, ‘rc_get_my_vars’);

Você pode ecoar o valor $referrer ou usá-lo como faria com uma variável GET normal.

É claro que você pode modificar o uso de mais de uma variável:

// in rc_add_query_vars()

$vars[] = “referrer”;

$vars[] = “campaign”;

// in rc_add_rewrite_rules()

$new_rules = array(‘referrer/([^/]+)/([^/]+)/?$’ => ‘index.php?pagename=my-page&referrer=$matches[1]&campaign=$matches[2]’);

Não esqueça que você precisa do módulo mod_rewrite do PHP habilitado para usar a reescrita de url.

Aprenda com a FULL.

Junte-se a mais de 50 mil pessoas que recebem em primeira mão as principais ferramentas e tecnologia para desenvolvimento web

Meu carrinho
🎁 Faltam R$300,00 para liberar o Cupom Secreto
Seu carrinho está vazio.

Parece que você não adicionou nada ao seu carrinho =(