Update: 我了解到,当自定义重写规则用于子/父页面/帖子时,可能会重写自定义重写规则并删除任何参数变量。我的自定义重写规则的目的不是子/父项,而是自定义帖子类型的一部分。这是否会导致类似的重写问题(删除的参数变量)?
Update 2 (Problem Solved): 正如上面的更新中所提到的,它涉及到自定义post类型post的重写规则,这确实是导致问题的原因。请参见my anwer 对于解决方案。
My question
当使用下面的代码时,实际的post重写似乎是可行的,因为它正确地引导到ID为的post
160
. 即使使用一个漂亮的参数URL,它也能做到这一点。但一旦漂亮的参数URL被重定向到ID为160的帖子,所有参数值都会消失。
在使用漂亮的参数URL时,如何让WP不删除自定义参数?
所以URL如下:
site.com/post/parameter-value/
应重定向(至ID为160的帖子)如下:
site.com/custom-post-type-slug/post-title-of-160/parameter-value/
(未删除参数值)
The code I\'m using
function add_custom_query_vars($vars) {
$vars[] = \'member_view\';
return $vars;
}
add_filter(\'query_vars\', \'add_custom_query_vars\');
function add_rewrite_rules($rules) {
$newrules = array(\'page/([^/]+)/?$\' => \'index.php?page_id=158&member_view=$matches[1]\',
\'post/([^/]+)/?$\' => \'index.php?p=160&member_view=$matches[1]\');
$rules = $newrules + $rules;
return $rules;
}
add_filter(\'rewrite_rules_array\', \'add_rewrite_rules\');
The details
我使用上面的代码将URL重写为漂亮的URL,并以漂亮的自定义参数值结束。以下是有效和无效的内容:
For Pages (this works)
页面的重写规则有效。URL,如:
site.com/page/parameter-value/
重定向(到ID为158的页面)如下所示:
site.com/page-title-of-158/parameter-value/
和
get_query_var(\'member_view\')
退货
parameter-value
.
For Posts (using non-pretty URL) (this works)
对于帖子,只有在使用“非漂亮”URL时,参数才会保持不变:
site.com/?p=160&member_view=parameter-value
或:
site.com/custom-post-type-slug/post-title-of-160/?member_view=parameter-value
两者都重定向(到ID为160的帖子),如下所示:
site.com/custom-post-type-slug/post-title-of-160/?member_view=parameter-value
以及
member_view
可以检索值。
For Posts (using pretty URL) (this does not work)
使用漂亮的参数URL时,自定义参数会在
canonical.php
重定向过程已完成。因此,URL如下所示:
site.com/post/parameter-value/
重定向(到ID为160的帖子)如下:
site.com/custom-post-type-slug/post-title-of-160/
(参数值消失)
两者都有get_query_var(\'member_view\')
和$_GET[\'member_view\']
不返回任何内容。