使用 PHP 字符串提取数据时在 URL 中创建一个 slug

Creating a slug in the URL when using PHP String to pull data

对于大多数 PHP 编码人员来说,这可能是一件简单的事情,但是,我以前从来没有这样做过。我正在使用带有页面模板的 Wordpress 网站。在此页面上是我创建的用于通过 User_id 查询结果的页面,然后显示用户个人资料信息。我想要实现的目标如下:

第 1 页 律师目录 > 从数据库中提取了多名律师

行动: 单击 Link (示例 Link:http://example.com/lawyer-profile?user_id=9) *数字9是动态数字

第 2 页 律师简介 > 有律师简介信息

问题 我该如何更改 URL http://example.com/lawyer-profile?user_id=9

http://example.com/lawyer-profile/john-doe/

但仍然使用 User_id?

拉取数据

如有任何帮助,我们将不胜感激!


更新: 我在 wordpress 的网站上找到了这个,我修改了它以反映我需要它做什么,但它不起作用。它重定向到 page_id 189 的律师目录页面,但仍显示 URL 中的查询字符串。

这是我正在使用的 url: http://example.com/index.php?page_id=189&userid=195&fullname=jack-bowers

它应该是这样的: http://example.com/lawyer-directory/jack-bowers/

有什么建议吗?

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

 function custom_rewrite_rule() {
     add_rewrite_rule('^lawyer-directory/([^/]*)/([^/]*)/?','index.php?page_id=189&userid=$matches[1]&fullname=$matches[2]','top');
 }
 add_action('init', 'custom_rewrite_rule', 10, 0);

如果您使用的是 Wordpress,请查看 add_rewrite_rule()。与 add_rewrite_tag 一起,这将使您能够处理该问题。

您可以为 user_id 定义一个重写标记,以及一个重写规则以将您的模式映射到处理它的单个页面。然后,您可以使用 query_vars 获取值,例如

$wp_query->query_vars['user_id']

所以这会 return 例如。约翰·多伊。在您的数据库中,您将拥有律师永久链接的索引,然后您可以查找该索引以找到他们的 id/record.

起初有点混乱,但上面链接的文档中有一个不错的例子。