質問: preg_replace("/^(.*?)\//", "", $requested_path); // do something here to make it read $new_requested_path } } add_filter("parse_request", "check_section_page"); これは関数を正しく実行し、$ new_requested_pathをエコーアウトすると、新しい必要なページがあることがわかります。私は約2時間これと戦ってきました、そして私の頭は中でやりました。助けて?
回答: 私は問題を解決することができた。他の誰かがこのソリューションを必要とする場合に備えて、これを行う方法は次のとおりです。** 3月10日午前3時30分東部標準時間**に更新私がここで持っていた前の関数はページを正しく表示していました、しかし404エラーコードを返していました。悪いコードの例を404を返さない実用的なものに置き換えました。function check_section_page( $posts ) { if (is_admin()) { return $posts; } global $wp, $wp_query; $requested_path = $wp->request; if ( $requested_path == "" ) { return $posts; } preg_match("/^([a-z\-]+)\//", $requested_path, $matches); if ( count($matches) > 1 ) { if ( get_page_by_path( $matches[1] ) ) { $section = $matches[1]; } } $wp_query->set("saleslink_section", $section); $this_page = get_page_by_path( $requested_path ); $new_requested_path = preg_replace("/^(.*?)\//", "", $requested_path); $requested_page = get_page_by_path($new_requested_path); if ( $requested_page->id and ! $this_page->id ) { $posts = null; $posts[] = $requested_page; $wp_query->is_page = true; $wp_query->is_singular = true; $wp_query->is_home = false; $wp_query->is_archive = false; $wp_query->is_category = false; unset($wp_query->query["error"]); $wp_query->query_vars["error"]=""; $wp_query->is_404=false; } return $posts; } remove_filter('template_redirect','redirect_canonical'); add_filter("the_posts", "check_section_page"); remove_filter行は、要求されたurlが存在せず、類似したurlが存在し、類似したurlにリダイレクトするときに、wordpressの自動url推測リダイレクト動作をオフにします。