我遇到了Wordpress网站子页面上的单页应用重定向规则的问题。我直接遵循了这套说明,但仍然遇到问题:https://wordpress.stackexchange.com/questions/193479/redirect-sub-pages-to-parent-without-changing-url
子页面是商家位置的自定义帖子类型。如果有人访问http://business.com/hollywood-ca/contact
,则应该提取http://business.com/hollywood-ca/
,但网址必须保持不变(网址的联系部分是每个位置页面上单页Vue.js应用的一部分,因此它需要坚持下去。这是我的代码:
//This function hooks in on post save
function add_location_deep_links( $post_id, $post, $update ) {
$post_type = get_post_type($post_id);
if ( "location" != $post_type ) return; // If this isn't a 'location' post, don't update it.
$slug = $post->post_name; //hollywood-ca
add_rewrite_rule(
"^{$slug}/[A-Za-z]", //regex prevents trying to redirect the /hollywood-ca/ page
"index.php?page_id={$post_id}", //redirect to post
'top' // take precedence over other redirects
);
flush_rewrite_rules();
}
问题是当我访问http://business.com/hollywood-ca/contact
页面重定向到http://business.com/hollywood-ca/
时,这会阻止我的单页应用导航到联系人标签。
如果有帮助,我还编写了一些功能,可以将我的网址从business.com/location/hollywood-ca
更改为清除business.com/hollywood-ca
。我已经在没有这些功能的情况下测试了这些问题,但仍然存在问题,因此我认为它们并不相关。
答案 0 :(得分:1)
我在Wordpress Exchange上得到了答案。我需要使用我的自定义帖子类型的自定义查询变量来查询index.php
,而不是page_id
:
add_rewrite_rule(
"^{$slug}/",
"index.php?location={$slug}", //changed query var to location
'top'
);