it-swarm-eu.dev

Vlastní struktura permalink pouze pro výchozí příspěvky

Ví někdo, jak změnit url strukturu pouze pro jednu stránku post?

Když jdu na stránku příspěvku, adresa URL by měla vypadat takto: example.com/xxx/my-post. Všechny ostatní adresy URL (s výjimkou stránek s jediným příspěvkem) by neměly do adresy URL obsahovat výraz „xxx“.

Přizpůsobení nastavení permalink by přidalo xxx před taxonomie a kategorie, takže by to nefungovalo pro to, co potřebuji.

V podstatě chci, aby všechny "post" a "události" url obsahovaly navíc "xxx" segment ve struktuře.

5
c10b10

Řešením je opětovné zaregistrování výchozího typu příspěvku těsně po Wordpressu a přidání přepisu. Parametr _builtin také musí být nastaven na hodnotu 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

Další metodou bez potenciálních vedlejších účinků registrace nového typu příspěvku je úprava pravidel pro přepsání, aby se odstranila přední strana permalink.

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