Ich habe den letzten Tag damit verbracht, die Datei functions.php zu verwenden, um WordPress für meine Client-Sites vollständig anzupassen. Ich bin erstaunt, wie viel ich erreichen konnte und wie viel einfacher es für meine Kunden wird.
Ich habe bestimmte Menüpunkte für Benutzer entfernt, die nicht als Administrator angemeldet sind. Ich hoffe (und soweit ich weiß, dass es möglich ist), einen Weg zu finden, einige der Menüpunkte umzubenennen (linke Seitenleiste im Admin-Bereich). Ändern Sie zum Beispiel Beiträge in Artikel.
Wenn jemand den Code für die Datei functions.php bereitstellen oder mich in die Richtung weisen kann, wäre ich sehr dankbar!
Hier ist der Vorgang zum Ändern der Bezeichnungen (in meinem Beispiel habe ich die Beiträge in "Kontakte" geändert)
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' );
Gehen Sie folgendermaßen vor, um die Menüreihenfolge zu ändern:
// 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');
Ich habe Code zum Entfernen von Elementen, aber er ist global und basiert nicht auf der Benutzerzugriffsebene
Verwenden Sie zum Umbenennen des Standardposttyps (oder eines anderen Posttyps) einfach den Filter post_type_labels_{$post_type}
. Bei der Standardeinstellung post
ist dies post_type_labels_post
. Im folgenden Code finden Sie die vollständige Liste der Etiketten (WP 4.7.1
). Sie müssen nicht alles ändern.
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;
}
Wenn Sie Unterstützung für die Internationalisierung benötigen, verwenden Sie einfach __( $text, $textdomain )
wie:
$labels->name = __( 'News', 'textdomain' );
Ich fand den Filter in der Funktion: get_post_type_labels()
aus einer Datei 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 );
Vielleicht möchten Sie sich diese Frage ansehen.
und die Klasse, die sie dort erwähnen auf Gist
die Funktionen enthält, die Sie suchen
rename_admin_menu_section()
zum Beispiel umbenennen ändern Beiträge zu Artikeln
und Sie können das Erscheinungsbild-Menü entfernen und einen neuen Menüeintrag für die Startseite erstellen
Ich bin damit einverstanden. Die functions.php
-Datei bietet viel Flexibilität. Ich habe einige der gleichen Funktionen benötigt, die Sie mit einer Kombination aus functions.php
-Filtern und diesem Plugin beschrieben haben.
Nach allem, was ich sagen kann, würde dieses Plugin beide Probleme lösen und funktioniert auch in Situationen mit mehreren Standorten. Hoffentlich hilft das.
Das obige Beispiel von Norcross ist richtig, aber ich brauchte die Möglichkeit der Internationalisierung. Wenn ich den Ruf hätte, wäre dies ein Kommentar unter Norcross 'Antwort, aber da ich das nicht tue, werde ich einfach den geänderten Code hier einfügen. 'i18n_context' ist ein beliebiger Namespace für den Übersetzungskontext. Dies kann beispielsweise der Name Ihres Plugins oder Themas sein.
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' );