08 out

Criando URLs dinâmicas usando Custom Posts

Publicado em Tutoriais | Com as tags , , , , , | Seja o primeiro a comentar!

Dando continuidade a construção de um plugin para wordpress, vou dar uma dica simples, mas que pode ser bem útil para diversos casos: Criar uma url dinâmica, baseada em uma regra qualquer definida pelo desenvolvedor.

Se você já teve a curiosidade de olhar a página de configuração de links permanentes do wordpress, já deve ter percebido um link para a documentação que ensina como customizar a url do seu blog/site. Normalmente, os blogs em wordpress usam a estrutura /ANO/MES/DIA/POST, mas essa estrutura é customizável. Não seria interessante usar isso em nosso plugin? Eventualmente é, e por algum motivo desconhecido, as tags de URL padrões do wordpress só funcionam para os posts nativos, não funcionando para os custom posts criados pelos desenvolvedores. Mas isso é facilmente contornável, com apenas um filtro e um método no nosso plugin. Vejamos como:

No método init() do nosso plugin, vamos colocar um filtro para que, toda vez que a url for gerada, ela passe por um método nosso, onde faremos o tratamento necessário.

add_filter('post_type_link', array(&$this, 'demonstracao_post_type_link'));

Feito isso, vamos criar o método demonstracao_post_type_link():

function demonstracao_post_type_link($post_link, $id = 0, $leavename = false){
	if (strpos('%author%', $post_link) < 0){
		return $post_link;
	}
	$post = get_post($id);
	if (!is_object($post) || $post->post_type != 'demonstracao'){
		return $post_link;
	}
	$author = get_the_author_meta('user_nicename', $post->post_author);
	return str_replace('%author%', $author, $post_link);
}

Observe que eu estou fazendo um tratamento para trocar a tag %author%, que é uma tag nativa. Você poderia usar qualquer tag, e não precisa usar %% como marcador. Pra finalizar, é preciso alterar a estrutura do rewrite do nosso custom post para refletir a nossa estrutura dinâmica. No plugin anterior, altere a linha onde tem

'rewrite' => array(
	'slug' => 'demonstracao',
	'with_front' => false,
	'feeds' => true,
	'pages' => true,
),

por

'rewrite' => array(
	'slug' => 'demonstracao/%author%',
	'with_front' => false,
	'feeds' => true,
	'pages' => true,
),

Feito isso, a URL do nosso plugin terá o slug do autor do post dentro da sua estrutura de link permanente.

Deixe um Comentário

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>