web-dev-qa-db-fra.com

type de message personnalisé et taxonomie personnalisée permalien

J'ai 2 pages.

/client-a/
/client-b/

J'ai un type de message personnalisé, appelé "cas":

$case_type = array(
    'labels' => $case_labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'query_var' => 'case',
    'rewrite' => array( 'slug' => 'cases', 'with_front' => false ),
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => 46,
    'has_archive' => true,
    'supports' => array('title','editor'),
); 
register_post_type( 'case' , $case_type );

Et enfin, j'ai une taxonomie personnalisée, appelée "type":

register_taxonomy('type',array('case'),array(
    'public' => TRUE,
    'show_tagcloud' => FALSE,
    'hierarchical' => TRUE,
    'labels' => $categoria_labels,
    'show_ui' => TRUE,
    'query_var' => TRUE,
    'rewrite' => array( 'slug' => 'genre', 'with_front' => false )
))

Tous mes types ont le même nom que mes pages: client-a, client-b.

Comment puis-je réécrire les règles de permalien pour accepter cette structure:

client-a/ --> page, lists all 'cases', uses a template
client-a/subpage --> this is a subpage

client-a/cases/case-a.html --> this is a custom post type WITH the genre "client-a"
client-b/cases/case-b.html --> this is a custom post type WITH the genre "client-b"

Quelle est la meilleure approche pour cette structure?

J'utilise cette solution: http://xplus3.net/2010/05/20/wp3-custom-post-type-permalinks/comment-page-1/#comment- 1005

Je fais travailler mes permaliens pour des types de publication personnalisés et une taxonomie personnalisée, mais toutes mes pages sont perméables.

Merci!

5
Homem Robô

Quelque chose de semblable à ceci dans votre functions.php ou un plugin fera l'affaire:

function custom_rewrite( $wp_rewrite ) {
    $feed_rules = array(
        '([^/]+)/cases/([^/]+).html'    =>  'index.php?genre='. $wp_rewrite->preg_index(1) .'&case='. $wp_rewrite->preg_index(2)
    );
    $wp_rewrite->rules = $feed_rules + $wp_rewrite->rules;
}
// refresh/flush permalinks in the dashboard if this is changed in any way
add_filter( 'generate_rewrite_rules', 'custom_rewrite' );

Vous devrez actualiser/vider vos liens permanents (WP Dashboard> Paramètres> Liens permanents> Enregistrer les modifications) lorsque vous ajoutez, modifiez ou supprimez ce code. Vous devrez peut-être l'ajuster légèrement si cela ne fonctionne pas tel qu'il est, mais cela montre le principe de base sur la façon de le faire.

3
Tom J Nowell