在子分类页面永久链接中包含父分类
Include parent taxonomy in child taxonomy page permalink
老实说,我很迷茫,可以使用一些指导来结束我一直在做的项目
我有一个单一的层次分类法,县,我正在使用我的两个自定义 post 类型,平面图和现成的。
我正在尝试设置指向将显示为的自定义分类法页面的永久链接:
{post-type}/{parent-tax}/{child-tax}
现在,您可以导航至 or,因此 floorplans/{parent-tax} 和 floorplans/{child-tax} 将指向相同的县-taxonomy.php 模板。您可以对现成/{parent-tax} 和现成/{child-tax} 执行相同的操作。
但是,如果您直接浏览分类并导航到子分类,url 将显示为县/{parent-tax}/{child-tax}。
我想不通的是,当您按自定义 post 类型库导航时,如何将父分类法附加到子分类法永久链接。 floorplans/{parent-tax}/{child-tax} 和 ready-made/{parent-tax}/{child-tax} 是 404。
我需要写重写规则吗?我有点不知道该怎么做。为了让我的父分类和子分类显示在 post 类型的永久链接中,我紧跟其后,但最后一个难题是能够导航到特定的子分类页面每个 post 类型,并在 url.
中包含父分类
我的重写规则现在看起来与我链接的指南几乎相同,
add_filter('rewrite_rules_array', 'mmp_rewrite_rules');
function mmp_rewrite_rules($rules)
{
$newRules = array();
$newRules['floorplan/(.+)/(.+)/?$'] = 'index.php?floorplan=$matches[2]'; // my custom structure will always have the post name as the 5th uri segment
$newRules['ready-made/(.+)/(.+)/?$'] = 'index.php?ready_made=$matches[2]'; // my custom structure will always have the post name as the 5th uri segment
$newRules['floorplan/(.+)/(.+)/'] = 'index.php?county=$matches[1]'; // my custom structure will always have the post name as the 5th uri segment
$newRules['ready-made/(.+)/(.+)/'] = 'index.php?county=$matches[1]'; // my custom structure will always have the post name as the 5th uri segment
$newRules['floorplan/(.+)/?$'] = 'index.php?county=$matches[1]';
$newRules['ready-made/(.+)/?$'] = 'index.php?county=$matches[1]';
return array_merge($newRules, $rules);
}
我添加了这两个中间值,认为这将以 parent-tax/child-tax 的永久链接结构为目标,后面没有任何尾随,但我不确定如何从那里拼凑起来。任何提示将不胜感激!
回答我自己的问题,
为了达到预期的效果,这里是最后的重写函数:
add_filter('rewrite_rules_array', 'mmp_rewrite_rules');
function mmp_rewrite_rules($rules)
{
$newRules = array();
$newRules['floorplan/(.+)/(.+)/(.+)/?$'] = 'index.php?floorplan=$matches[3]';
$newRules['ready-made/(.+)/(.+)/(.+)/?$'] = 'index.php?ready_made=$matches[3]';
$newRules['floorplan/(.+)/(.+)/?$'] = 'index.php?county=$matches[2]';
$newRules['ready-made/(.+)/(.+)/?$'] = 'index.php?county=$matches[2]';
$newRules['floorplan/(.+)/?$'] = 'index.php?county=$matches[1]';
$newRules['ready-made/(.+)/?$'] = 'index.php?county=$matches[1]';
return array_merge($newRules, $rules);
}
我从其他 Whosebug 答案中拼凑了这个,但据我所知,这些重写基本上是在说:
对于给定的 url,显示 post-type/taxonomy-type/etc,其中 matches[x]
是您要显示的内容的实际页面标题。
老实说,我很迷茫,可以使用一些指导来结束我一直在做的项目
我有一个单一的层次分类法,县,我正在使用我的两个自定义 post 类型,平面图和现成的。
我正在尝试设置指向将显示为的自定义分类法页面的永久链接:
{post-type}/{parent-tax}/{child-tax}
现在,您可以导航至 or,因此 floorplans/{parent-tax} 和 floorplans/{child-tax} 将指向相同的县-taxonomy.php 模板。您可以对现成/{parent-tax} 和现成/{child-tax} 执行相同的操作。
但是,如果您直接浏览分类并导航到子分类,url 将显示为县/{parent-tax}/{child-tax}。
我想不通的是,当您按自定义 post 类型库导航时,如何将父分类法附加到子分类法永久链接。 floorplans/{parent-tax}/{child-tax} 和 ready-made/{parent-tax}/{child-tax} 是 404。
我需要写重写规则吗?我有点不知道该怎么做。为了让我的父分类和子分类显示在 post 类型的永久链接中,我紧跟其后,但最后一个难题是能够导航到特定的子分类页面每个 post 类型,并在 url.
中包含父分类我的重写规则现在看起来与我链接的指南几乎相同,
add_filter('rewrite_rules_array', 'mmp_rewrite_rules');
function mmp_rewrite_rules($rules)
{
$newRules = array();
$newRules['floorplan/(.+)/(.+)/?$'] = 'index.php?floorplan=$matches[2]'; // my custom structure will always have the post name as the 5th uri segment
$newRules['ready-made/(.+)/(.+)/?$'] = 'index.php?ready_made=$matches[2]'; // my custom structure will always have the post name as the 5th uri segment
$newRules['floorplan/(.+)/(.+)/'] = 'index.php?county=$matches[1]'; // my custom structure will always have the post name as the 5th uri segment
$newRules['ready-made/(.+)/(.+)/'] = 'index.php?county=$matches[1]'; // my custom structure will always have the post name as the 5th uri segment
$newRules['floorplan/(.+)/?$'] = 'index.php?county=$matches[1]';
$newRules['ready-made/(.+)/?$'] = 'index.php?county=$matches[1]';
return array_merge($newRules, $rules);
}
我添加了这两个中间值,认为这将以 parent-tax/child-tax 的永久链接结构为目标,后面没有任何尾随,但我不确定如何从那里拼凑起来。任何提示将不胜感激!
回答我自己的问题,
为了达到预期的效果,这里是最后的重写函数:
add_filter('rewrite_rules_array', 'mmp_rewrite_rules');
function mmp_rewrite_rules($rules)
{
$newRules = array();
$newRules['floorplan/(.+)/(.+)/(.+)/?$'] = 'index.php?floorplan=$matches[3]';
$newRules['ready-made/(.+)/(.+)/(.+)/?$'] = 'index.php?ready_made=$matches[3]';
$newRules['floorplan/(.+)/(.+)/?$'] = 'index.php?county=$matches[2]';
$newRules['ready-made/(.+)/(.+)/?$'] = 'index.php?county=$matches[2]';
$newRules['floorplan/(.+)/?$'] = 'index.php?county=$matches[1]';
$newRules['ready-made/(.+)/?$'] = 'index.php?county=$matches[1]';
return array_merge($newRules, $rules);
}
我从其他 Whosebug 答案中拼凑了这个,但据我所知,这些重写基本上是在说:
对于给定的 url,显示 post-type/taxonomy-type/etc,其中 matches[x]
是您要显示的内容的实际页面标题。