Faça com que o post slug tenha prioridade sobre o slug de categoria

4

Eu tenho um site wordpress onde a base da categoria é removida do URL.

Agora, quando uma categoria tem um determinado slug semelhante a um slug de postagem, a categoria é mostrada.

Eu gostaria de mostrar a postagem em seu lugar. Isso é possível?

Obrigado!

    
por bertkat 10.12.2012 / 17:28

2 respostas

0

Não há uma maneira limpa de fazer o que você está pedindo. O que você quer é que o WordPress verifique se, para uma determinada URL, há uma mensagem com essa lesma, e se não, tente encontrar uma categoria com essa lesma. Com exceção das páginas, o WordPress não verifica se existe um opject (post, term) antes de "committing" para uma regra de reescrita correspondente. Portanto, quando você tiver regras de reescrita conflitantes, a segunda nunca será lida.

A melhor resposta é encontrar uma estrutura de reescrita diferente para suas postagens ou categorias. Os prefixos são ideais, como /blog/%postname%/ , /articles/%postname%/ para publicações ou /category/%category%/ , /topic/%category%/ para categorias.

Dito isto, não é impossível fazer o que você está pedindo, simplesmente não é o ideal. O que você precisa fazer é interceptar o request e verificar se o post existe. Caso contrário, altere a consulta vars. Observe que isso aumenta o carregamento de páginas de cada postagem, portanto, pondere os custos em relação aos benefícios. Lembre-se também de que, se uma postagem e uma categoria tiverem o mesmo nome, não haverá acesso à categoria. Sem mais delongas,

function wpse_75604_check_rewrite_conflicts( $qv ) {
    if ( isset( $qv['name'] ) ) {
        if ( ! get_page_by_path( $qv['name'], OBJECT, 'post' ) ) {
            $qv['category_name'] = $qv['name'];
            unset( $qv['name'] );
        }
    }
    return $qv;
}
add_filter( 'request', 'wpse_75604_check_rewrite_conflicts' );
    
por Matthew Boynes 25.05.2013 / 23:16
1

Eu acho que você pode usar a resposta para essa questão substituindo page_rewrite_rules filter por post_rewrite_rules , fazendo com que as regras de pós-reescrita tenham prioridade máxima.

    
por Parham 10.12.2012 / 19:30