[英]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.