使用可湿性粉剂重写,但不是“得到它”

时间:2013-12-04 作者:dallen

我正在尝试使用WP Rewrite来避免在htaccess文件中输入任何内容。到目前为止,我的这篇文章运行得很好(它从自定义文章类型加载文章):

$leader_structure = \'performance/leaders/%leader%\';
$wp_rewrite->add_rewrite_tag("%leader%", \'([^/]+)\', "leader=");
$wp_rewrite->add_permastruct(\'leader\', $leader_structure, false);
基本上,如果你去http://domain.com/performance/leaders/some-slug-here, 它将从中正确加载内容http://domain.com?leader=some-slug-here.

然而,当我再次尝试使用非自定义帖子类型(只是普通的WP帖子)时,我无法让它工作。下面是我正在做的:

$scenarios_structure = \'our-thinking/scenarios/%post%\';
$wp_rewrite->add_rewrite_tag("%post%", \'([^/]+)\', "name=");
$wp_rewrite->add_permastruct(\'scenarios\', $scenarios_structure, false);
所以在这里,我想要它http://domain.com/our-thinking/scenarios/some-post-slug 应加载单个WP柱。但它没有。当我转到那个URL时,它会重定向到http://domain.com/some-post-slug.

很可能很明显我对别人做了什么错事,但我就是不明白。我的WordPress永久链接设置设置为“帖子名称”。还有我的。htaccess文件未触及。

1 个回复
最合适的回答,由SO网友:gmazzap 整理而成

您的重写设置很好,但WordPress被重定向到帖子的规范url。这是由WodPress完成的,以防止重复内容的索引错误(当通过两个不同的URL访问相同的内容时)。

您可以防止删除规范重定向筛选器:

add_action(\'wp_loaded\', function() {
  remove_filter(\'template_redirect\', \'redirect_canonical\');
});
然而,这不是一种推荐的方式,事实上,如果你这样做了,你的帖子将可以通过常规url和新创建的url访问。

当您想要更改默认的post-permastruct时,推荐的方法是在WordPress permalink设置中调整permalink结构,因此在您的情况下,permalink结构应该是

our-thinking/scenarios/%postname%
为了防止它影响任何其他自定义帖子类型或自定义分类法,在注册它们时,请使用参数$rewrite 用钥匙\'with_front\' 设置为false, e、 g.:

...
\'rewrite\' => array( \'with_front\' => false )
...

结束

相关推荐

Subpages Permalinks Issues

我的网站看起来像:Page-1 (page.php)。。。Subpage-1 (custom-collection.php; 自定义帖子类型)。。。。。。Filtering Output-Post (custom-collection-single.php)当我使用打开过滤输出帖子时/%postname% 对于permalinks,我得到404错误页。一些代码:custom-collection.php<?php $args = array( \'post_type\' => \'weine\