• 解決済 tori_dayo

    (@tori_dayo)


    先日カテゴリが消せなくなった時に感じた疑問なのですが・・

    カテゴリIDは個別のものなのに、カテゴリ名が重複させられないのはどうしてなのでしょう?
    (スラッグがNGというのならばわかるのですが・・)
    デフォルトで、入れ子にできるシステムなのに、なんとなくおかしいなと思いました。

    たとえば
    歌手A
     ├ 経歴
     └ CD情報
    歌手B
     ├ 経歴
     └ CD情報

    などとしたい場合は不可能ですよね?
    でも、ID的には全然違うもののはずですし、そのためのスラッグなんじゃないかと思うのですが・・

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 今日、同じような要件の依頼で登録を行って、ようやくtori_dayoさんが言われている意味がわかりました。

    tori_dayoさんの例で言うと、歌手Bの「経歴」を作ろうとした時、

    カテゴリー名 = 経歴
    カテゴリースラッグ = b_keireki
    親カテゴリー = 歌手B

    とされていると推測しますが、たしかにこれだと「カテゴリー名重複」で登録できませんでした。

    先に

    カテゴリー名 = B経歴
    カテゴリースラッグ = b_keireki
    親カテゴリー = 歌手B

    としてから、カテゴリー名を「経歴」と変更することは可能でした。
    登録時の重複チェックを、スラッグじゃなくてカテゴリー名で行っているのでしょうね。
    2ステップですが、カテゴリー名を後から変更する方法を試してみてください。

    ちなみに実際にやってみるとわかりますが、全く同じカテゴリー名がたくさんあると、投稿編集の時にきっと唸ると思います 😉

    トピック投稿者 tori_dayo

    (@tori_dayo)

    djcomkatoさま

    おお、こうすれば大丈夫なのですね!
    単純に重複チェックの場所に問題があっただけだったとは^^;

    あと、投稿編集の時ですが、私の構成の場合は、同じ名前のカテゴリは、
    異なる親カテゴリの下にできるので、再編集じゃなければカテゴリは階層表示されているため、
    さほど困らないかと思うのですが、どうでしょう??(再編集する時は、階層が崩れてしまいますが・・)

    djcomkatoさまがこのフォーラムでいただいた初返信です。とても嬉しかったです。
    おかげさまで解決とさせていただきます。ありがとうございましたmm

    こんにちは。
    公式のこのページに「カテゴリ名やスラッグは個別である必要がある。」と書いてありました。
    Posts Categories SubPanel

    この中に

    Category Name
    To reiterate, the Category Name must be unique.
    Category Slug
    The Category slug must be unique.

    階層が違うのに、同名カテゴリができないのはいろいろと面倒ですよね。
    なので、djcomkatoさんのように、同じ名前の前後どちらかに、識別するための個別のアルファベットや数字を振ることが現実的ですね。

    あとは、これを出力する際に、本当は必要のない個別のアルファベット・数字を消して出力できれば、当初の目的は達成できると思います。
    私は今その方法を探っている段階です。

    あとは、これを出力する際に、本当は必要のない個別のアルファベット・数字を消して出力できれば、当初の目的は達成できると思います。
    私は今その方法を探っている段階です。

    直感で大雑把な方法としては、
    1.「カテゴリー名_識別子」で作成する
    2.表示時に、アンダースコア以降を消しちゃうフィルター等を付ける
    なんてのが思い浮かびますね。

    思い浮かんだだけなので、全く試そうともしてませんが ;P

    うちでも同名のカテゴリー名(スラッグ違い)をいくつかやってるんですが、

    Category Name
    To reiterate, the Category Name must be unique.

    がちょっと気になります。
    何か弊害とかが見つかったらご報告しますね。
    (今のところ平和です)

    1.「カテゴリー名_識別子」で作成する
    2.表示時に、アンダースコア以降を消しちゃうフィルター等を付ける

    そうですね。で、方法なんですが、こんな感じにしてみました。

    カテゴリーの前に「大カテゴリを表す1つの英数字-」をつける。スラッグも同様。

    例)
    a-tokyo
    ├ a-food
    └ a-access

    b-osaka
    ├ b-food
    └ b-access

    それで、これのカテゴリリストを出力するときに、正規表現を使って

    $cats = wp_list_categories(‘echo=0&show_count=1&title_li=<h2>カテゴリー</h2>’);
    $cats = preg_replace("/>.-/", ">", $cats);
    $cats = preg_replace(‘/^.-/’, ”, $cats);
    echo $cats;

    こんな感じにすることで、出力時に管理上前につけた余計なものは出さずにできました。
    djcomkatoさんのいうように、これをフィルタ関数にすると広がりができそうですね。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「同じ名前のカテゴリー」には新たに返信することはできません。