WordPress カスタム投稿タイプのパーマリンクを変更する

こちらのサイトが大変参考になりました。
http://morilog.com/wordpress/post_type/post_type_permalink/

例えば
http://example.com/blog/faq/123/
      ↓
http://example.com/faq/123/
にする場合

functions.phpに下記のように記述します。(faqの記述は適宜変更)

add_action( 'init', 'my_post_type' );
function my_post_type() {
  register_post_type(
		'faq',
		array(
			'label' => 'よくある質問',
			'public' => true,
			'has_archive' => true,
			'rewrite' => array('with_front' => false),
		)
	);
}
add_filter( 'post_type_link', 'my_post_type_link', 1, 2 );
function my_post_type_link( $link, $post ){
	if ( 'faq' === $post->post_type ) {
		return home_url( '/faq/' . $post->ID );
	} else {
		return $link;
	}
}

add_filter( 'rewrite_rules_array', 'my_rewrite_rules_array' );
function my_rewrite_rules_array( $rules ) {
	$new_rules = array( 
		'faq/([0-9]+)/?$' => 'index.php?post_type=faq&p=$matches[1]',
	);

	return $new_rules + $rules;
}

このプラグインを合わせて使うと便利
Custom Post Type Permalinks