it-swarm.com.de

Post Type Label Name

ich habe gerade einen neuen Beitragstyp erstellt. Der Name lautet "Academias", daher ist die erste Menüoption auch "Academias". Aber ich würde es gerne in See All Academias ändern (nur ein Beispiel), ist das möglich?

1
Vitor Argos

Die Funktion register_post_type () akzeptiert ein Argument 'labels'. Dies ist ein Array, einer der möglichen Schlüssel heißt ... tada! … 'menu_name'.

Beispielcode

register_post_type(
    'academias'
,   array (
        'can_export'          => TRUE
    ,   'exclude_from_search' => FALSE
    ,   'has_archive'         => TRUE
    ,   'hierarchical'        => TRUE
    ,   'label'               => 'Academias'
    ,   'labels'              => array ( 'menu_name' => 'See All Academias' )
    ,   'menu_position'       => 5
    ,   'public'              => TRUE
    ,   'publicly_queryable'  => TRUE
    ,   'query_var'           => 'academias'
    ,   'rewrite'             => array ( 'slug' => 'academias' )
    ,   'show_ui'             => TRUE
    ,   'show_in_menu'        => TRUE
    ,   'show_in_nav_menus'   => TRUE
    ,   'supports'            => array ( 'editor', 'title' )
    )
);

Aktualisieren

Nun, da ich Ihre Frage besser verstanden habe, scheint es nur einen Weg zu geben, das zu erreichen, was Sie wollen: sich in attribute_escape einbinden.

Test Plugin

<?php
/*
Plugin Name: *WPSE13210
*/
! defined( 'ABSPATH' ) and exit;

add_action( 'init', 'register_academia' );

/**
 * Registers te post type academias
 *
 * @return void
 */
function register_academia()
{
    register_post_type(
        'academias'
    ,   array (
            'can_export'          => TRUE
        ,   'exclude_from_search' => FALSE
        ,   'has_archive'         => TRUE
        ,   'hierarchical'        => TRUE
        ,   'label'               => 'Academias'
        ,   'labels'              => array (
                'menu_name' => 'See All Academias'
            ,   'name' => 'Academias'
            )
        ,   'menu_position'       => 5
        ,   'public'              => TRUE
        ,   'publicly_queryable'  => TRUE
        ,   'query_var'           => 'academias'
        ,   'rewrite'             => array ( 'slug' => 'academias' )
        ,   'show_ui'             => TRUE
        ,   'show_in_menu'        => TRUE
        ,   'show_in_nav_menus'   => TRUE
        ,   'supports'            => array ( 'editor', 'title' )
        )
    );
}

add_filter( 'attribute_escape', 'rename_second_menu_name', 10, 2 );

/**
 * Renames the first occurence of 'See All Academias' to 'Academias'
 * and deactivates itself then.
 * @param $safe_text
 * @param $text
 */
function rename_second_menu_name( $safe_text, $text )
{
    if ( 'See All Academias' !== $text )
    {
        return $safe_text;
    }

    // We are on the main menu item now. The filter is not needed anymore.
    remove_filter( 'attribute_escape', 'rename_second_menu_name' );

    return 'Academias';

}


Nicht sehr elegant, aber zumindest eine Lösung…

Update 12.05.2010

In Ticket 17378 wurde ein neuer Parameter all_items vorgeschlagen. Das sollte viel besser funktionieren, sobald es Teil des Kerns ist ...

4
fuxia