web-dev-qa-db-fra.com

Post types personnalisés avec leur propre structure de lien permanent

Mes messages principaux sont des nouvelles (catégorie "nouvelles"). Par conséquent, j'ai utilisé l'écriture d'URI globale au format suivant: /year/month/post-name

J'ai également des publications contenant des albums photo (catégorie "photo"), mais je souhaite leur donner une autre structure d'URI, à savoir: /category/post-name dans laquelle la catégorie est photos

J'ai regardé sur Internet et j'ai trouvé ce lien (a catégorie, mais je pense dans la catégorie est meilleur) qui contient pas mal d'informations. Je me souviens aussi vaguement d'un crochet dans functions.php qui pourrait faire ceci:

'rewrite' => ...

Malheureusement, pour un Wordpress Newbee comme moi, cela ne suffit pas. Je n'arrive pas à comprendre comment faire cela. De l'aide? Merci.

Donc, si la catégorie est news => /year/month/post-name par ex. /2012/10/test-post Si autre catégorie, telle que photos ou vidéos => /category/[sub-category/)post-name p. ex. /photos/(2012/)France ou pour les vidéos: /videos/(2011/)concert-u2

EDIT: les commentaires me disent qu'il est plus sage d'utiliser des post-types personnalisés.

J'ai fait ça. Jusqu'à présent, j'ai deux types de messages personnalisés (videos et photos). Je ne pense pas qu'il y en aura d'autres. Ce qui doit arriver: changez la structure de permalien des post-types personnalisés. Je veux qu'ils soient /photos/post-name et /videos/post-name. Les messages normaux devraient être /year/month/post-name. J'ai ajouté ceci à mon functions.php

/* Add custom post-type (fotos) (added by Bram Vanroy) */

add_action( 'init', 'register_cpt_foto' );

function register_cpt_foto() {

    $labels = array( 
        'name' => _x( 'fotos', 'foto' ),
        'singular_name' => _x( 'foto', 'foto' ),
        'add_new' => _x( 'Nieuw fotoalbum', 'foto' ),
        'add_new_item' => _x( 'Voeg nieuw fotoalbum toe', 'foto' ),
        'edit_item' => _x( 'Bewerk fotoalbum', 'foto' ),
        'new_item' => _x( 'Nieuw fotoalbum', 'foto' ),
        'view_item' => _x( 'Bekijk fotoalbum', 'foto' ),
        'search_items' => _x( 'Zoek in fotoalbums', 'foto' ),
        'not_found' => _x( 'Geen fotoalbums gevonden', 'foto' ),
        'not_found_in_trash' => _x( 'Geen fotoalbums gevonden in de prullenmand', 'foto' ),
        'parent_item_colon' => _x( 'Parent foto:', 'foto' ),
        'menu_name' => _x( 'Foto\'s', 'foto' ),
    );

    $args = array( 
        'labels' => $labels,
        'hierarchical' => true,
        'description' => 'Het posttype dat alle foto-albums verzorgt.',
        'supports' => array( 'title', 'editor', 'excerpt', 'comments', 'page-attributes' ),
        'taxonomies' => array( 'post_tag', 'page-category' ),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,


        'show_in_nav_menus' => true,
        'publicly_queryable' => true,
        'exclude_from_search' => false,
        'has_archive' => true,
        'query_var' => true,
        'can_export' => true,
        'rewrite' => true,
        'capability_type' => 'page'
    );

    register_post_type( 'foto', $args );
}

/* Add custom post-type (videos) (added by Bram Vanroy) */
add_action( 'init', 'register_cpt_video' );

function register_cpt_video() {

    $labels = array( 
        'name' => _x( 'videos', 'video' ),
        'singular_name' => _x( 'video', 'video' ),
        'add_new' => _x( 'Voeg nieuwe video toe', 'video' ),
        'add_new_item' => _x( 'Voeg nieuwe video toe', 'video' ),
        'edit_item' => _x( 'Bewerk video', 'video' ),
        'new_item' => _x( 'Nieuwe video', 'video' ),
        'view_item' => _x( 'Bekijk video', 'video' ),
        'search_items' => _x( 'Zoek video\'s', 'video' ),
        'not_found' => _x( 'Geen video\'s gevonden', 'video' ),
        'not_found_in_trash' => _x( 'Geen video\'s gevonden in de prullenmand', 'video' ),
        'parent_item_colon' => _x( 'Parent video:', 'video' ),
        'menu_name' => _x( 'Video\'s', 'video' ),
    );

    $args = array( 
        'labels' => $labels,
        'hierarchical' => true,
        'description' => 'Dit posttype wordt gebruikt om filmpjes te publiceren',
        'supports' => array( 'title', 'editor', 'excerpt', 'comments', 'page-attributes' ),
        'taxonomies' => array( 'post_tag', 'page-category' ),
        'public' => true,
        'show_ui' => true,
        'show_in_menu' => true,


        'show_in_nav_menus' => true,
        'publicly_queryable' => true,
        'exclude_from_search' => false,
        'has_archive' => true,
        'query_var' => true,
        'can_export' => true,
        'rewrite' => true,
        'capability_type' => 'page'
    );

    register_post_type( 'video', $args );
}

Et je suppose que j'ai besoin de règles de réécriture ici, mais je ne sais pas comment!

4
Bram Vanroy

Je l'ai résolu moi-même (avec l'aide de vous les gars): C'était simple comme tout:

'rewrite' => array(
            'slug' => 'videos',
            'with_front' => false
        ),
0
Bram Vanroy