繁体   English   中英

创建一个 URL 重写规则,该规则创建一个 URL 完成,使用来自 id 参数的一组唯一字符

[英]Creating a URL rewrite rule which creates a URL finishing with a unique set of characters from an id parameter

我正在开发一个 WP 插件,并有一个带有id搜索参数的 WordPress URL:

(例如: http://localhost/testsite1/coder/?id=66 ),

...重写为...

http://localhost/testsite1/coder/66

id是通过对记录的 dB 查询获得的。

如何将id转换为一组唯一的字符...

(例如: 66 -> h6gt!2

...并有一个重写规则,它将创建一个 URL 使得...

http://localhost/testsite1/coder/h6gt!2

...实际上会反映...

http://localhost/testsite1/coder/?id=66

我认为你必须做好两件事:

:: 首先,一个保存帖子的元属性的钩子,例如code并生成 hash 或种子唯一代码,其中 id 是 id 的种子。 你可以使用例如

  hash('crc32', 66, false)

请注意,hash function 从来都不是真正独一无二的。 我可以想出一个简单的随机种子代码生成器,但同样,不确定这是否可以生成双打,因为我认为 PHP 中的随机 function 也不是真正唯一的。 因此,您可能希望在代码中添加一些更独特的内容,例如基于时间的值。 一切都取决于您的代码可以有多长。

  $table = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  $code = "";

  srand(66);
  for ($i = 0; $i < 8; $i++) {
    $code .= mb_substr($table, rand(0, mb_strlen($table) - 1), 1);
  }

:: 其次,使用 id 处理重写的 url 的页面 - 也将使用该代码处理 url - 首先必须检查 id (可能是 id,也可能是代码)是否在 post_meta 表中。 如果是这样,请获取与该代码匹配的帖子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM