Como alterar as etiquetas do menu do administrador

41

Eu passei o último dia usando o arquivo functions.php para personalizar totalmente o WordPress para os sites dos meus clientes. Estou impressionada com o quanto consegui realizar e com o quanto mais fácil isso vai fazer as coisas para os meus clientes.

Eu removi alguns itens de menu para usuários que não estão conectados como administrador. O que eu estou esperando (e pelo que li, saiba que pode ser feito) é encontrar uma maneira de renomear alguns dos itens de menu (barra lateral esquerda na área administrativa). Por exemplo, altere as publicações para artigos.

Se alguém puder fornecer o código para o arquivo functions.php ou me apontar na direção, eu agradeceria muito!

    
por Adam 12.02.2011 / 20:32
fonte

5 respostas

65

Este é o processo para alterar os marcadores (alterei as postagens para "contatos" no meu exemplo)

function change_post_menu_label() {
    global $menu;
    global $submenu;
    $menu[5][0] = 'Contacts';
    $submenu['edit.php'][5][0] = 'Contacts';
    $submenu['edit.php'][10][0] = 'Add Contacts';
    $submenu['edit.php'][15][0] = 'Status'; // Change name for categories
    $submenu['edit.php'][16][0] = 'Labels'; // Change name for tags
    echo '';
}

function change_post_object_label() {
        global $wp_post_types;
        $labels = &$wp_post_types['post']->labels;
        $labels->name = 'Contacts';
        $labels->singular_name = 'Contact';
        $labels->add_new = 'Add Contact';
        $labels->add_new_item = 'Add Contact';
        $labels->edit_item = 'Edit Contacts';
        $labels->new_item = 'Contact';
        $labels->view_item = 'View Contact';
        $labels->search_items = 'Search Contacts';
        $labels->not_found = 'No Contacts found';
        $labels->not_found_in_trash = 'No Contacts found in Trash';
    }
    add_action( 'init', 'change_post_object_label' );
    add_action( 'admin_menu', 'change_post_menu_label' );

Para alterar a ordem do menu, vá com isto:

// CUSTOMIZE ADMIN MENU ORDER
   function custom_menu_order($menu_ord) {
       if (!$menu_ord) return true;
       return array(
        'index.php', // this represents the dashboard link
        'edit.php', //the posts tab
        'upload.php', // the media manager
        'edit.php?post_type=page', //the posts tab
    );
   }
   add_filter('custom_menu_order', 'custom_menu_order');
   add_filter('menu_order', 'custom_menu_order');

Eu tenho código para remover itens, mas é globalmente e não é baseado no nível de acesso do usuário

    
por Norcross 13.02.2011 / 00:59
fonte
4

Para renomear tipo pós padrão (ou qualquer outro para que o assunto) é só usar filtro post_type_labels_{$post_type} . Por padrão, post será post_type_labels_post . No código abaixo está a lista completa de rótulos ( WP 4.7.1 ). Você não precisa mudar tudo.

add_filter( 'post_type_labels_post', 'news_rename_labels' );

/**
* Rename default post type to news
*
* @param object $labels
* @hooked post_type_labels_post
* @return object $labels
*/
function news_rename_labels( $labels )
{
    # Labels
    $labels->name = 'News';
    $labels->singular_name = 'News';
    $labels->add_new = 'Add News';
    $labels->add_new_item = 'Add News';
    $labels->edit_item = 'Edit News';
    $labels->new_item = 'New News';
    $labels->view_item = 'View News';
    $labels->view_items = 'View News';
    $labels->search_items = 'Search News';
    $labels->not_found = 'No news found.';
    $labels->not_found_in_trash = 'No news found in Trash.';
    $labels->parent_item_colon = 'Parent news'; // Not for "post"
    $labels->archives = 'News Archives';
    $labels->attributes = 'News Attributes';
    $labels->insert_into_item = 'Insert into news';
    $labels->uploaded_to_this_item = 'Uploaded to this news';
    $labels->featured_image = 'Featured Image';
    $labels->set_featured_image = 'Set featured image';
    $labels->remove_featured_image = 'Remove featured image';
    $labels->use_featured_image = 'Use as featured image';
    $labels->filter_items_list = 'Filter news list';
    $labels->items_list_navigation = 'News list navigation';
    $labels->items_list = 'News list';

    # Menu
    $labels->menu_name = 'News';
    $labels->all_items = 'All News';
    $labels->name_admin_bar = 'News';

    return $labels;
}

Se você quiser suporte à internacionalização, use apenas __( $text, $textdomain ) como:

$labels->name = __( 'News', 'textdomain' );

Eu encontrei o filtro na função: get_post_type_labels() de um arquivo wp-includes/post.php :

/**
 * Filter the labels of a specific post type.
 *
 * The dynamic portion of the hook name, '$post_type', refers to
 * the post type slug.
 *
 * @since 3.5.0
 *
 * @see get_post_type_labels() for the full list of labels.
 *
 * @param object $labels Object with labels for the post type as member variables.
 */
$labels = apply_filters( "post_type_labels_{$post_type}", $labels );
    
por Ivan 19.02.2017 / 01:20
fonte
3

Você pode querer analisar esta pergunta

e a classe que eles mencionam lá em gist

que contém funções que você está procurando

rename_admin_menu_section()

para renomear, por exemplo, a alteração de postagens em artigos

e você pode remover o menu de aparições e criar um novo item de menu de primeira página para

    
por Bainternet 12.02.2011 / 23:25
fonte
3

Eu concordo .. O arquivo functions.php oferece muita flexibilidade. Eu precisei de algumas das mesmas funcionalidades que você descreveu com uma combinação de functions.php filters e este plugin .

Pelo que posso dizer ... esse plug-in realizaria ambos os seus problemas e também funcionaria bem em situações de instalação em vários sites. Espero que ajude.

    
por Ross 12.02.2011 / 21:09
fonte
0

O exemplo de Norcross acima está certo, mas eu precisava da possibilidade de internacionalização. Se eu tivesse a reputação, este seria um comentário sob a resposta do Norcross, mas desde que eu não, eu vou colocar o código modificado aqui. 'i18n_context' é um espaço de nomes arbitrário para o contexto da tradução, por exemplo, este poderia ser o nome do seu plugin ou tema.

function change_post_menu_label() {
  global $menu;
  global $submenu;
  $menu[5][0] = __('Contacts', 'i18n_context');
  $submenu['edit.php'][5][0] = __('Contacts', 'i18n_context');
  $submenu['edit.php'][10][0] = __('Add Contacts', 'i18n_context');
  $submenu['edit.php'][15][0] = __('Status', 'i18n_context'); // Change name for categories
  $submenu['edit.php'][16][0] = __('Labels', 'i18n_context'); // Change name for tags
  echo '';
}

function change_post_object_label() {
  global $wp_post_types;
  $labels = &$wp_post_types['post']->labels;
  $labels->name = __('Contacts', 'i18n_context');
  $labels->singular_name = __('Contact', 'i18n_context');
  $labels->add_new = __('Add Contact', 'i18n_context');
  $labels->add_new_item = __('Add Contact', 'i18n_context');
  $labels->edit_item = __('Edit Contacts', 'i18n_context');
  $labels->new_item = __('Contact', 'i18n_context');
  $labels->view_item = __('View Contact', 'i18n_context');
  $labels->search_items = __('Search Contacts', 'i18n_context');
  $labels->not_found = __('No Contacts found', 'i18n_context');
  $labels->not_found_in_trash = __('No Contacts found in Trash', 'i18n_context');
}
add_action( 'init', 'change_post_object_label' );
add_action( 'admin_menu', 'change_post_menu_label' );
    
por nimmolo 04.02.2016 / 09:11
fonte