Cambio de las etiquetas del menú de administración

41

He pasado el último día usando el archivo functions.php para personalizar completamente WordPress para los sitios de mis clientes. Me sorprende lo mucho que he podido lograr y lo mucho más fácil que hará las cosas para mis clientes.

He eliminado ciertos elementos del menú para usuarios que no han iniciado sesión como administrador. Lo que espero (y por lo que he leído, se puede hacer) es encontrar una manera de cambiar el nombre de algunos de los elementos del menú (barra lateral izquierda en el área de administración). Por ejemplo, cambiar publicaciones a artículos.

¡Si alguien puede proporcionar el código para el archivo functions.php o señalarme la dirección, lo apreciaría enormemente!

    
pregunta Adam 12.02.2011 - 20:32

5 respuestas

65

Aquí está el proceso para cambiar las etiquetas (cambié las publicaciones a "contactos" en mi ejemplo)

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 cambiar el orden del menú, vaya con esto:

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

Tengo un código para eliminar elementos, pero es global y no está basado en el nivel de acceso del usuario

    
respondido por el Norcross 13.02.2011 - 00:59
4

Para cambiar el nombre del tipo de publicación predeterminado (o cualquier otro), use el filtro post_type_labels_{$post_type} . Para post por defecto será post_type_labels_post . En el código siguiente se encuentra la lista completa de etiquetas ( WP 4.7.1 ). No tienes que cambiar todo.

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

Si desea soporte de internacionalización, solo use __( $text, $textdomain ) like:

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

Encontré el filtro en la función: get_post_type_labels() de un archivo 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 );
    
respondido por el Ivan 19.02.2017 - 01:20
3

Es posible que desee consultar esta pregunta

y la clase que mencionan allí en gist

que contiene funciones que buscas

rename_admin_menu_section()

para cambiar el nombre, por ejemplo, cambiar publicaciones a artículos

y puedes eliminar el menú de apariencias y crear tu nuevo elemento de menú de la página superior para

    
respondido por el Bainternet 12.02.2011 - 23:25
3

Estoy de acuerdo .. El archivo functions.php ofrece mucha flexibilidad. He necesitado algunas de las mismas funciones que describió con una combinación de functions.php filters y este complemento .

Por lo que puedo decir ... este complemento lograría ambos problemas y también funciona bien en situaciones de instalación de sitios múltiples. Espero que ayude.

    
respondido por el Ross 12.02.2011 - 21:09
0

El ejemplo anterior de Norcross es correcto, pero necesitaba la posibilidad de la internacionalización. Si tuviera la reputación, este sería un comentario bajo la respuesta de Norcross, pero como no lo tengo, solo pondré el código modificado aquí. 'i18n_context' es un espacio de nombres arbitrario para el contexto de traducción, por ejemplo, este podría ser el nombre de su complemento o 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' );
    
respondido por el nimmolo 04.02.2016 - 09:11

Lea otras preguntas en las etiquetas