如何将区域标识符附在漂亮的URL上?

时间:2017-01-16 作者:mcv

我希望能够有一个url,其中有一个国家(又名美国=美国或加拿大=ca)定义的地区,我希望url是美丽的。这些都没有将变量附加到url上。

在设计WordPress页面时,有一个slug字段,它基本上是该页面的url。

<<site_url>>/<<slug>>/<<country_code>>
我想在我的主题中的url中添加国家代码,并允许php在没有404的情况下对我的选择进行排序。或者由于规范的URL,ca或us神奇地指向其他页面。(即,如果url以国家/地区代码ca结尾,则网站会重定向到/职业页面,这不是我想要的。)

希望我能提供一个例子,我的网站还没有上线。仍在开发状态下工作。

有没有办法修改*。htaccess是否可以根据我的需要自定义规则?或者有没有其他方法可以解决这个问题?我考虑过国际化,但有人建议更改图像/布局。

Update

使用add_rewrite_rule 如中所述functions.php

<?php
  function custom_rewrite_rule() {
    add_rewrite_rule(\'^([^/]*)/([^/]*)/?\',\'$matches[1].php?country=$matches[2]\',\'top\');
    //student page_id = 95
    add_rewrite_rule(\'^student/([^/]*)/?\',\'index.php?page_id=95&country=$matches[1]\',\'top\');
  }
  add_action(\'init\', \'custom_rewrite_rule\', 10, 0);
?>
如何访问该国?是通过$_GET[\'country\']?

1 个回复
SO网友:mcv

参考此问题,我能够解决此问题:

Need help with add_rewrite_rule

为了简单地显示我在这里所做的更改,在我的主题中functions.php 我添加了以下操作:

add_action(\'init\',\'custom_rewrite_rule\');
function custom_rewrite_rule(){
    add_rewrite_rule(\'^student/([^/]*)/\',\'index.php?pagename=student&country=$matches[1]\',\'top\');
}
这使得我的URL可以是:

但是,在清除永久链接之前,无法识别这种形式的url。要这样做,请访问wp-admin dashboard, 选择Settings->Permalinks 从右侧菜单屏幕,按Save 主屏幕底部的按钮。

现在,上述URL应该可以工作了。

接下来,您要在url中保存额外的var,以供以后使用。在上面的示例中country. 这是通过使用add_filter 在里面functions.php:

add_filter(\'query_vars\',\'country_selection\');
function country_selection($query_vars){
    $query_vars[]=\'country\';
    return $query_vars;
}
最后,您可能希望稍后在页面(即:student.php)中访问此值。为此,请使用以下方法:

$wp_query->get(\'country\');
您可以回送/var\\u转储上述变量,或将其结果存储在另一个变量中以供以后使用。