Estou construindo um site Wordpress com vários tipos de postagem personalizados. Cada tipo de postagem é uma revista diferente. Também tenho meta campos personalizados para um ano e edição de revista.
Gostaria de ter URLs (archive.php usado):
http://my_site/magazine/name/
http://my_site/magazine_name/year/
http://my_site/magazine_name/year/issue/
Eu fiz isso por código:
function magazine_rewrite_tag() {
add_rewrite_tag('%issue_year%', '([0-9]{4})');
add_rewrite_tag('%issue%', '([0-9])');
}
add_action('init', 'magazine_rewrite_tag', 10, 0);
e:
function magazine_rewrite_rules() {
add_rewrite_rule('^([a-z]+)/([0-9]{4})/([0-9])?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]&issue=$matches[3]', 'top');
add_rewrite_rule('^([a-z]+)/([0-9]{4})?', 'index.php?post_type=$matches[1]&issue_year=$matches[2]', 'top');
}
add_action('init', 'magazine_rewrite_rules');
Claro que também tenho consultas personalizadas em archive.php. E isso funciona bem.
Mas agora, meus URLs para artigos únicos não funcionam. Por padrão, é:
http://my_site/magazine/post-title
mas mostra todos os artigos da revista como url (e usou o modelo archive.php):
http://my_site/magazine/
Como adicionar regras de reescrita corretamente para postagens personalizadas únicas? É possível, eu gostaria de ter URLs para postagem única (apenas para tipos de postagem personalizados escolhidos) neste formato:
http://my_site/magazine/year/issue/post-title
custom-post-types
permalinks
url-rewriting
rewrite-rules
Łukasz Florczak
fonte
fonte
10
é a prioridade padrão . Você pode deixar os dois desligados nesse caso ... ou tentar um número maior. (2) Você verificou as regras de reescrita resultantes? Verifique também a ordem dessas regras conforme elas são processadas em sua ordem. Despejo$GLOBALS['wp_rewrite']
. (3) Você adicionouquery_vars
que pode entrar em conflito?Respostas:
Encontrei solução! Um plugin do Monkeyman Rewrite Analyzur foi muito útil: https://wordpress.org/plugins/monkeyman-rewrite-analyzer/
Então agora, eu tenho esses URLs de trabalho ...
single.php:
archive.php:
Em uma página personalizada do editor de postagem no wp-admin, uso o plug-in Advanced Custom Fields para o ano e o problema. Você também pode definir meta-campos sozinho.
Em seguida, adicionei tags de reescrita para o ano e o problema:
Em seguida, adicionei regras de reescrita para qualquer combinação de URLs:
No final, substituo os URLs padrão pelos meus, por ano e número de edição
fonte