我想在网页上使用网址重写。我在functions.php中有以下代码
function add_query_vars($aVars) {
$aVars[] = "play";
return $aVars;
}
// hook add_query_vars function into query_vars
add_filter('query_vars', 'add_query_vars');
function add_rewrite_rules($aRules) {
$aNewRules = array('^([^/]*)/([^/]*)/?$' => 'index.php?pagename=$([^/]*)/([^/]*)/&play=$matches[1]');
$aRules = $aNewRules + $aRules;
return $aRules;
}
// hook add_rewrite_rules function into rewrite_rules_array
add_filter('rewrite_rules_array', 'add_rewrite_rules');
这个代码在single.php中,我在我收到的参数中包含一个{custom} .php:
$url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$parts = parse_url($url);
parse_str($parts['query'], $query);
$parametro = $query['play'];
if ($parametro == 'jugar')
{
include( get_template_directory() . '/single-play.php');
}
else if ($parametro == 'full')
{
include( get_template_directory() . '/single-full.php');
}
使用该代码我想重写URL,而不是使用示例../juegos/ddtank/?play=full
我想使用../juegos/ddtank/full/
同样适用于.../juegos/fishao/?play=jugar
我想使用.../juegos/fishao/jugar
每次使用../jugar/
或../full/
加载网址时,我都会收到404错误。
这是Wordpress中的固定链接配置:
http://www.juegoskids.com /juegos/%postname%/
你能帮我解决这个问题吗?
答案 0 :(得分:0)
你的重写规则没有多大意义,因为它匹配" juegos"和%postname%,但是你还试图在重写中进行正则表达式匹配。并且,您需要做的就是使用get_query_var()
获取查询var。无需解析网址。
试试这个:
function add_query_vars($aVars) {
$aVars[] = "play";
return $aVars;
}
$aNewRules = array('^juegos/([^/]*)/([^/]*)/?$' => 'index.php?pagename=$matches[1]&play=$matches[2]');
$parametro = get_query_var('play');
switch ($parametro) {
case 'jugar':
include( get_template_directory() . '/single-play.php');
break;
case 'full':
include( get_template_directory() . '/single-full.php');
break;
}
(我使用了switch / case来保持清洁,但如果你愿意,可以使用if / else块)
此外,请确保在添加或更改重写规则后刷新固定链接。