it-swarm.com.de

Benutzerdefinierte Permalink-Struktur nur für Standardbeiträge

Weiß jemand, wie man die URL-Struktur nur für die einzelne Beitragsseite ändert?

Wenn ich zu einer Post-Seite gehe, sollte die URL so aussehen: example.com/xxx/my-post. Alle anderen URLs (mit Ausnahme der einzelnen Postseiten) sollten kein "xxx" in der URL enthalten.

Das Anpassen der Permalink-Einstellungen würde auch xxx vor Taxonomien und Kategorien hinzufügen, sodass das für das, was ich benötige, nicht funktioniert.

Im Wesentlichen möchte ich, dass alle "post" - und "events" -URLs ein zusätzliches "xxx" -Segment in der Struktur enthalten.

5
c10b10

Die Lösung besteht darin, den Standardbeitragstyp direkt nach Wordpress neu zu registrieren und einen Überschreibungsfehler hinzuzufügen. Außerdem muss der Parameter _builtin auf false gesetzt werden.

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

Eine andere Methode ohne die möglichen Nebenwirkungen der Registrierung eines neuen Post-Typs besteht darin, die Umschreiberegeln zu ändern, um die Permalink-Front zu entfernen.

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