让Slug指向同一帖子的不同内容

时间:2017-04-18 作者:kks21199

我在WordPress中有一个带有自定义元框的自定义帖子类型。

因此,我需要一个层次化的帖子,并为每个帖子设置一个自定义模板(Type1或Type2)。

这就是我的鼻涕虫的样子,

http://example.com/taxonomy/type1 - 对于主要职位

http://example.com/taxonomy/type1/type2 - 对于次要职位

问题是类型2页面本质上与类型1相同,只是有一些附加信息。我的客户计划在type1中有许多帖子,这将导致在type2中有更多帖子,这将使管理变得困难。

我可以使用元框将type2帖子所需的所有内容保存在父type1中。我只需要一种方法来将URL指向正确的数据。

所以如果我访问这个URL,http://example.com/taxonomy/type1/type2, 它将打开主post并从元框中加载数据(还必须加载另一个模板文件)。我想通过php完成这项工作,不想加载所有内容并使用javascript在前端对其进行编辑。

更新时间:

对不起,如果我有点困惑的话。我已经有了一个自定义的帖子类型,其中包含一个元框,允许我选择模板(还可以根据模板显示其他元框)。

我的slug已经有了我正在使用的自定义分类法(在创建帖子的参数中使用了%name%作为slug)。

只要我选择了正确的父帖子,我的帖子就能很好地运行。我的问题是,如何使wordpress重定向,而不是将自定义帖子(type2)作为type1帖子的子帖子创建http://example.com/taxonomy/type1/type2 到type1帖子,并在php函数中获取type2的文本,在这里我可以打印页面的模板。

Edit

add_filter(\'query_vars\', \'add_type2_var\', 0, 1);
函数add\\u type2\\u var($vars){$vars[]=“type2”;返回$vars;}

添加重写规则(“/?apk/([^/][em>)/([^/][em>)/(.*)$”,“/wp/apk/$1/$2?类型2=$3”,\'top\');

我已将此代码添加到我的主题中not 修改htaccess。当我使用子帖子url或在末尾添加数字时,type2变量会正确显示。我将自定义帖子类型的Hierarchy设置为false,链接仍然显示404。有没有办法绕过404?我的猜测是,我正在尝试使用single\\u模板过滤器获取url。但我应该在wordpress给出404之前验证一下。

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

根据问题中的新细节:

您可以:

将所有数据放在“type1”帖子中,将“type2”永久链接(example.com/taxonomy/type1/type2/)重定向到:example。com/分类法/类型1/?type=type2(您可以随意创建此查询字符串,但要点是重定向到“type1”permalink的查询字符串版本)。您应该能够将其编码到帖子状态挂钩-每当帖子状态更改为“发布”时,如果帖子类型为“type1”,请从您希望人们键入的URL结构添加一个wp\\U重定向到查询字符串版本

SO网友:joetek

听起来您需要的是一个单独的端点。如果您拥有type1帖子中的所有信息,那么如果有文件夹扩展名,您只需要指向其他模板。

因此,从主url开始:

http://example.com/post-name/
并添加路径作为端点(例如:moreinfo):

http://example.com/post-name/moreinfo/
要做到这一点,您可以使用add_rewrite_endpoint() 作用

add_rewrite_endpoint( \'moreinfo\', EP_PERMALINK );
这基本上实现了WebElaine的建议,而无需重定向,因此您可以向模板中添加:

if( get_query_var( \'moreinfo\', false ) !== false ) {
  // Display additional information
}
希望这有帮助!

相关推荐

如何将Page-{slug}.php这样的页面模板文件移到子目录中?

我想移动页面模板文件,如page-{slug}.php 到我的主题中的子目录,WordPress将自动识别它们。如果所述表单的页面模板在子目录中不存在,那么WordPress应该回到默认的模板加载规则。我如何才能做到这一点?Note-1: This 对于页面模板和this 链接提及template-parts/page, 这不是一回事。Note-2: 我有多个page-{slug}.php 像页面模板文件一样,我想将它们移动到子目录中,以获得更整洁的文件组织。