将WordPress URL重定向到父页面而不更改URL

时间:2016-10-14 18:36:23

标签: wordpress redirect url-rewriting single-page-application vue.js

我遇到了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。我已经在没有这些功能的情况下测试了这些问题,但仍然存在问题,因此我认为它们并不相关。

1 个答案:

答案 0 :(得分:1)

我在Wordpress Exchange上得到了答案。我需要使用我的自定义帖子类型的自定义查询变量来查询index.php,而不是page_id

add_rewrite_rule(
    "^{$slug}/",  
    "index.php?location={$slug}", //changed query var to location
    'top'
);