我正在尝试在 wordpress 上创建一个页面,该页面获取有关用户的特定信息,但是我需要从 URL 获取信息。例如,我想通过从 url 获取用户名来获取“testuser”,例如:
http://www.site.com/book/testuser
我认为这与存档页面的工作方式类似,但似乎找不到执行此操作的代码。
任何帮助,将不胜感激
问候
我正在尝试在 wordpress 上创建一个页面,该页面获取有关用户的特定信息,但是我需要从 URL 获取信息。例如,我想通过从 url 获取用户名来获取“testuser”,例如:
http://www.site.com/book/testuser
我认为这与存档页面的工作方式类似,但似乎找不到执行此操作的代码。
任何帮助,将不胜感激
问候
要从 url 获取信息,您应该了解 WordPress 如何使用 url 重写。如果您使用永久链接,则使用重写 API 来映射 url 结构。
例如,这是用于从作者那里获取所有帖子的 url 的重写规则:
'author/([^/]+)/?$' => 'index.php?author_name=$matches[1]'
第一部分('=>' 的左侧)是一个正则表达式,用于标识 url 的某些部分。第二部分描述了重写规则生成的目标url。为了简单起见,我将为重写规则提供一些示例:
www.example.com/author/johndoe => www.example.com/index.php?author_name=johndoe
www.example.com/author/VC10/ => www.example.com/index.php?author_name=VC10
您应该使用这种重写机制从 url 中检索所需的信息。
假设您要调用一个特定页面并在此调用期间评估用户名,您应该使用类似于此的重写规则:
'^book/([^/]*)/?' => 'index.php?page_id=12&username=$matches[1]'
此规则会将对具有www.example.com/book/USERNAME之类的结构的 url 的所有调用重写到id 为 12 的 WordPress 页面,并将USERNAME作为 GET 参数传递。要添加此规则,请使用以下代码:
function my_add_rewrite_rule() {
add_rewrite_rule(
'^book/([^/]*)/?',
'index.php?page_id=12&username=$matches[1]',
'top'
);
}
add_action( 'init', 'my_add_rewrite_rule' );
添加重写规则后,您必须使用add_rewrite_tag函数让 WordPress 了解新的查询字符串变量。
function my_register_rewrite_tag() {
add_rewrite_tag( '%username%', '([^/]*)');
}
add_action( 'init', 'my_register_rewrite_tag');
现在您可以通过 $wp_query 变量访问用户名,如下所示:
$wp_query->query_vars['film_title']
有关 WordPress 重写的更多信息,您可以阅读本教程。