在带有url变量的wordpress页面上设置自定义permalink,得到带有变量集的404



我在stackoverflow上尝试了很多相同问题的答案,但我无法使其发挥作用。

我将使用permalink/profile/user制作一个自定义的配置文件插件。到目前为止,我已经制作了一个名为"profile"的页面,并为我的插件添加了一个快捷代码,该插件目前只是从url中打印用户名。如果我访问website.com/profile?username=test而不更改functions.php它将加载插件并显示用户名。

当我试图将其重写为永久链接时,它会给我一个404错误,但我可以访问$wp->query_vars["username"],所以至少可以。这是我在functions.php中使用的代码。

add_filter('rewrite_rules_array','mycode_add_rewrite_rules');
function mycode_add_rewrite_rules($rules){
$newrules = array();
$newrules['profile/([^/]+)/?'] = 'index.php?pagename=profile&username=$matches[1]';
return $newrules + $rules;
}
add_filter('query_vars','mycode_add_rewrite_query_vars');
function mycode_add_rewrite_query_vars($vars){
array_push($vars, 'username');
return $vars;
}

在阅读了更多关于它的内容后,我还尝试在配置文件上添加一个add_rewrite_endpoint

add_action('init', 'mycode_add_endpoints');
function mycode_add_endpoints()
{
add_rewrite_endpoint('profile', EP_PAGES);
}

我还尝试了username上的端点,但没有成功。每次换衣服时,我都会刷新永久链接。

值得注意的是,在将代码添加到functions.php之后,permalink和普通url都会给出404。

我错过了什么?

我最终使用了本指南:https://codex.wordpress.org/Rewrite_API/add_rewrite_rule#Using_Custom_Templates_with_custom_querystring

然而,它仍然不起作用,然后我把"用户名"改成了另一个名字,它起作用了。我不知道这是否适用于我的原始代码,但我想会的。这是我最终得到的代码:

function custom_rewrite_tag() {
add_rewrite_tag('%unique_username%', '([^&]+)');
}
add_action('init', 'custom_rewrite_tag', 10, 0);

function custom_rewrite_rule() {
add_rewrite_rule('^profile/([^/]*)/?','index.php?page_id=2634&unique_username=$matches[1]','top');
}
add_action('init', 'custom_rewrite_rule', 10, 0);

相关内容

  • 没有找到相关文章

最新更新