Como obter urls de arquivo com a mesma origem para tipos e termos personalizados?

Esta é talvez uma pergunta estranha e talvez não tenha respostas, mas vou tentar.

  • tipo de postagem personalizado: produto
  • taxonomia personalizada 1: categoria do produto
  • termo personalizado: tipo1
  • Taxonomia personalizada 2: produto_feature
  • termo personalizado: feature1

O que eu gostaria:

  • www.mydomain.com/products> página do arquivo de produtos
  • www.mydomain.com/products/type1> página de arquivo de termos
  • www.mydomain.com/products/feature1> página de arquivo de termos
  • www.mydomain.com/products/type1/feature1> página de arquivo de termos

Os principais problemas aqui acho que são 2:

  1. Estou ignorando a parte do caminho da taxonomia (‘add_rewrite_rule’)
  2. O arquivo de produtos e o arquivo de termos compartilham o mesmo raio (‘produtos’)

É possível? Estou pensando em várias coisas (api de resto, add_rewrite_rule / tag, etc.), mas não tenho certeza se são maneiras boas / viáveis.

Solutions Collecting From Web of "Como obter urls de arquivo com a mesma origem para tipos e termos personalizados?"

Portanto, uma primeira solução pode estar usando add_rewrite_rules() . Uma primeira lógica em bruto deve ser algo como:

1- Obter $terms_string termo que você precisa, salve em uma var, diga $terms_string ; $ terms_string deve ser uma lista de limas separadas por tubos, adequadas para regexp, como ‘type1 | type2’, etc. contendo SOMENTE valores válidos (permitidos). Diga usar get_terms () para obter todos os slugs ..

2- adicione uma regra de reescrita personalizada algo assim:

 function add_rewrite_rules() { add_rewrite_rule( '^products/(' . $terms_string . ')/?$', //matches things like /products/type1 'index.php?product_category=$matches[1]', //the real query that will be executed upon matching requests 'top' ); } add_action( 'init', 'add_rewrite_rules'); 

Funciona. Ele mostrará corretamente um arquivo de taxonomia. Em casos do mundo real, a construção de um conjunto de regras consistente, de fato, será muito mais envolvida, mas esse é o caminho. Muito código para colar aqui, mas acabei de fazer um conjunto complexo de regras, incluindo o gerenciamento de idiomas com o polylang. Então, se alguém tiver as mesmas tarefas, reescreva as regras.