Permalinks: tipo de publicación personalizada - taxonomía personalizada - publicación

32

Tengo problemas para trabajar con las reglas de reescritura de WordPress y podría necesitar ayuda.

Tengo un tipo de publicación personalizado llamado _shows_ .

Todos los shows tienen una única categoría de taxonomía personalizada _show-category_. A _show_ nunca tendrá más de un _show-category_ .

Me gustaría que mis URL se enruten de esta manera:

www.mysite.com/shows/  =>  archive-shows.php

www.mysite.com/shows/%category%/ => taxonomy-show-category.php

www.mysite.com/shows/%category%/%postname%/ => single-shows.php

Entonces, como ejemplo del mundo real, digamos que tenemos un _show-category_ "Foo" y un post de _show_ titulado "Bar" que tiene "Foo" ya que es _show-category_ . Espero que mi aplicación de WordPress se vea así:

www.mysite.com/shows/foo/ => shows all posts under the foo category
www.mysite.com/shows/foo/bar => shows the indivual post

Intento evitar los complementos cuando es posible, pero estoy abierto a cualquier solución.

    
pregunta Paul T 01.08.2013 - 18:16

2 respuestas

53

Primero, registra tu taxonomía y configura el argumento slug de rewrite a shows :

register_taxonomy(
    'show_category',
    'show',
    array(
        'rewrite' => array( 'slug' => 'shows', 'with_front' => false ),
        // your other args...
    )
);

A continuación, registre su tipo de publicación y establezca la barra en shows/%show_category% , y establezca el argumento has_archive en shows :

register_post_type(
    'show',
    array(
        'rewrite' => array( 'slug' => 'shows/%show_category%', 'with_front' => false ),
        'has_archive' => 'shows',
        // your other args...
    )
);

Por último, agregue un filtro a post_type_link para sustituir la categoría de show en los enlaces permanentes de show individuales:

function wpa_show_permalinks( $post_link, $post ){
    if ( is_object( $post ) && $post->post_type == 'show' ){
        $terms = wp_get_object_terms( $post->ID, 'show_category' );
        if( $terms ){
            return str_replace( '%show_category%' , $terms[0]->slug , $post_link );
        }
    }
    return $post_link;
}
add_filter( 'post_type_link', 'wpa_show_permalinks', 1, 2 );

EDIT

Olvidó el argumento has_archive de register_post_type anterior, que debe establecerse en shows .

    
respondido por el Milo 01.08.2013 - 19:44
0

Para obtener una taxonomía personalizada en la página de publicación o archivo, ¿por qué no usó este código?

global $wpdb, $post;
    $terms = get_the_terms($post->ID, 'CUSTOM_TEXONOMY_NAME_HERE');
    if (! empty($terms)) {
      foreach ($terms as $term) {
        $url = get_term_link($term->slug, 'CUSTOM_TEXONOMY_NAME_HERE');
        print "<a class='auther_nama' href='{$url}'>{$term->name}</a>";
      }
    }
    
respondido por el Rohit Kaushik 22.10.2018 - 13:52

Lea otras preguntas en las etiquetas