Crie uma estrutura de permalink para um arquivo de taxonomia por tipo de postagem personalizado

4

Então, eu estou ficando louco tentando descobrir isso. Essencialmente, eu criei dois tipos de postagem personalizados, 'the_case_study 'e 'the_video' , com os respectivos slugs 'case-studies' e 'videos' .

Eu também criei três taxonomias que se aplicam tanto ao the_case_study quanto ao_video. Estes são 'the_room' , 'the_system' e 'the_style' .

Por padrão, o arquivo de taxonomia exibe todas as postagens marcadas com um determinado termo, e o permalink é semelhante a:

example.com/room/kitchen (displays all posts tagged with kitchen)

Eu gostaria de ter um arquivo de taxonomia que exibirá somente as postagens do tipo de postagem personalizado atual e terá um permalink que é relativo a esse tipo de postagem personalizado. Por exemplo:

example.com/case-studies/room/kitchen (should display all case studies tagged with kitchen)

example.com/videos/room/kitchen (should display all videos tagged with kitchen)

Já resolvi um problema semelhante em outro lugar do site, com base em esta resposta entre outras coisas. No entanto, só sei como fazer esse trabalho para um tipo de postagem.

Isso parece algo que deveria ser possível, mas eu não sei como fazer isso. Essencialmente, gostaria de encontrar o pai da página de taxonomia atual, em que esse pai é o tipo de postagem personalizado atual ... mas não sei como isso combina com as restrições de taxonomia e tipo de postagem personalizadas. / p>

É o que estou tentando fazer? Eu deveria estar pensando diferente?

    
por jpsingleton 22.05.2013 / 20:36

2 respostas

1

Isso é muito fácil, adicionando regras de reescrita personalizadas. Isso deve começar:

add_action( 'init', 'wpse_100386_rewrites' );
function wpse_100386_rewrites() {
    add_rewrite_rule( 'case-studies/room/([^/]+)/?', 'index.php?the_room=$matches[1]&post_type=the_case_study', 'top' );
    add_rewrite_rule( 'videos/room/([^/]+)/?', 'index.php?the_room=$matches[1]&post_type=the_video', 'top' );
}

Como sempre, ao alterar as regras de regravação, lembre-se de liberar suas regras de regravação indo em Configurações - > Permalinks e clique em "Salvar alterações".

    
por Matthew Boynes 24.05.2013 / 03:08
-1

Você pode alterar a consulta diretamente no seu modelo ou usar a ação pre_get_posts.

Modelo de arquivo interno:

$taxonomies_to_match = array('the_room','the_system','the_style');
if(is_tax($taxonomies_to_match)) {
  global $wp_query;
  query_posts(array_merge($wp_query->query_vars,array('post_type' => 'the_case_study'));
}

Método de ação:

add_action('pre_get_posts','my_post_filter');
function my_post_filter($query) {
  $taxonomies_to_match = array('the_room','the_system','the_style');
  if(is_tax($taxonomies_to_match)) {
    $query->set('post_type','the_post_type_you_want');
  }
}
    
por Cole 22.05.2013 / 21:01