一个页面需要多个Slugs(不是自定义帖子)



我正在创建一个插件。我想在URL中传递参数,或者你可以说我想要多个URL用于同一页面(但这会加载相同的页面而不是重定向)。例如:http://www.ijmsbr.boxysolutions.com/publications-of-ijmsbr/?data=2016-11我希望URL在这个结构中http://www.ijmsbr.boxysolutions.com/publications-of-ijmsbr/2016-11/

这些将是多个链接,如

  • publications-of-ijmsbr/2016 - 11/
  • publications-of-ijmsbr/2016 - 12/
  • publications-of-ijmsbr/2017 - 01/

但是所有的链接都应该加载这个页面publications-of-ijmsbr/

http://www.ijmsbr.boxysolutions.com/publications-of-ijmsbr/

这是我的定制页面。我想在我的页面上得到这些参数(/2016-11/,/2016-12/)

已解决


首先,我们将添加过滤器来设置查询变量。记住,每次在数组中添加新变量时都必须调用flush_rewrite_rules()。一旦你运行flush_rewrite_rule函数之后,你可以注释或删除这一行。

function themeslug_query_vars( $qvars ) {
$qvars[] = 'jm_volume';
$qvars[] = 'jm_art_id';
$qvars[] = 'jm_author';
//flush_rewrite_rules();
return $qvars;
}
add_filter( 'query_vars', 'themeslug_query_vars' , 10, 1 );

注册查询变量后,我们可以添加add_rewrite_rules并像这样分配给我们的URL。记得调用flush_rewrite_rules() function

function add_rewrite_rules($aRules) {
$aNewRules = array(
    'publications-of-ijmsbr/article/(.*)?' => 'index.php?pagename=publications-of-ijmsbr&jm_art_id=$matches[1]',
    'publications-of-ijmsbr/author/(.*)?' => 'index.php?pagename=publications-of-ijmsbr&jm_author=$matches[1]',
    'publications-of-ijmsbr/(.*)?' => 'index.php?pagename=publications-of-ijmsbr&jm_volume=$matches[1]'
);
$aRules = $aNewRules + $aRules;
//flush_rewrite_rules();
return $aRules;
}
add_filter('rewrite_rules_array', 'add_rewrite_rules');

最新更新