我最近将父类别及其子类别从默认类别分类法移动到了新的自定义分类法。在新的公司分类法中,数据移动得很好,帖子与公司名称正确关联。
Before
<分类法:类别术语:公司子术语:MozillaAfter
<分类法:公司术语:Mozilla我遇到的问题是,当我使用the_terms
is按如下方式构建url:http://example.com/company//mozilla
我最近将父类别及其子类别从默认类别分类法移动到了新的自定义分类法。在新的公司分类法中,数据移动得很好,帖子与公司名称正确关联。
Before
<分类法:类别术语:公司子术语:MozillaAfter
<分类法:公司术语:Mozilla我遇到的问题是,当我使用the_terms
is按如下方式构建url:http://example.com/company//mozilla
First Assumption: That an extra slash was being added for some reason
要查看发生了什么,我想查看阵列中发生了什么。当我print_r()
我得到的阵列如下: Array (
[10] => stdClass Object (
[term_id] => 10
[name] => Mozilla
[slug] => mozilla
[term_group] => 0
[term_taxonomy_id] => 11
[taxonomy] => company
[description] =>
[parent] => 504
[count] => 8
[object_id] => 37085
[filter] => raw
)
)
直到我注意到[parent] => 504
值,我知道当术语从类别分类法转移到公司分类法时,它被转移了(当时我认为这无关紧要)。这些新知识帮助我得出了一个新的假设。
Second & Correct Assumption: That there was something missing between the two slashes.
我的新想法是url中缺少不存在的父项,而不是将第二个斜杠视为额外的:前面:示例。com/category/company/mozilla之后:示例。com/company/(缺少父项)/mozilla为了测试这是否是问题所在,我更改了数据库值[parent] => 504
到[parent] => 0
要删除任何父关联并按预期工作以创建正确的url,请执行以下操作:
http://example.com/company/mozilla
如果没有其他人会搜索相同的。要解决此问题,请检查register\\u taxonomy()重写语法。不应该有尾部斜杠。请注意下面的代码示例中的“/产品类别”不带结尾斜杠:
register_taxonomy(
\'product-category\',
array(\'product\', \'post\'), array(
\'label\' => __(\'Product Categories\'),
\'rewrite\' => array(\'slug\' => \'/product-category\'),
\'hierarchical\' => true,
\'show_admin_column\' => true,
)
);
我有以下表格(为了简洁明了,仅包含相关信息)表名称:wp\\U term\\U关系object_id term_taxonomy_id 1266 1341 1266 452 1266 449 表格名称:wp\\U term\\U taxonomyterm_taxonomy_id term_id 1341 1342 452 453