我在wordpress网址中传递变量时遇到问题。当我将变量和值传递给url时,一切都很好 即。
mysite.com/product-part/?part=1/
但我想要的是变量传递如下:
mysite.com/product-part/1
在php中,将变量传递给url的常规方法是:
mysite.com/?id=1
在wordpress中,上面的内容如下:
mysite.com/1
我如何实现上述目标?
答案 0 :(得分:1)
Rewrite API允许您在WordPress中添加创建自定义重写规则。你可以在" init"中调用add_rewrite_rule()。钩子并给它一个正则表达式来翻译成一个查询字符串。类似的东西:
function setup_rewrite_rules() {
add_rewrite_rule('^store/([0-9A-Za-z]+)/([0-9]+)/?', 'index.php?product_slug=$matches[1]&part=$matches[2]', 'top');
}
add_action('init', 'setup_rewrite_rules');
请注意,该网址与现有产品网址并不完全匹配,因为您需要与此正则表达式匹配的内容。
您可能需要使用template_redirect处理程序来检测何时设置这些变量并显示正常的产品页面,因为您未使用该产品的正常固定链接。< / p>
答案 1 :(得分:0)
这是传递变量的非常非常糟糕的方法。 Wordpress使用&#34;重写&#34;用于确定要运行的查询的规则。这些&#34;永久链接&#34;例如,确定您要发布的帖子。在您的示例中,使用诸如&#34; 1&#34;之类的整数,您可以通过编写重写规则来传递变量,该规则类似于&#34;所有整数都是变量&#34;或者&# 34;所有以整数开头的slu is都是变量&#34;但你很快就会与帖子名称发生冲突。例如,以数字开头的帖子怎么样?此外,许多插件会使用固定链接将您发送到某些页面,并且您可能会在那里发生冲突。最好使用任何这些东西来传递变量:
获取变量
岗位变量
隐藏的帖子变量
会话变量
随机数
Wordpress元数据,如用户元数据