it-swarm.com.de

Ändern der Bezeichnungen des Admin-Menüs

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!

42
Adam

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

66
Norcross

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

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

3
Bainternet

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.

3
Ross

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