問題描述
我知道在類別和標籤下不可能有相同的術語 (術語 s s),但令人驚訝的是,正如我今天意識到的那樣,自定義分類法也是如此。
所以例如,如果我的網站有一個名為 Linux (linux)的類別,並且我想建立一個名為’Linux’ 的自定義分類術語,它會像 Linux (linux-2)一樣,即 lug 子必須是不同的。
如果我嘗試重新命名為 linux,我會收到錯誤,「s lug ‘linux’ 已經被另一個術語使用了」 。
在類別/標籤和自定義分類法下是否可以使用相同的術語 (不會造成破壞)?
如何複製問題?
-
建立 3-5 個新職位。建立一個新的類別和標籤,並將它們分配給這些帖子 (僅用於測試目的) 。
-
儲存永久連結設定。
-
在自定義分類法下建立與您之前建立的類別和標籤相同的名稱和 s 尾的兩個新術語,並將其分配給自定義帖子型別下的新帖子。
-
刪除自定義分類法。
-
請嘗試重新建立它們,然後您會收到錯誤:「s lug ‘XXX’ 已被另一個術語使用。」
有時會複製這個問題,有時候它不會。
但…
如果您能夠建立一個類別 (或標籤) 和具有相同名稱和分數的自定義分類法,請執行此操作。然後,重新命名其中一個,你會注意到類別 (或標籤) 和自定義分類法都被重新命名了!
最佳解決思路
原來,這是一個核心的錯誤。我即將舉報,但發現它已經存在了,就像幾年一樣,也適用於定製分類法。參見門票:#5809,#21950 和 #22023 。
如果全部按計劃進行,則設定為 3.8 3.9 4.1 4.2 。更新:是的,fixed!
在此期間,這是一個克服這個問題的計劃 – 為分類法下的所有新建立的術語自動設定一個自定義段落字尾:
/*
* 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 );
一旦 bug 修復了
轉儲資料庫,並使用正確的文字編輯器 (如 Sublime Text 或 TextMate(或 like this)) 進行正規表示式搜尋和替換。
可能不是最好的方法,但是要做好這項工作就夠好了。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。