web-dev-qa-db-fra.com

Puis-je désactiver les balises/taxonomies inscrites?

L'un des gros problèmes rencontrés par le personnel de mon site avec les balises est le nombre impressionnant de balises similaires ou en double, en raison de la capacité d'écriture.

Je suis sur le point d'ajouter de nouvelles taxonomies personnalisées sur mon site, mais j'aimerais éviter le problème que nous avons rencontré avec les balises. Je suis curieux de savoir si je peux désactiver les réponses écrites afin qu'elles ne puissent être ajoutées manuellement que par le biais de la partie de cette taxonomie située dans la zone d'administration. C'est non hiérarchique, donc ils peuvent toujours taper et le système se complétera automatiquement et recherchera les tags qu'ils pourraient rechercher, ce qui est génial. Je ne veux tout simplement pas qu'ils puissent créer de nouveaux tags à partir de l'écran de publication.

Est-ce possible? Je regardais les pages Taxonomies et register_taxonomy () du Codex et je pensais que la fonction "réécrire" pourrait être ce que je cherchais, mais je ne pense pas que ce soit le cas maintenant.

5
Chris

Voici ce que je suis venu avec, semble fonctionner:

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;
}

Ceci est pour les tags, vous pouvez facilement étendre la seconde fonction pour gérer les taxonomies personnalisées.

6
Rarst