web-dev-qa-db-ja.com

デフォルト投稿専用のカスタムパーマリンク構造

単一の投稿ページに対してのみURL構造を変更する方法を誰かが知っていますか?

投稿ページに行くと、URLはexample.com/xxx/my-postのようになります。他のすべてのURL(単一の投稿ページを除く)では、URLに "xxx"を含めることはできません。

パーマリンクの設定をカスタマイズすると分類法やカテゴリーの前にもxxxが追加されるので、私が必要としているものではうまくいきません。

基本的に、私はすべての "post"と "events"のURLが構造の中に余分な "xxx"セグメントを含むことを望みます。

5
c10b10

解決策は、Wordpressの直後にデフォルトの投稿タイプを再登録し、書き換えスラッグを追加することです。また、_builtinパラメータを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

新しい投稿タイプを登録することによる潜在的な副作用のない別の方法は、パーマリンクフロントを削除するように書き換え規則を修正することです。

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