【问题标题】:Wordpress: Required Multiple Slugs for a single page (Not custom post)Wordpress:单个页面需要多个 Slug(不是自定义帖子)
【发布时间】:2016-11-15 17:16:20
【问题描述】:

我正在创建一个插件。我想在 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/)。

【问题讨论】:

  • 使用重定向插件也会这样做
  • 但我说我不想重定向。我希望多个 url 应该加载一个页面。

标签: wordpress query-variables


【解决方案1】:

已解决


首先我们将添加过滤器来设置查询变量。请记住,每次在数组中添加新变量时,都必须调用 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 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');

【讨论】:

  • 很好的答案,在最新的 Wordpress (5.5) 上仍然可以正常工作!
猜你喜欢
  • 2014-05-30
  • 1970-01-01
  • 2016-07-01
  • 1970-01-01
  • 2015-08-12
  • 2019-09-06
  • 2019-05-08
  • 2013-10-10
  • 2017-08-26
相关资源
最近更新 更多