Removendo base de taxonomia usando reescrita de WP

4

Estou tentando criar a seguinte estrutura de URL:

example.com/attractions                     <-- post type archive
example.com/attractions/taxonomy_term       <-- taxonomy archive
example.com/attractions/van-gogh-museum     <-- custom post type

Infelizmente, isso não é possível por padrão: o WordPress precisa da base da taxonomia na URL, como o usuário da SE sanchothefat escreveu em sua resposta a esta questão :

  

... se você não quer que a lesma-taxonomia esteja lá, então você está sem   sorte, você não pode ter o mesmo slug como seu tipo de post ou outro   taxonomia, uma vez que não sabe o que é termo do qual taxonomia e o que é   um post.

Em outras palavras, o WordPress precisa dessa estrutura de permalink:

example.com/attractions/taxonomy_base/taxonomy_term

Minha pergunta: Existe uma maneira de fazer este trabalho usando o WordPress reescrever API?

Suponho que envolve 2 etapas:

  1. Remover a base de taxonomia do URL
  2. Diga ao WordPress que tipo de postagem ele precisa exibir

Atualização 1

Eu encontrei um snippet de código que deve remover a base da taxonomia da URL:

global $wp_rewrite;
$wp_rewrite->extra_permastructs['taxonomy_base'] = array('%taxonomy_base%', EP_NONE);

( Fonte - veja a última resposta na parte inferior da página)

Esta não é a solução completa, já que o WordPress não sabe se a postagem é um arquivo de taxonomia ou um tipo de postagem ...

Atualização nº 2

O autor deste artigo excelente em Consultas taxonômicas avançadas com URLs bonitas me escreveram:

  

O que você está perguntando não é muito difícil, mas pode ser um pouco complicado.   As regras de reescrita precisam saber que tipo de coisa o segundo termo   é (..) É por isso que o prefixo do nome da categoria / tag / taxonomia é prefixado.   Você poderia criar uma reescrita para que tudo depois de / atrações / seja   tratada como uma URL de taxonomia, mas fazer as duas coisas é um pouco complicado.

Atualização 3

Para qualquer um que tenha o mesmo problema, dê uma olhada em esta discussão no WordPress Answers. Especialmente o código do plugin do MikeSchinkel pode ajudar.

Aqui está um exemplo interessante de WPCandy combinando a base e o termo da taxonomia no URL: http://wpcandy.com/pros/experienced/with-multisite

    
por Mattvic 04.11.2011 / 22:32

2 respostas

1

Acabei de adicionar um plug-in ao Diretório do Wordpress que remove a base slug de qualquer taxonomia personalizada e da taxonomia de categoria padrão. Você pode encontrá-lo aqui - enlace

    
por David DiGiovanni 30.08.2012 / 01:15
1

Recentemente, deparei com a mesma situação e, depois de um dia pesquisando uma solução e não consegui encontrar nenhuma, escrevi minha própria solução working .

O truque é usar o wp_rewrite do Wordpress e adicionar seus URLs a ele quando o Wordpress gera seus permalinks no começo.

Eu escrevi uma função simples para fazer tudo automaticamente e expliquei tudo no meu blog (não quero colar o mesmo código duas vezes), então fique à vontade para dar uma olhada;)

enlace

    
por Some Web Guy 03.12.2012 / 16:43