カスタム分類法にカテゴリと同じ用語(スラッグ)を付けることはできませんか?


8

カテゴリとタグに同じ用語(用語のスラッグ)を含めることができないことは知っていましたが、驚いたことに、今日気付いたように、カスタム分類法の場合もそうです。

たとえば、私のサイトにというカテゴリがあり、Linux (linux)「Linux」というカスタム分類用語も作成したい場合、それはのようLinux (linux-2)になります。つまり、スラッグは異なる必要があります。

また、スラッグの名前をに戻そうとするとlinux「スラッグ「linux」はすでに別の用語で使用されていますというエラーが表示されます

カテゴリ/タグとカスタム分類の下で同じ用語を使用することは可能ですか?


問題を再現するには?

  1. 3〜5件の新しい投稿を作成します。新しいカテゴリとタグを作成し、それらをそれらの投稿に割り当てます(テスト目的のみ)。

  2. パーマリンク設定を保存します。

  3. 前に作成したカテゴリとタグと同じ名前とスラッグで、カスタム分類の下に2つの新しい用語を作成し、それらをカスタム投稿タイプの下の新しい投稿に割り当てます。

  4. カスタム分類を削除します。

  5. それらを再作成してみると、「スラッグ「XXX」はすでに別の用語で使用されていますというエラーが発生します

時々それは問題を複製しました、時にはそれはしません。

だが...

同じ名前とスラッグでカテゴリ(またはタグ)とカスタム分類法を作成できる場合は、それを実行します。次に、そのうちの1つを名前変更すると、カテゴリ(またはタグ)とカスタム分類の両方の名前が変更されます。


うーん、これは私には起こりません。カスタム分類コードを貼り付けることができますか?
Matthew Boynes 2013年

@MatthewBoynesああ、これは次のようになります:gist.github.com/anonymous/5267905cccae4d52cc1b
its_me

私はWordPressの最新のナイトリービルドを使用しており、コードをそのまま使用してもこのエラーは発生しません。次に行うべきことは次のとおりです。(1)WordPress 3.6.1のクリーンインストールで、投稿タイプと分類コードだけをクリーンテーマに追加します。Twenty ThirteenまたはToolboxなどを使用します。動作する場合、問題はWPにあるのではなく、プラグインまたはテーマにあることがわかります。発生する場合は、3.7の最新のナイトリービルドで同じことを試してください。それがうまくいけば、3.7はおそらく来週発売されるので、心配する必要はありません。それでも発生する場合は、それを複製するために必要なすべてのコードを提供します。
Matthew Boynes 2013年

@MatthewBoynesわかりました。試してみます。ちなみに、私はすでに3.7の安定版を使用しており、昨日/今日リリースされています。
its_me 2013年

ああ、あなたは正しい、私はどういうわけかそれを逃した!
Matthew Boynes 2013年

回答:


9

結局のところ、これはコアのバグです。私はそれを報告しようとしていましたが、それが何年もの間そこにあり、カスタムの分類にも適用されることがわかりました。チケットをご覧ください:#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 TextTextMate(またはこのような)のような適切なテキストエディターを使用して置き換えます。

おそらくそれを行うための最良の方法ではありませんが、仕事を成し遂げるには十分です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.