¿Se puede renombrar la taxonomía predeterminada "etiquetas de entrada"?

17 nov 2010, 12:48:05
Vistas: 17.7K
Votos: 17

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"?

0
Todas las respuestas a la pregunta 4
3
24

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:

Metabox de etiquetas con nuevas etiquetas

17 nov 2010 13:33:04
Comentarios

Buena sugerencia - voy a probarlo y reportaré los resultados. Gracias

anu anu
17 nov 2010 14:13:37

exactamente lo que necesitaba. no conocía el global $taxonomies

helgatheviking helgatheviking
7 nov 2011 23:50:07

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.

Manu Manu
26 feb 2014 14:08:34
1

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

15 mar 2012 15:29:48
Comentarios

Esta es, sin duda, la forma más sencilla de ajustar el nombre de la taxonomía de categoría predeterminada, excelente respuesta.

serraosays serraosays
27 ene 2017 18:05:18
1

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 );
19 jun 2014 07:49:15
Comentarios

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

tehlivi tehlivi
18 abr 2017 01:35:33
0

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;
}
12 may 2011 01:28:00