Dynamic Custom Permalinks

时间:2013-04-06 作者:Adil Abbas

我有一个场景,其目的是创建可以动态更改的自定义永久链接,例如:

如果显示国家信息,则URL应为http://example.com/country-information

如果显示特定国家的城市信息,则URL应如下所示http://example.com/country/city-information.

我怎样才能做到这一点?

2 个回复
SO网友:Griffin

这取决于您所说的“动态更改”是什么意思,但实现您所说内容的最简单方法是使用页面(或分层自定义帖子类型),并将“城市信息”页面转换为与之关联的“国家信息”页面的子页面。然后将permalinks设置为“Post Name”,您将获得您要查找的URL。

SO网友:Tommy Pradana

你试过了吗add_rewrite_rule()? 例如:

add_action( \'init\',  function() {
    add_rewrite_rule( \'country-information/([a-z0-9-]+)[/]?$\', \'index.php?country-information=$matches[1]\', \'top\' );
} );
添加新规则后,必须刷新永久链接,Admin>;Permalinks>;拯救

然后通过添加新的查询变量add_filter, 需要允许使用您自己的参数或您想要公开的任何其他自定义查询变量的自定义重写规则工作。

add_filter( \'query_vars\', function( $query_vars ) {
    $query_vars[] = \'country-information\';
    return $query_vars;
} );
您还可以使用自定义的特定模板来创建永久链接template_include

function conutry_information_template( $template ) {
    if ( get_query_var( \'country-information\' ) === false || get_query_var( \'country-information\' ) == \'\' ) {
        return $template;
    }
 
    return get_template_directory() . \'/country-information.php\';
}
add_action( \'template_include\', \'conutry_information_template\' );

结束

相关推荐

Update page breaks permalinks

从3.3.1开始,我有一个奇怪的副作用。当更新页面(或创建新页面)时,我的所有永久链接都会中断-单击相关更新页面上的查看页面将导致404找不到。这不会发生在帖子中。我担心我的permalinks/%postname%/新模式可能会出现问题,但我将其替换为YEAR/postname,没有发现任何差异。我检查并发现帖子名称字段中有一些重复,我更改或删除了任何可疑的重复。仍然没有变化。这是我的htaccess-# BEGIN WordPress <IfModule mod_rewrite.c>