事实证明,这是一个核心缺陷。我正要报告它,但发现它已经存在了好几年了,并且也适用于自定义分类法。参见门票:#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 Text 或
TextMate (或
like this).
可能不是最好的方式,但足以完成工作。