事实证明,这是核心错误。我将要报告它,但是发现它已经存在了很多年,并且也适用于自定义分类法。查看门票:#5809,#21950和#22023。
如果一切按计划进行,则将其固定在 3.8 3.9 4.14.2。更新:是的,已修复!
同时,这是解决此问题的计划-为分类法下所有新创建的术语自动设置自定义子词后缀:
/*
* 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”)的子句是使用我们的自定义后缀(“ -books”)创建的。
要设置前缀,请在函数中更改此行:
$args = array( 'slug' => $term->slug . '-books' );
像这样:
// e.g. Term name 'PHP' and term slug 'books-php'
$args = array( 'slug' => 'books-' . $term->slug );
并修复了错误后...
转储数据库并进行正则表达式搜索,并使用适当的文本编辑器(例如Sublime Text或TextMate(或类似))进行替换。
可能不是最好的方法,但足以完成工作。