返信先: 商品のパーマリンク設定について

ホーム フォーラム 使い方全般 商品のパーマリンク設定について 返信先: 商品のパーマリンク設定について

#75429

Mizuho Ogino
参加者

「Custom Post Type Permalinks」ダメでしたか^^;
記憶違いですね、失礼いたしました。

残った手としては、投稿タイプ「post」をカスタム投稿タイプとして再度レジストしてrewrite設定をするという手があります。「register_post_type」をfunctions.phpに追加します。

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' => 'myslug' ),
        'query_var' => false,
        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'post-formats' ),
    ) );
}

これで 「example.com/myslug/投稿スラッグ」というパーマリンクになります。しかしカスタム投稿と同じく既存のパーマリンク設定が効かないはず。ですので、上記設定後、改めてregister_post_typeした後で「Custom Post Type Permalinks」をインストールする、という手もあると思います(未検証です)。あと、「post」のパーマリンクだけを変えたいなら、以下をfunctions.phpに記述するだけでいけるのではないかと思います。


add_filter('post_type_link', 'my_new_default_post_type_link', 1, 3);
function my_new_default_post_type_link( $post_link, $post = 0, $leavename = false ) {
    if ($post->post_type == 'post') return home_url( 'myslug/' . $post->ID );
    else return $post_link;
}

add_action( 'init', 'my_new_default_rewrites_init' );
function my_new_default_rewrites_init(){
    add_rewrite_rule( 'myslug/([0-9]+)?$', 'index.php?post_type=post&p=$matches[1]', 'top' );
}

以上、welcart込みで検証していませんので、動作は保証し兼ねます^^;