Como alterar a estrutura do permalink para o tipo de postagem personalizado e suas taxonomias?

10

Esta é uma repostagem de uma pergunta anterior que eu tinha, mas eu gostaria de entrar em mais detalhes agora para poder resolver isso completamente.

Então, novamente, com as postagens (normais) alterar o link permanente é tão fácil quanto ir para Configurações> Link permanente e alterá-lo para qualquer coisa que você quiser, como o amplamente utilizado %category%/%postname%.html. Isso tudo funciona. Se isso fosse tão fácil para o tipo de postagem personalizada e também para as taxonomias.

Então é isso que eu gosto de realizar.

  1. http://mywordpress.com/portfolio.html - exibe todas as postagens em todas as categorias.
  2. http://mywordpress.com/portfolio/music/ - Exibe todas as postagens nesta categoria.
  3. http://mywordpress.com/portfolio/music/trance/ - Exibe todas as postagens nesta categoria (filho).
  4. http://mywordpress.com/portfolio/music/trance/Tiesto.html - Exiba a postagem.

O que eu consegui até agora é o seguinte:

  1. Primeiro, criei um projetocustom_post_type nomeado e uma project_category .taxonomy
  2. Criei um portfólio de páginas e dei a ele um modelo de página que listará todas as post_type = projectpostagens. Como posso adicionar .html ao link permanente de páginas? Agora ele está vinculado a http://mywordpress.com/portfolio enquanto eu quero http://mywordpress.com/portfolio.html . Isso deve resolver o primeiro problema.
  3. Então as coisas ficarão difíceis, porque não sabemos de antemão quantas subcategorias existem, talvez até não haja nenhuma. Então a estrutura que estamos buscando é portfolio/(CATEGORY PATH FROM TOP TO CHILD)/post.html. Eu ainda estou preso neste momento. Eu acho que, de alguma forma, devo adicionar a última categoria ao caminho e passá-la ao longo da project_category , que deve levar a um arquivo taxonomy.php onde eu possa processá-la corretamente.
  4. Também não lidei com isso, mas deveria ter algo a ver com %postname%.htmlo final de algo.

Espero que meu problema esteja claro e que haja corajosos desenvolvedores que me ajudem a resolver esse problema, que já me mantém ocupado por quatro dias INTEIROS!

Marca
fonte
11
A solução que dei na última pergunta deveria ter funcionado dessa maneira, se você a implementou corretamente. A única coisa é que você não pode obter a parte html
Manny Fleurmond
Sim, mas ele foi bloqueado para um caminho específico; portanto, apenas categoria / subcategoria / página enquanto não houver subcategorias ou mais. Isso é mais dinâmico.
Mark
Ou eu não implementá-lo corretamente;)
Mark

Respostas:

4

Ok, acho que posso ter uma solução. Não tenho idéia se esse é o caminho certo para fazer isso, mas, por enquanto, é a única coisa que parece funcionar.

add_filter('rewrite_rules_array', 'mmp_rewrite_rules');

function mmp_rewrite_rules($rules) {
    $newRules                               = array();
    $newRules['portfolio/(.+)/(.+?).html$'] = 'index.php?project=$matches[2]';
    $newRules['portfolio/(.+)/?$']          = 'index.php?project_category=$matches[1]'; 

    return array_merge($newRules, $rules);
}


add_filter('request', 'mmp_rewrite_request');

function mmp_rewrite_request($vars) {
    if (isset($vars['project_category'])) {
        if (strpos($vars['project_category'], '/') !== false) {
            $categories = explode('/', $vars['project_category']);
            $vars['project_category'] = $categories[count($categories) - 1];
        }
    }

    return $vars;
}
Marca
fonte
O filtro de solicitação é uma boa maneira de filtrar se estamos solicitando uma categoria (termo de fato) e uma postagem. Permite adicionar apenas uma regra de reescrita e obter a página de postagem, se a postagem estiver em uma categoria, subcategoria ou não.
ZalemCitizen
1

2 Métodos Diferentes:

* Veja as notas na parte inferior deste post.


por exemplo, você deseja ter essa estrutura de link permanente:
/ MAIN_CATEGORY / SUB_CAT_2 / Another_SUBCAT / my-post

Inicialmente , pode ser necessário definir links permanentes para /% category% /% postname% . Então...




MÉTODO 1:

criar categorias padrão ( MAIN_CATEGORY, SUB_CAT_1, and etc..), e registrar o CUSTOM POST, incluindo este parâmetro:

'taxonomies'    => array('category'..)

e use esses códigos para alterar os links permanentes: https://wordpress.stackexchange.com/a/195643/33667
Em seguida, depois de publicar um POST PERSONALIZADO (se anexado a uma categoria), o URL será:
example.com/MAIN_CATEGORY/SUB_CAT_1/my-post



MÉTODO 2:

(ps esse método não é recomendado se você planeja publicar centenas ou milhares de postagens)

registre o CUSTOM POST (nomeado MAIN_CATEGORY), incluindo estes parâmetros:

    "supports"      => array('page-attributes'......
    "hierarchical"  => true,

publique postagens personalizadas como esta: (por exemplo, publique várias postagens personalizadas , nomeadas . Depois disso, quando você publicar outra postagem, mas escolher como pai.
SUB_CAT_2, SUB_CAT_1..SUB_CAT_2





ps
1) Se você é um novato, revise: Registre o CUSTOM POST e Registre o CUSTOM POST no TAXONOMY
2) se você precisar da funcionalidade de pesquisa para subníveis, use a consulta de pesquisa personalizada

T.Todua
fonte