Crear una estructura de enlace permanente para un archivo de taxonomía por tipo de publicación personalizada

4

Entonces, me he estado volviendo loco tratando de resolver esto. Esencialmente, he creado dos tipos de publicaciones personalizadas, 'the_case_study 'y 'the_video' , con las respectivas slugs 'case-studies' y 'videos' .

También he creado tres taxonomías que se aplican tanto a the_case_study como a the_video. Estos son 'the_room' , 'the_system' y 'the_style' .

De forma predeterminada, el archivo de taxonomía muestra todas las publicaciones etiquetadas con un término determinado, y el enlace permanente se ve así:

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

Me gustaría tener un archivo de taxonomía que solo muestre las publicaciones del tipo de publicación personalizada actual y tendrá un enlace permanente relativo a ese tipo de publicación personalizada. Por ejemplo:

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)

Ya resolví un problema similar en otra parte del sitio, basado en esta respuesta entre otras cosas. Sin embargo, solo sé cómo hacer que funcione para un tipo de publicación.

Esto parece algo que debería ser posible, pero no sé cómo hacerlo. Básicamente, me gustaría poder encontrar al padre de la página de taxonomía actual, donde ese padre es el tipo de publicación personalizada actual ... pero no estoy seguro de cómo se relaciona con el tipo de publicación personalizada y las restricciones de taxonomía.

¿Es lo que estoy tratando de hacer posible? ¿Debería pensarlo de manera diferente?

    
pregunta jpsingleton 22.05.2013 - 20:36

2 respuestas

1

Esto es muy fácil de hacer agregando reglas de reescritura personalizadas. Esto debería ayudarte a comenzar:

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 siempre al cambiar las reglas de reescritura, asegúrate de vaciar las reglas de reescritura yendo a Configuración - > Permalinks y haga clic en "Guardar cambios".

    
respondido por el Matthew Boynes 24.05.2013 - 03:08
-1

Puede modificar la consulta directamente en su plantilla o usar la acción pre_get_posts.

Plantilla de archivo 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 enlace de acción:

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');
  }
}
    
respondido por el Cole 22.05.2013 - 21:01

Lea otras preguntas en las etiquetas