web-dev-qa-db-fra.com

Structure permalien personnalisée uniquement pour les publications par défaut

Quelqu'un sait-il comment modifier la structure de l'URL uniquement pour la page d'un article?

Lorsque je vais sur une page de publication, l'URL devrait ressembler à ceci: exemple.com/xxx/mon-post. Toutes les autres URL (à l'exception des pages de publication uniques) ne doivent pas contenir "xxx" dans l'URL.

La personnalisation des paramètres de permalien ajouterait xxx devant les taxonomies et les catégories, de sorte que cela ne fonctionnerait pas pour ce dont j'avais besoin.

Essentiellement, je veux que toutes les URL "post" et "events" contiennent un segment "xxx" supplémentaire dans la structure.

5
c10b10

La solution consiste à réenregistrer le type de message par défaut juste après Wordpress et à ajouter un slug de réécriture. De plus, le paramètre _builtin doit être défini sur false.

add_action( 'init', 'my_new_default_post_type', 1 );
function my_new_default_post_type() {

    register_post_type( 'post', array(
        'labels' => array(
            'name_admin_bar' => _x( 'Post', 'add new on admin bar' ),
        ),
        'public'  => true,
        '_builtin' => false, 
        '_edit_link' => 'post.php?post=%d', 
        'capability_type' => 'post',
        'map_meta_cap' => true,
        'hierarchical' => false,
        'rewrite' => array( 'slug' => 'post' ),
        'query_var' => false,
        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
    ) );
}
3
c10b10

Une autre méthode, sans les effets secondaires potentiels de l’enregistrement d’un nouveau type de publication, consiste à modifier les règles de réécriture pour supprimer le front permalien.

function wpa37911_permastructs(){
    global $wp_rewrite;
    $wp_rewrite->extra_permastructs['category']['struct'] = '/category/%category%';
    $wp_rewrite->extra_permastructs['post_tag']['struct'] = '/tag/%post_tag%';
}
add_action( 'init', 'wpa37911_permastructs' );
2
Milo