Kann die Standard-Taxonomie "Post-Tags" umbenannt werden?

16

Ich beabsichtige, die Standard-Taxonomie "Post-Tags" zu verwenden, um einen gemeinsamen Satz von Tags für Posts und zwei benutzerdefinierte Post-Typen bereitzustellen (um das Sammeln / Aggregieren nach Tags zu ermöglichen).

Ich möchte die Taxonomie "Post-Tags" in "Allgemeine Tags" umbenennen, um sie ein wenig übersichtlicher zu gestalten, insbesondere wenn diese Taxonomie mit anderen benutzerdefinierten Post-Typen verknüpft ist.

Gibt es eine Möglichkeit, dies in Wordpress zu tun, oder mache ich das über SQL? Außerdem weiß jeder, ob die Erwartung besteht, dass diese Taxonomie mit den nanen "Post-Tags" existiert.

anu
quelle

Antworten:

23

Die Informationen zu Taxonomien werden im globalen $wp_taxonomiesArray gespeichert . Wenn Sie eine neue Taxonomie registrieren, wird sie als Objekt mit verschiedenen Eigenschaften hinzugefügt, einschließlich der in der Benutzeroberfläche zu verwendenden Bezeichnungen. Dort werden bei jedem Seitenaufruf auch die Standard-Tags und Kategorien mit der create_initial_taxonomies()Funktion , die ausgelöst wird, registriert init.

Da es sich um ein einfaches Array von Objekten handelt, können wir es ändern und sehen, was passiert. Die Immobilien, an denen wir interessiert sind, sind labelsund 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';
}

Ich habe es nicht überall überprüft, und Sie müssen es wahrscheinlich selbst in Ihrem Thema ändern, aber dies scheint zu tun, was Sie wollen:

Tag-Metabox mit neuen Labels

Jan Fabry
quelle
Netter - ich versuche es und melde mich zurück. Vielen Dank
anu
genau das, was ich brauchte. wusste nichts über die $ taxonomies global
helgatheviking
Ein kleines Problem bei der Verwendung dieses Codes: Wenn ich WP 3.8.1 mit DEBUG: true ausführe, wird auf der Bearbeitungsseite jedes Tags ein Hinweis angezeigt: "Hinweis: Nicht definierte Eigenschaft: stdClass :: $ view_item in / wp-includes / admin -bar.php in Zeile 508 ". Wenn ich der Liste ein "view_item" -Label hinzufüge (View WPA 4182), verschwindet der Hinweis.
Manu
3

Sie können die Kategorien-Taxonomie entfernen und dann einfach Ihre eigene erstellen.

In meinem Beispiel habe ich die Taxonomie für Post-Kategorien entfernt und durch eine Taxonomie für Subjects ersetzt

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
quelle
Genau das brauche ich. Vielen Dank! Ich habe nur eine kleine Änderung vorgenommen: english.stackexchange.com/questions/25931/…
tehlivi
2

Benennen Sie bestimmte Kategoriebeschriftungen um:

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

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

Lemats
quelle
Dies ist bei weitem die einfachste Möglichkeit, den Namen der Standardkategorietaxonomie anzupassen.
Serraosays
0

Von hier aus

// 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
quelle