¿Se puede cambiar el nombre de la taxonomía predeterminada de "etiquetas de publicación"?

16

Tengo la intención de utilizar la taxonomía predeterminada de "etiquetas de publicación" para proporcionar un conjunto común de etiquetas en las publicaciones y 2 tipos de publicaciones personalizadas (para permitir la recopilación / agregación por etiqueta).

Me gustaría cambiar el nombre de la taxonomía de "etiquetas de publicación" a otra cosa, como "etiquetas generales", para que quede un poco más claro, especialmente cuando esta taxonomía se adjunta a otros tipos de publicaciones personalizadas.

Entonces, ¿hay alguna forma de hacerlo dentro de Wordpress, o lo hago a través de SQL? Además, cualquiera sabe si existe la expectativa de que esta taxonomía exista con las "etiquetas de publicación"

anu
fuente

Respuestas:

23

La información sobre taxonomías se almacena en la $wp_taxonomiesmatriz global . Si registra una nueva taxonomía, se agrega como un objeto con diferentes propiedades, incluidas las etiquetas para usar en la interfaz de usuario. Las etiquetas y categorías estándar también se registran allí en cada carga de página, con la create_initial_taxonomies()función que se activa init.

Como se trata de una simple matriz de objetos, podemos modificarla y ver qué sucede. Las propiedades que nos interesan son labelsy 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';
}

No lo he comprobado en todas partes, y es probable que tengas que cambiarlo en tu tema tú mismo, pero esto parece hacer lo que quieres:

Tag METABOX con nuevas etiquetas

Jan Fabry
fuente
Bonito, lo intentaré e informaré. Gracias
anu
exactamente lo que necesitaba no sabía sobre las taxonomías globales de $
helgatheviking
Un pequeño problema al usar este código: si ejecuto WP 3.8.1 con DEBUG: true, veo un aviso en la página de edición de cada etiqueta: "Aviso: Propiedad no definida: stdClass :: $ view_item en / wp-includes / admin -bar.php en línea 508 ". De hecho, si agrego una etiqueta "view_item" a la lista (Ver WPA 4182), el aviso desaparece.
Manu
3

Puede eliminar la taxonomía de Categorías y luego simplemente crear la suya propia.

En mi ejemplo, eliminé la taxonomía de Categorías de publicaciones y la reemplacé por una taxonomía de Temas

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
fuente
Esto es exactamente lo que necesito. ¡Gracias! Solo hice un pequeño cambio: english.stackexchange.com/questions/25931/…
tehlivi
2

Renombrar etiquetas de categoría específicas:

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

Etiquetas: http://codex.wordpress.org/Function_Reference/register_taxonomy#Arguments

lemats
fuente
Esta es, con mucho, la forma más fácil de ajustar el nombre de la taxonomía de la categoría predeterminada, excelente respuesta.
serraosays
0

Desde aqui

// 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;
}
emperador
fuente