一つはキャッチがindex.phpのである
https://www.qsleap.com/gmat/resourcesのようなカスタムURLにしたいです。リクエストフィルタがリクエストをキャッチし、 ページを呼び出します。
このコードを読んだことがあります。
function permalinks_customizer_request_before($query){
$uri=$_SERVER['REQUEST_URI'];
$match= preg_match('/(gmat|gre|sat|lsat|cat)(\/resources\/tags\/)
(.*)\/(articles|videos|concept-notes|qna)/', $uri,$matches);
//$match=
preg_match('/(gmat|gre|sat|lsat|cat)/\resources/\tags/stanford-
gsb/\articles|videos|concept-notes)/?$', $uri,$matches);
if($match){
$url = parse_url(get_bloginfo('url'));
$url = isset($url['path']) ? $url['path'] : '';
$request = ltrim(substr($_SERVER['REQUEST_URI'], strlen($url)), '/');
$request = (($pos = strpos($request, '?')) ? substr($request, 0, $pos) : $request);
if (! $request)
return $query;
$original_url="?page_name=tags&exam=".$matches[1]."&post_tag=".$matches[3]."&post_type=".$matches[4];
if ($original_url !== null) {
$original_url = str_replace('//', '/', $original_url);
if (($pos = strpos($_SERVER['REQUEST_URI'], '?')) !== false) {
$queryVars = substr($_SERVER['REQUEST_URI'], $pos + 1);
$original_url .= (strpos($original_url, '?') === false ? '?' : '&') . $queryVars;
}
$oldRequestUri = $_SERVER['REQUEST_URI'];
$oldQueryString = $_SERVER['QUERY_STRING'];
$_SERVER['REQUEST_URI'] = '/' . ltrim($original_url, '/');
$_SERVER['QUERY_STRING'] = (($pos = strpos($original_url, '?')) !== false ? substr($original_url, $pos + 1) : '');
parse_str($_SERVER['QUERY_STRING'], $queryArray);
$oldValues = array();
global $wp;
$wp->parse_request();
$query = $wp->query_vars;
if (is_array($queryArray)) {
foreach ($queryArray as $key => $value) {
$oldValues[$key] = $_REQUEST[$key];
$_REQUEST[$key] = $_GET[$key] = $value;
$query[$key]=$value;
}
}
$_SERVER['REQUEST_URI'] ='';
$_SERVER['QUERY_STRING']='';
}
}
return $query;
}
add_filter('request','permalinks_customizer_request_before',0);
function wp_url_rewrite_templates() {
if (get_query_var('page_name') && get_query_var('page_name'
)=='tags') {
add_filter('template_include', function() {
$template= dirname(__FILE__) . '/page-tags.php';
return $template;
});
}
}
add_action('template_redirect', 'wp_url_rewrite_templates' ,4);
何が問題なのですか?質問はあまり明確ではありません。 –
通常のPHPと同様に、コードのどこにでもリダイレクトを指定することができます – JoshKisb