web-dev-qa-db-ja.com

投稿タイプのラベル名

新しい投稿タイプを作成しました。その名前はアカデミアなので、最初のメニューオプションもアカデミアです。しかし、それをSee All Academias(ほんの一例)のようなものに変更したいのですが、可能ですか?

1
Vitor Argos

関数 register_post_type() は引数'labels'を取ります。これは配列です。可能なキーの1つは…tadaです。 …'menu_name'

サンプルコード

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' )
    )
);

更新

さて、私はあなたの質問をよりよく理解したので、あなたが望むものを達成するための唯一の方法があるようです:attribute_escapeにフックする.

テストプラグイン

<?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';

}


それほどエレガントではありませんが、少なくとも解決策は…

アップデート12.05.2010

チケット17378 に新しいパラメータall_itemsが提案されました。コアの一部になれば、それはもっとうまくいくでしょう…

4
fuxia