0

我正在尝试在 wordpress 上创建一个页面,该页面获取有关用户的特定信息,但是我需要从 URL 获取信息。例如,我想通过从 url 获取用户名来获取“testuser”,例如:

http://www.site.com/book/testuser

我认为这与存档页面的工作方式类似,但似乎找不到执行此操作的代码。

任何帮助,将不胜感激

问候

4

1 回答 1

0

介绍

要从 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 重写的更多信息,您可以阅读本教程

于 2013-12-15T16:51:43.133 回答