J'ai passé la dernière journée à utiliser le fichier functions.php pour personnaliser entièrement WordPress pour mes sites clients. Je suis émerveillé de voir à quel point j'ai pu accomplir et à quel point cela facilitera les choses pour mes clients.
J'ai supprimé certains éléments de menu pour les utilisateurs qui ne sont pas connectés en tant qu'administrateur. Ce que j'espère (et d'après ce que j'ai lu, je sais que cela peut être fait) est de trouver un moyen de renommer certains éléments du menu (encadré de gauche dans la zone d'administration). Par exemple, changez les articles en articles.
Si quelqu'un peut fournir le code du fichier functions.php ou m'indiquer la direction, je l'apprécierais beaucoup!
Voici le processus pour changer les étiquettes (j'ai changé les messages en "contacts" dans mon exemple)
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' );
Pour changer l'ordre du menu, allez avec ceci:
// 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');
J'ai du code pour supprimer des éléments, mais il est global et non basé sur le niveau d'accès de l'utilisateur
Pour renommer le type de publication par défaut (ou toute autre question), utilisez simplement le filtre post_type_labels_{$post_type}
. Pour post
par défaut, ce sera post_type_labels_post
. Dans le code ci-dessous se trouve la liste complète des étiquettes (WP 4.7.1
). Vous n'êtes pas obligé de tout changer.
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 vous souhaitez une prise en charge de l'internationalisation, utilisez simplement __( $text, $textdomain )
comme:
$labels->name = __( 'News', 'textdomain' );
J'ai trouvé le filtre dans la fonction: get_post_type_labels()
à partir d'un fichier 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 );
Vous voudrez peut-être regarder cette question
et la classe mentionnée ici/ Gist
qui détient des fonctions que vous recherchez
rename_admin_menu_section()
renommer par exemple modifier Posts en Articles
et vous pouvez supprimer le menu des apparences et vous créer un nouvel élément de menu de page supérieure pour
Je suis d'accord .. Le fichier functions.php
donne beaucoup de flexibilité. J'ai eu besoin de certaines des fonctionnalités que vous avez décrites avec une combinaison de filtres functions.php
et ce plugin .
À ce que je sache, ce plugin résoudrait vos problèmes et fonctionnera également dans les situations d’installation multisite. J'espère que cela pourra aider.
L'exemple ci-dessus de Norcross est juste, mais j'avais besoin de la possibilité d'internationalisation. Si j'avais la réputation, ce serait un commentaire dans la réponse de Norcross, mais comme ce n'est pas le cas, je vais simplement mettre le code modifié ici. 'i18n_context' est un espace de noms arbitraire pour le contexte de traduction, il peut s'agir du nom de votre plugin ou de votre thème par exemple.
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' );