URL構造を親・子・孫にする
【01】 カスタム投稿タイプの登録 /タクソノミー登録 の後に、functions.phpに以下を記述
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function vk_query_vars($qvars){ if(is_admin()) return $qvars; $custom_taxonomy = '【カスタムタクソノミー名】'; //カスタムタクソノミー名 if(array_key_exists($custom_taxonomy, $qvars)){ $custom_post_type = '【カスタム投稿タイプ名】'; //カスタム投稿タイプ名 $pathParts = explode('/', $qvars[$custom_taxonomy]); $numParts = sizeof($pathParts); $lastPart = array_pop($pathParts); $post = get_page_by_path($lastPart, OBJECT, $custom_post_type); if( $post && !is_wp_error($post) ){ $qvars['p'] = $post->ID; $qvars['post_type'] = $custom_post_type; } } return $qvars; } add_filter('request', 'vk_query_vars'); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | add_action( 'generate_rewrite_rules', 'register_【カスタム投稿タイプ名】_rewrite_rules' ); function register_【カスタム投稿タイプ名】_rewrite_rules( $wp_rewrite ) { $new_rules = array( ///【カスタム投稿タイプ名】直下 '【カスタム投稿タイプ名】/([^/]+)/?$' => 'index.php?post_type=【カスタム投稿タイプ名】&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(1) , '【カスタム投稿タイプ名】/page/(\d{1,})/?$' => 'index.php?post_type=【カスタム投稿タイプ名】&paged=' . $wp_rewrite->preg_index(1), //親 '【カスタム投稿タイプ名】/([^/]+)/([^/]+)/?$' => 'index.php?post_type=【カスタム投稿タイプ名】&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(1) . '&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(2) , '【カスタム投稿タイプ名】/([^/]+)/page/(\d{1,})/?$' => 'index.php?post_type=【カスタム投稿タイプ名】&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(1). '&paged=' . $wp_rewrite->preg_index(2), //子 '【カスタム投稿タイプ名】/([^/]+)/([^/]+)/page/(\d{1,})/?$' => 'index.php?post_type=【カスタム投稿タイプ名】&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(1) .'&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(2) . '&paged=' . $wp_rewrite->preg_index(3), '【カスタム投稿タイプ名】/([^/]+)/([^/]+)/([^/]+)/?$' => 'index.php?post_type=【カスタム投稿タイプ名】&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(1) .'&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(2) .'&【カスタムタクソノミー名】='.$wp_rewrite->preg_index(3) , //孫 '【カスタム投稿タイプ名】/([^/]+)/([^/]+)/([^/]+)/?$' => 'index.php?post_type=【カスタム投稿タイプ名】&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(1) . '&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(2). '&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(3), '【カスタム投稿タイプ名】/([^/]+)/([^/]+)/([^/]+)/page/(\d{1,})/?$' => 'index.php?post_type=【カスタム投稿タイプ名】&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(1) .'&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(2) .'&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(3) . '&paged=' . $wp_rewrite->preg_index(4), '【カスタム投稿タイプ名】/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$' => 'index.php?post_type=【カスタム投稿タイプ名】&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(1) .'&【カスタムタクソノミー名】=' . $wp_rewrite->preg_index(2) .'&【カスタムタクソノミー名】='.$wp_rewrite->preg_index(3) . '&【カスタムタクソノミー名】=' .$wp_rewrite->preg_index(4), //以下、階層の深さに合わせて、子・孫を参考に、$wp_rewrite->preg_index(n)を増やす ); $wp_rewrite->rules = $new_rules + $wp_rewrite->rules; } |