Mizuho Ogino さん
こんな感じで、URLを分けることはできました。新規登録や更新もできています。
ただ、やはりビルトインのpostを上書きしている事、パーマリンク設定が無視される事など考えると、個別の環境での検証が必要になってくるかと思います。
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’ ),
));
}
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’ && $post->post_mime_type == ‘item’ ){
$post_link = home_url( ‘myslug/’ . $post->ID );
}else{
$post_link = home_url( ‘/’ . $post->ID );
}
return $post_link;
}
add_action( ‘init’, ‘my_new_default_rewrites_init’ );
function my_new_default_rewrites_init($aa){
add_rewrite_rule( ‘myslug/([0-9]+)?$’, ‘index.php?post_type=post&p=$matches[1]’, ‘top’ );
add_rewrite_rule( ‘([0-9]+)?$’, ‘index.php?post_type=post&p=$matches[1]’, ‘top’ );
}
※このコードを有効にするには、WordPress の 管理画面から、「設定」->「パーマリンク設定」を選択し、何も変更せずに「変更を保存」をクリックする必要があります。
※CSV一括登録の検証は行っていません。