Cum pot redenumi taxonomia implicită "post tags" în WordPress?
Intenționez să folosesc taxonomia implicită "post tags" pentru a oferi un set comun de tag-uri atât pentru postări cât și pentru 2 tipuri custom de postări (pentru a permite colectarea/agregarea după tag).
Aș dori să redenumesc taxonomia "post tags" în ceva mai sugestiv - cum ar fi "general tags" - pentru a fi mai clar, mai ales când această taxonomie este atașată la alte tipuri custom de postări.
Există vreo metodă de a face acest lucru în WordPress, sau trebuie făcut prin SQL? De asemenea, știe cineva dacă există vreo așteptare ca această taxonomie să existe cu numele "post tags"?

Informațiile despre taxonomii sunt stocate în tabloul global $wp_taxonomies
. Dacă înregistrezi o nouă taxonomie, aceasta este adăugată ca un obiect cu diferite proprietăți, inclusiv etichetele folosite în interfața utilizator. Etichetele standard și categoriile sunt de asemenea înregistrate acolo la fiecare încărcare de pagină, cu funcția create_initial_taxonomies()
care se declanșează la init
.
Deoarece este un simplu tablou de obiecte, îl putem modifica și vedea ce se întâmplă. Proprietățile care ne interesează sunt labels
și label
.
add_action( 'init', 'wpa4182_init');
function wpa4182_init()
{
global $wp_taxonomies;
// Lista de etichete pe care le putem modifica provine din
// 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' => 'Etichete WPA 4182',
'menu_name' => 'Etichete WPA 4182',
'singular_name' => 'Etichetă WPA 4182',
'search_items' => 'Caută Etichete WPA 4182',
'popular_items' => 'Etichete WPA 4182 Populare',
'all_items' => 'Toate Etichetele WPA 4182',
'parent_item' => null, // Etichetele nu sunt ierarhice
'parent_item_colon' => null,
'edit_item' => 'Editează Eticheta WPA 4182',
'update_item' => 'Actualizează Eticheta WPA 4182',
'add_new_item' => 'Adaugă Etichetă WPA 4182 Nouă',
'new_item_name' => 'Nume Etichetă WPA 4182 Nouă',
'separate_items_with_commas' => 'Separați etichetele WPA 4182 cu virgule',
'add_or_remove_items' => 'Adaugă sau elimină etichete WPA 4182',
'choose_from_most_used' => 'Alegeți dintre cele mai utilizate etichete WPA 4182',
);
$wp_taxonomies['post_tag']->label = 'Etichete WPA 4182';
}
Nu am verificat peste tot, și probabil va trebui să modifici și în tema ta, dar acest cod pare să facă ceea ce dorești:

exact ce aveam nevoie. nu știam despre variabila globală $taxonomies

O mică problemă când folosesc acest cod: dacă rulez WP 3.8.1 cu DEBUG:true, văd o notificare pe pagina de editare a fiecărui tag: "Notice: Undefined property: stdClass::$view_item in /wp-includes/admin-bar.php on line 508". Într-adevăr, dacă adaug o etichetă "view_item" în listă (View WPA 4182), notificarea dispare.

Redenumește etichetele specifice ale categoriilor:
add_action('init', 'renameCategory');
function renameCategory() {
global $wp_taxonomies;
$cat = $wp_taxonomies['category'];
$cat->label = 'Categoriile mele';
$cat->labels->singular_name = 'Categoria mea';
$cat->labels->name = $cat->label;
$cat->labels->menu_name = $cat->label;
//…
}
Etichete: http://codex.wordpress.org/Function_Reference/register_taxonomy#Arguments

Puteți elimina taxonomia Categorii și apoi pur și simplu să vă creați propria taxonomie.
În exemplul meu am eliminat taxonomia Categorii pentru articole și am înlocuit-o cu o taxonomie numită Subiecte
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( 'Subiecte', 'Nume General Taxonomie', 'dc' ),
'singular_name' => _x( 'Subiect', 'Nume Singular Taxonomie', 'dc' ),
'menu_name' => __( 'Subiecte', 'dc' ),
'all_items' => __( 'Toate Elementele', 'dc' ),
'parent_item' => __( 'Element Părinte', 'dc' ),
'parent_item_colon' => __( 'Element Părinte:', 'dc' ),
'new_item_name' => __( 'Subiect Nou', 'dc' ),
'add_new_item' => __( 'Adaugă Element Nou', 'dc' ),
'edit_item' => __( 'Editează Element', 'dc' ),
'update_item' => __( 'Actualizează Element', 'dc' ),
'separate_items_with_commas' => __( 'Separați elementele cu virgulă', 'dc' ),
'search_items' => __( 'Caută Elemente', 'dc' ),
'add_or_remove_items' => __( 'Adaugă sau elimină elemente', 'dc' ),
'choose_from_most_used' => __( 'Alege din cele mai folosite elemente', 'dc' ),
'not_found' => __( 'Nu a fost găsit', '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 );

Exact asta am nevoie. Mulțumesc! Am făcut o singură mică modificare: https://english.stackexchange.com/questions/25931/unregister-vs-deregister?newreg=1beb484b28ae485880486c283d51a1eb

De la aici
// conectează filtrele de traducere
add_filter( 'gettext', 'change_post_to_article' );
add_filter( 'ngettext', 'change_post_to_article' );
function change_post_to_article( $translated ) {
$translated = str_ireplace( 'Post', 'Articol', $translated ); // ireplace este doar pentru PHP5
return $translated;
}
