La taxonomie par défaut des «post tags» peut-elle être renommée?

16

J'ai l'intention d'utiliser la taxonomie par défaut des «balises de publication» pour fournir un ensemble commun de balises entre les publications et 2 types de publication personnalisés (pour permettre la collecte / l'agrégation par balise).

Je voudrais renommer la taxonomie des «balises de publication» en quelque chose d'autre - comme «balises générales» - pour la rendre un peu plus claire, surtout lorsque cette taxonomie est attachée à d'autres types de publication personnalisés.

Alors, y a-t-il un moyen de le faire dans Wordpress, ou dois-je le faire via SQL. De plus, n'importe qui sait s'il y a une attente que cette taxonomie existe avec les nane "post tags"

anu
la source

Réponses:

23

Les informations sur les taxonomies sont stockées dans le $wp_taxonomiestableau global . Si vous enregistrez une nouvelle taxonomie, elle est ajoutée en tant qu'objet avec différentes propriétés, y compris les étiquettes à utiliser dans l'interface utilisateur. Les balises et catégories standard y sont également enregistrées à chaque chargement de page, avec la create_initial_taxonomies()fonction qui se déclenche init.

Puisqu'il s'agit d'un simple tableau d'objets, nous pouvons le modifier et voir ce qui se passe. Les propriétés qui nous intéressent sont labelset label.

add_action( 'init', 'wpa4182_init');
function wpa4182_init()
{
    global $wp_taxonomies;

    // The list of labels we can modify comes from
    //  http://codex.wordpress.org/Function_Reference/register_taxonomy
    //  http://core.trac.wordpress.org/browser/branches/3.0/wp-includes/taxonomy.php#L350
    $wp_taxonomies['post_tag']->labels = (object)array(
        'name' => 'WPA 4182 Tags',
        'menu_name' => 'WPA 4182 Tags',
        'singular_name' => 'WPA 4182 Tag',
        'search_items' => 'Search WPA 4182 Tags',
        'popular_items' => 'Popular WPA 4182 Tags',
        'all_items' => 'All WPA 4182 Tags',
        'parent_item' => null, // Tags aren't hierarchical
        'parent_item_colon' => null,
        'edit_item' => 'Edit WPA 4182 Tag',
        'update_item' => 'Update WPA 4182 Tag',
        'add_new_item' => 'Add new WPA 4182 Tag',
        'new_item_name' => 'New WPA 4182 Tag Name',
        'separate_items_with_commas' => 'Separata WPA 4182 tags with commas',
        'add_or_remove_items' => 'Add or remove WPA 4182 tags',
        'choose_from_most_used' => 'Choose from the most used WPA 4182 tags',
    );

    $wp_taxonomies['post_tag']->label = 'WPA 4182 Tags';
}

Je ne l'ai pas vérifié partout, et vous devrez probablement le changer vous-même dans votre thème, mais cela semble faire ce que vous voulez:

Tag metabox avec de nouvelles étiquettes

Jan Fabry
la source
Sympa - je vais essayer et faire un rapport. Merci
anu
exactement ce dont j'avais besoin. ne connaissait pas les $ taxonomies global
helgatheviking
Un petit problème lors de l'utilisation de ce code: si j'exécute WP 3.8.1 avec DEBUG: true, je vois une notification sur la page d'édition de chaque balise: "Remarque: propriété non définie: stdClass :: $ view_item dans / wp-includes / admin -bar.php sur la ligne 508 ". En effet, si j'ajoute une étiquette "view_item" à la liste (View WPA 4182), l'avis disparaît.
Manu
3

Vous pouvez supprimer la taxonomie des catégories, puis simplement créer la vôtre.

Dans mon exemple, j'ai supprimé la taxonomie des catégories de messages et l'ai remplacée par une taxonomie des sujets

add_action( 'init', 'unregister_taxonomy' );
function unregister_taxonomy() {
    global $wp_taxonomies;
    $taxonomy = 'category';
    if ( taxonomy_exists($taxonomy) ){
        unset( $wp_taxonomies[$taxonomy] );
    }
}

function article_subjects() {
    $labels = array(
        'name'                       => _x( 'Subjects', 'Taxonomy General Name', 'dc' ),
        'singular_name'              => _x( 'Subject', 'Taxonomy Singular Name', 'dc' ),
        'menu_name'                  => __( 'Subjects', 'dc' ),
        'all_items'                  => __( 'All Items', 'dc' ),
        'parent_item'                => __( 'Parent Item', 'dc' ),
        'parent_item_colon'          => __( 'Parent Item:', 'dc' ),
        'new_item_name'              => __( 'New Subject', 'dc' ),
        'add_new_item'               => __( 'Add New Item', 'dc' ),
        'edit_item'                  => __( 'Edit Item', 'dc' ),
        'update_item'                => __( 'Update Item', 'dc' ),
        'separate_items_with_commas' => __( 'Separate items with commas', 'dc' ),
        'search_items'               => __( 'Search Items', 'dc' ),
        'add_or_remove_items'        => __( 'Add or remove items', 'dc' ),
        'choose_from_most_used'      => __( 'Choose from the most used items', 'dc' ),
        'not_found'                  => __( 'Not Found', 'dc' ),
    );
    $args = array(
        'labels'                     => $labels,
        'hierarchical'               => false,
        'public'                     => true,
        'show_ui'                    => true,
        'show_admin_column'          => true,
        'show_in_nav_menus'          => true,
        'show_tagcloud'              => true,
    );
    register_taxonomy( 'article_subjects', array( 'post' ), $args );
}
add_action( 'init', 'article_subjects', 0 );
davidcondrey
la source
C'est exactement ce dont j'ai besoin. Merci! Je n'ai fait qu'un petit changement: english.stackexchange.com/questions/25931/…
tehlivi
2

Renommez des libellés de catégorie spécifiques:

add_action('init', 'renameCategory');
function renameCategory() {
    global $wp_taxonomies;

    $cat = $wp_taxonomies['category'];
    $cat->label = 'My Categories';
    $cat->labels->singular_name = 'My Categorie';
    $cat->labels->name = $cat->label;
    $cat->labels->menu_name = $cat->label;
    //…
}

Étiquettes: http://codex.wordpress.org/Function_Reference/register_taxonomy#Arguments

lemats
la source
C'est de loin le moyen le plus simple d'ajuster le nom de la taxonomie de catégorie par défaut, excellente réponse.
serraosays
0

D' ici

// hook the translation filters
add_filter(  'gettext',  'change_post_to_article'  );
add_filter(  'ngettext',  'change_post_to_article'  );

function change_post_to_article( $translated ) {
     $translated = str_ireplace(  'Post',  'Article',  $translated );  // ireplace is PHP5 only
     return $translated;
}
kaiser
la source