自定义分类法不能具有与类别相同的术语(插件)吗?

时间:2013-10-25 作者:its_me

我知道在类别和标记下不可能有相同的术语(术语slug),但令人惊讶的是,正如我今天意识到的那样,自定义分类法也是如此。

例如,如果我的站点有一个名为Linux (linux) 我还想创建一个名为“Linux”的自定义分类术语,它看起来像Linux (linux-2), i、 e.鼻涕虫必须不同。

如果我想把这个鼻涕虫重新命名为linux, 我得到一个错误,“slug‘linux’已经被另一个术语使用了”。

是否可以在类别/标记和自定义分类下使用相同的术语(而不会造成严重破坏)?

<小时>

How to replicate the issue?

<创建3-5个新帖子。创建一个新的类别和标签,并将其分配给这些帖子(仅用于测试目的)。

保存永久链接设置。

在自定义分类法下创建两个与先前创建的类别和标记具有相同名称和slug的新术语,并将它们分配给自定义帖子类型下的新帖子。

删除自定义分类法。

尝试重新创建它们,现在会出现错误:“slug‘XXX’已被另一个术语使用。”

有时这会复制问题,有时则不会。

But...

如果您能够使用相同的名称和slug创建类别(或标记)和自定义分类法,请执行此操作。然后,重命名其中一个,您会注意到类别(或标记)和自定义分类都被重命名了!

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

事实证明,这是一个核心缺陷。我正要报告它,但发现它已经存在了好几年了,并且也适用于自定义分类法。参见门票:#5809, #21950#22023.

如果一切按计划进行,则设置为固定在3.8中。UPDATE: 是的,fixed!

与此同时,这里有一个解决此问题的计划-自动为分类法下所有新创建的术语设置自定义slug后缀:

/*
 * Set custom slug suffix for terms of a taxonomy
 * 
 * http://wordpress.stackexchange.com/q/42550/10691
 * http://wordpress.stackexchange.com/q/71304/10691
 * http://wordpress.stackexchange.com/q/120096/10691
 * https://github.com/WordPress/WordPress/blob/master/wp-includes/taxonomy.php
 */
add_action( \'created_term\', \'aahank_add_suffix_to_term\', 10, 3 );
function aahank_add_suffix_to_term( $term_id, $tt_id, $taxonomy ) {
    if( $taxonomy == \'book\' ) {

        // e.g. Term name \'PHP\' and term slug \'php-books\'
        $term = get_term( $term_id, $taxonomy );
        $args = array( \'slug\' => $term->slug . \'-books\' );
        wp_update_term( $term_id, $taxonomy, $args );

    }
}
这不是回顾性的,也就是说,只有分类法下的新术语(本例中为“books”)的slug是用我们的自定义后缀(“books”)创建的。

要改为设置前缀,请在函数中更改此行:

$args = array( \'slug\' => $term->slug . \'-books\' );
对这样的事情:

// e.g. Term name \'PHP\' and term slug \'books-php\'
$args = array( \'slug\' => \'books-\' . $term->slug );

And once the bug is fixed...

转储数据库,并使用适当的文本编辑器进行正则表达式搜索和替换,如Sublime TextTextMate (或like this).

可能不是最好的方式,但足以完成工作。

结束

相关推荐

Missing HTML comment tags

我有这个WP安装,我目前正在修改。最疯狂的是HTML注释没有显示在源代码的任何地方。也就是说,如果您右键单击页面并“查看源代码”。但是,如果要使用这样的工具打开页面->http://www.iwebtool.com/code_viewer?domain=w3lol.com 你可以清楚地看到评论就在那里。网站url为http://w3lol.com可悲的是,关于这件事的任何地方都没有任何信息,而且我也不知道如何确定这是否是由代码本身、Apache、WordPress或其他原因造成的。。。(顺便说一句,