Mit WPML können Sie eindeutige URLs für benutzerdefinierte Inhalte in verschiedenen Sprachen benutzen. Dazu gehört die Übersetzung des Beitrags-Slugs, ebenso wie der Name des benutzerdefinierten Beitragstyps.

Zu den URLs für benutzerdefinierte Beitragstypen gehören der Name des Beitragstyps und der Seitenname. Für gewöhnlich sehen benutzerdefinierte Beitragstypen in anderen Sprachen so aus:

  • /houses/my-green-house/
  • /casas/mi-casa-verde/

Der erste Teil der URL, in fett, ist der Beitragstyp. Der zweite Typ ist der Seitenname.

Um Seitennamen zu übersetzen, klicken Sie auf den Bearbeiten-Button neben dem Permalink-Feld im Beitrags-Editor. Da WPML für jede Sprache einen anderen Beitrag benutzt, können Sie die Namen individuell einstellen.

Bearbeitung von Seiten-Permalinks
Bearbeitung von Seiten-Permalinks

Übersetzung der Namen benutzerdefinierter Beitragstypen

Um es WPML zu erlauben, die Namen benutzerdefinierter Beitragstypen zu übersetzen, müssen Sie das String Translation-Modul verwenden.

Definieren benutzerdefinierter Beitragstypen in PHP

Wenn Sie benutzerdefinierte Beitragstypen manuell über PHP registrieren, erkennt WPML diese Abrufe und registriert den Slug zur Übersetzung.

Definieren benutzerdefinierter Beitragstypen mit Types

Um ohne PHP benutzerdefinierte Beitragstypen zu definieren, können Sie unser Types-Plugin verwenden. Types definiert benutzerdefinierte Beitragstypen automatisch, sodass Sie sie in WPML übersetzen können.

Gehen Sie auf Types und bearbeiten Sie einen benutzerdefinierten Beitragstyp. Wenn dieser nicht für Namensübersetzung aktiviert ist, sehen Sie einen Link zu WPMLs Einrichtungsbildschirm:

Types verlinkt auf WPML zur Einrichtung der Slug-Lokalisierung
Types verlinkt auf WPML zur Einrichtung der Slug-Lokalisierung

Aktivierung der Lokalisierung des Namens benutzerdefinierter Beitragstypen in WPML

Gehen Sie als nächstes auf WPML -> Einstellungsseite. Dort sehen Sie einen neuen Abschnitt für die Lokalisierung von Slugs.

Die Checkliste zur Aktivierung der Lokalisierung von Namen benutzerdefinierter Beitragstypen:

1. Machen Sie den benutzerdefinierten Beitragstyp übersetzbar

Stellen Sie den benutzerdefinierten Beitragstyp auf Übersetzen ein
Stellen Sie den benutzerdefinierten Beitragstyp auf Übersetzen ein

2. Aktivieren Sie Slug-Übersetzung für die Seite

Aktivierung der Übersetzung benutzerdefinierter Beitrags- und Taxonomie-Basis-Slugs
Aktivierung der Übersetzung benutzerdefinierter Beitrags- und Taxonomie-Basis-Slugs

3. Wählen Sie aus, dass in verschiedenen Sprachen verschiedene Slugs benutzt werden sollen

Klicken Sie auf das Kontrollkästchen, um die Lokalisierung aller Namen benutzerdefinierter Beitragstypen zu erlauben.
Klicken Sie auf das Kontrollkästchen, um die Lokalisierung aller Namen benutzerdefinierter Beitragstypen zu erlauben.

Jetzt sind Sie bereit, die Namen benutzerdefinierter Beitragstypen zu übersetzen. Geben Sie die Übersetzungen ein und drücken Sie auf Speichern, dann sollten sie in den URLs erscheinen.

Übersetzung benutzerdefinierter Beitragstyparchive

Wenn Sie benutzerdefinierte Beitragstypen manuell registrieren, können Sie in WordPress einen eigenen Archiv-Slug einstellen, nutzen Sie dazu:

has_archive

Ab Version 3.2 erlaubt WPML das Setzen von has_archive in einem String. Wenn der String-Wert jedoch auf etwas anderes als rewrite['slug'], eingestellt ist, oder der Slug des benutzerdefinierten Beitragstypsnamens nicht eingestellt ist, wird der Archiv-Slug nicht übersetzbar sein.

Beispiel Code 1:

In diesem Code-Beispiel haben wir 'has_archive' => true eingestellt. Wenn wir annehmen, dass der englische Slug book im Spanischen in libro übersetzt wurde, befinden sich die Archivlinks hier:

  • Englisch (Voreingestellte Sprache): http://mydomain.tld/book/
  • Spanisch (Zweitsprache): http://mydomain.tld/es/libro/
add_action( 'init', 'create_post_type' );
function create_post_type() {
 register_post_type( 'book',
 array(
 'labels' => array(
 'name' => __( 'Books', 'textdomain' ),
 'singular_name' => __( 'Book', 'textdomain' )
 ),
 'public' => true,
 'has_archive' => true,
 'publicly_queryable' => true,
 'exclude_from_search' => false,
 'show_ui' => true,
 'show_in_menu' => true,
 'query_var' => true,
 'rewrite' => array('slug' => 'book'),
 'supports' => array('title','editor', 'custom-fields','thumbnail')
 )
 );
}

Beispiel Code 2:

In diesem Code-Beispiel haben wir einen bestimmten String für den Parameter 'has_archive' => 'my-books' eingestellt. Die Archivlinks sind nun wie folgt:

  • Englisch (voreingestellte Sprache): http://mydomain.tld/my-books/
  • Spanisch (Zweitsprache): http://mydomain.tld/es/my-books/
add_action( 'init', 'create_post_type' );
function create_post_type() {
 register_post_type( 'book',
 array(
 'labels' => array(
 'name' => __( 'Books', 'textdomain' ),
 'singular_name' => __( 'Book', 'textdomain' )
 ),
 'public' => true,
 'has_archive' => 'my-books', // Nutzen Sie für diesen Parameter nicht die gettext-Funktionen
 'publicly_queryable' => true,
 'exclude_from_search' => false,
 'show_ui' => true,
 'show_in_menu' => true,
 'query_var' => true,
 'rewrite' => array('slug' => 'book'),
 'supports' => array('title','editor', 'custom-fields','thumbnail')
 )
 );
}