Mudando url da página com filter rewrite_rules_array do WordPress

Essa semana fiz uma feature pra facilitar o trabalho do time de analytics da spiti.

A tarefa era relativamente simples: Adicionar um /al/ em algumas paginas da plataforma, para assim, o time de analytics ter um identificador na url de área logada da plataforma.

Pois bem…

Para fazer isso programaticamente criei uma função que pega o ID da página passando o slug.

function new_get_id_by_slug($page_slug) {
    $page = get_page_by_path($page_slug);
    if ($page) {
        return $page->ID;
    } else {
        return null;
    }
}

A função acima é bem simples: a função get_page_by_path($page_slug) pega o objeto da pagina na qual passei o slug.
em seguida faço uma verificação se ela existe ou nao.
Se a página existir retorno o ID dela.
Simples né =)

em seguida criei algumas funções para fazer o rewrite da url especifica da página. Segue uma delas:

function new_rewrite_rules_home($rules) {
	$newrules = array();
	$newrules["^al\/home?$"] = 'index.php?page_id='.new_get_id_by_slug('/home');
	$rules = $newrules + $rules;
	return $rules;
}
add_filter('rewrite_rules_array', 'new_rewrite_rules_home' , 1 , 1);

A função acima chama um hook do WordPress, add_filter(‘rewrite_rules_array’).
essa função faz uma expressão regular bem simples passando a página pelo id: page_id=’.new_get_id_by_slug(‘/home’).
Ou seja, se a pagina for /home substitui para /al/home

Pronto, agora só ir brincando com as páginas que deseja mudar a url =)

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *