¿Se puede renombrar la taxonomía predeterminada "etiquetas de entrada"?
Estoy planeando usar la taxonomía predeterminada "etiquetas de entrada" para proporcionar un conjunto común de etiquetas en entradas y 2 tipos de contenido personalizados (para permitir la recopilación/agregación por etiquetas).
Me gustaría renombrar la taxonomía "etiquetas de entrada" a algo más descriptivo como "etiquetas generales", para que sea más claro, especialmente cuando esta taxonomía se asocie a otros tipos de contenido personalizados.
Entonces, ¿hay alguna forma de hacer esto dentro de WordPress o debo hacerlo mediante SQL? También, ¿alguien sabe si existe alguna expectativa de que esta taxonomía exista con el nombre "post tags"?

La información sobre taxonomías se almacena en el array global $wp_taxonomies
. Si registras una nueva taxonomía, se añade como un objeto con diferentes propiedades, incluyendo 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 función create_initial_taxonomies()
que se ejecuta en init
.
Dado que es un simple array de objetos, podemos modificarlo y ver qué sucede. Las propiedades que nos interesan son labels
y label
.
add_action( 'init', 'wpa4182_init');
function wpa4182_init()
{
global $wp_taxonomies;
// La lista de etiquetas que podemos modificar viene de
// 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' => 'Etiquetas WPA 4182',
'menu_name' => 'Etiquetas WPA 4182',
'singular_name' => 'Etiqueta WPA 4182',
'search_items' => 'Buscar Etiquetas WPA 4182',
'popular_items' => 'Etiquetas WPA 4182 Populares',
'all_items' => 'Todas las Etiquetas WPA 4182',
'parent_item' => null, // Las etiquetas no son jerárquicas
'parent_item_colon' => null,
'edit_item' => 'Editar Etiqueta WPA 4182',
'update_item' => 'Actualizar Etiqueta WPA 4182',
'add_new_item' => 'Añadir nueva Etiqueta WPA 4182',
'new_item_name' => 'Nombre de Nueva Etiqueta WPA 4182',
'separate_items_with_commas' => 'Separar etiquetas WPA 4182 con comas',
'add_or_remove_items' => 'Añadir o eliminar etiquetas WPA 4182',
'choose_from_most_used' => 'Elegir entre las etiquetas WPA 4182 más usadas',
);
$wp_taxonomies['post_tag']->label = 'Etiquetas WPA 4182';
}
No lo he comprobado en todas partes, y probablemente tendrás que cambiarlo en tu tema manualmente, pero esto parece hacer lo que buscas:

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: "Notice: Undefined property: stdClass::$view_item in /wp-includes/admin-bar.php on line 508". De hecho, si agrego una etiqueta "view_item" a la lista (Ver WPA 4182), el aviso desaparece.

Renombrar etiquetas específicas de categorías:
add_action('init', 'renameCategory');
function renameCategory() {
global $wp_taxonomies;
$cat = $wp_taxonomies['category'];
$cat->label = 'Mis Categorías';
$cat->labels->singular_name = 'Mi Categoría';
$cat->labels->name = $cat->label;
$cat->labels->menu_name = $cat->label;
//…
}
Etiquetas: http://codex.wordpress.org/Function_Reference/register_taxonomy#Arguments

Podrías eliminar la taxonomía de Categorías y luego simplemente crear la tuya propia.
En mi ejemplo he eliminado la taxonomía de categorías de los posts y la he reemplazado 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( 'Temas', 'Nombre General de la Taxonomía', 'dc' ),
'singular_name' => _x( 'Tema', 'Nombre Singular de la Taxonomía', 'dc' ),
'menu_name' => __( 'Temas', 'dc' ),
'all_items' => __( 'Todos los Elementos', 'dc' ),
'parent_item' => __( 'Elemento Padre', 'dc' ),
'parent_item_colon' => __( 'Elemento Padre:', 'dc' ),
'new_item_name' => __( 'Nuevo Tema', 'dc' ),
'add_new_item' => __( 'Añadir Nuevo Elemento', 'dc' ),
'edit_item' => __( 'Editar Elemento', 'dc' ),
'update_item' => __( 'Actualizar Elemento', 'dc' ),
'separate_items_with_commas' => __( 'Separar elementos con comas', 'dc' ),
'search_items' => __( 'Buscar Elementos', 'dc' ),
'add_or_remove_items' => __( 'Añadir o eliminar elementos', 'dc' ),
'choose_from_most_used' => __( 'Elegir de los elementos más usados', 'dc' ),
'not_found' => __( 'No encontrado', '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 );

Esto es exactamente lo que necesito. ¡Gracias! Solo hice un pequeño cambio: https://english.stackexchange.com/questions/25931/unregister-vs-deregister?newreg=1beb484b28ae485880486c283d51a1eb

Desde aquí
// enganchar los filtros de traducción
add_filter( 'gettext', 'change_post_to_article' );
add_filter( 'ngettext', 'change_post_to_article' );
function change_post_to_article( $translated ) {
$translated = str_ireplace( 'Post', 'Artículo', $translated ); // ireplace solo para PHP5
return $translated;
}
