web-dev-qa-db-ja.com

書き込みタグ/分類法をオフにすることはできますか?

私のサイトのスタッフがタグに関して抱えていた大きな問題の1つは、書き込み能力のために、膨大な数の類似タグまたは重複タグです。

私はそれらが使用するために私のサイトに新しいカスタム分類法を追加しようとしています、しかし私は私達がタグで持っていた問題を避けたいと思います。書き込みを無効にできるかどうかを知りたいので、管理領域の分類の一部を通して手動でのみ追加できます。それは階層的ではないので、それらはまだ入力することができ、システムは彼らが探しているかもしれないタグをオートコンプリートして検索するでしょう、それは素晴らしいです。私は彼らが投稿画面から新しいタグを作成できないようにしたいだけです。

これは可能ですか?私はCodexのTaxonomiesページとregister_taxonomy()ページを見ていましたが、おそらく「書き換え」関数が私が探しているものかもしれないと思ったのですが、今はそうは思わない。

5
Chris

これが私が思いついたもので、うまくいくようです:

add_filter( 'pre_post_tags_input', 'no_tags_input_create' );
add_filter( 'pre_post_tax_input', 'no_tax_input_create' );

function no_tags_input_create($tags_input) {

    $output = array();

    foreach( $tags_input as $tag )
        if( term_exists( $tag, 'post_tag') )
            $output[] = $tag;

    return $output;
}

function no_tax_input_create($tax_input) {

    if( !isset($tax_input['post_tag']) )
        return $tax_input;

    $output = array();
    $tags = explode(',', $tax_input['post_tag']);

    foreach( $tags as $tag )
        if( term_exists( $tag, 'post_tag') )
            $output[] = $tag;

    $tax_input['post_tag'] = implode(',',$output);

    return $tax_input;
}

これはタグ用です。カスタム分類法を処理するために2番目の機能を簡単に拡張できます。

6
Rarst