Übersetzung von benutzerdefinierten Beitragstypen und Taxonomien

In diesem Tutorial erklären wir, wie du benutzerdefinierte Beitragstypen und Taxonomien in MultilingualPress übersetzen kannst. Um dies zu demonstrieren, werden wir eine WordPress Multisite-Installation mit zwei verbundenen Seiten erstellen.

Wir werden das Plugin Custom Post Type UI verwenden, um einen benutzerdefinierten Beitragstyp und eine Taxonomie zu erstellen. Der Prozess ist derselbe für jedes andere Plugin, das benutzerdefinierte Beitragstypen erstellt, oder wenn diese manuell mit register_post_type und register_taxonomy registriert werden.

Erstellen einer WordPress Multisite mit zwei verbundenen Seiten

Um eine WordPress Multisite einzurichten, kannst du diesem Tutorial folgen: WordPress Multisite installieren und einrichten. Unser Guide Erste Schritte mit MultilingualPress 3 erklärt, wie die Webseiten erstellt und mit MultilingualPress verbunden werden. Wir haben 2 Seiten erstellt ‒ eine für Englisch und eine für Deutsch ‒  und sie miteinander verbunden, wie auf dem Screenshot unten zu sehen ist.

Zwei verbundene Sprachseiten im Backend einer WordPress Multisite
Zwei Websites in einer WordPress-Multisite für Englisch und Deutsch, die mit MultilingualPress verbunden sind[

Installieren und Einrichten des Plugins Custom Post Type UI

Im nächsten Schritt installieren und aktivieren wir das Plugin Custom Post Type UI. Hinsichtlich der Plugin-Aktivierung müssen wir entscheiden, ob es im Netzwerk oder auf jeder Seite einzeln aktiviert werden soll. Die Entscheidung wird von der Fähigkeit des Plugins abhängen, Multisite zu unterstützen oder nicht. In diesem Fall hat Custom Post Type UI keine Multisite-Unterstützung (zumindest in der kostenlosen Version), so dass wir es auf jeder Seite aktivieren müssen. Gehe dazu in das Dashboard jeder Seite und aktiviere das Plugin über die Seite Plugins.

Bitte beachten Sie: Das Plugin, das Sie zum Erstellen des benutzerdefinierten Beitragstyps verwenden, muss in der Multisite-Umgebung Netzwerk aktiviert sein. Oder zumindest muss es auch auf der Hauptnetzwerkseite aktiviert sein, damit benutzerdefinierte Beiträge in allen Netzwerken verfügbar sind.

Installation des Plugins Custom Post Type UI über das WordPress Backend, Plugins
Installiere das Plugin Custom Post Type UI, welches wir wir zum Erstellen benutzerdefinierter Beitragstypen und Taxonomien verwenden möchten.

Erstellen eines neuen benutzerdefinierten Beitragstyps und einer Taxonomie

Wir erstellen zunächst den benutzerdefinierten Beitragstyp und die Taxonomie auf Seite 1 und kopieren sie anschließend auf Seite 2. Wir nennen unseren benutzerdefinierten Beitragstyp Rezepte und die Taxonomie Zutaten.

Erstellen eines Beitragstypen Rezepte im Backend mit CPT UI
Wir erstellen einen benutzerdefinierten Inhaltstyp ‒ Rezepte
Erstellen einer Taxonomie Zutaten im Backend mit CPT UI
Wir erstellen eine benutzerdefinierte Taxonomie ‒ Zutaten

Um den benutzerdefinierten Beitragstyp und die Taxonomie zu kopieren, verwenden wir die Export/Import-Funktionalität auf der Seite Tools des Plugins Custom Post Type UI.

 CPT UI Plugin Tools Seite zum Exportieren und Importieren von Inhaltstypen
Kopiere den Inhalt des Feldes Export Post Types Settings von Seite 1 …
 CPT UI Plugin Tools Seite zum Exportieren und Importieren von Inhaltstypen
.. und kopiere ihn in das Feld Import Post Types auf Seite 2

Im nächsten Schritt führen wir den gleichen Export/Import für Taxonomien über die Registerkarte Taxonomien durch.

Aktivierung von benutzerdefinierten Beitragstypen und Taxonomien in MultilingualPress

Jetzt, da wir auf beiden Webseiten benutzerdefinierte Beitragstypen und Taxonomien erstellt haben, können wir MultilingualPress so konfigurieren, dass sie übersetzt werden können. Rufe dazu Meine Websites → Netzwerkverwaltung → Einstellungen → MultilingualPress auf und aktiviere den benutzerdefinierten Beitragstypen und die Taxonomie in den entsprechenden Tabs, in unserem Fall Rezepte und Zutaten.

MultilingualPress-Einstellungen für übersetzbare Inhaltstypen
Aktiviere “Rezepte” über die Registerkarte “Übersetzbare Inhaltstypen”
MultilingualPress-Einstellungen für übersetzbare Taxonomien
Aktiviere “Zutaten” auf der Registerkarte “Übersetzbare Taxonomien”

Einstellen des Inhaltstyp-Slugs auf jeder Seite

Bevor du fortfährst, beachte bitte, dass MultilingualPress keine benutzerdefinierten Beitragstyp-Slugs übersetzt. Das sollte bei der Registrierung gemacht werden über die Rewrite-Parameter von register_post_type (z. B. ‘rewrite’ => [‘slug’ => esc_html__(‘my-cpt’, ‘text-domain-here’)] ) und mit Sprachdateien (.po/.mo, .pot). Wenn du die Slugs richtig übersetzt hast, kannst du MultilingualPress mitteilen, welcher Slug auf jeder Seite verwendet werden soll.

Falls du die Archivseite auch für deinen benutzerdefinierten Beitragstyp festlegen und dann übersetzen möchtest, solltest du den has_archive-Parameter bei der Registrierung des Beitragstyps ebenfalls auf true setzen; es sollte kein benutzerdefinierter Slug für Archivseiten angegeben werden.

Die oben beschriebene Lösung reicht jedoch nicht aus, wenn die in deinem Profil eingestellte Sprache und die auf einer bestimmten Unterseite gewählte Sprache nicht identisch sind.

Für den Fall, dass die Sprache deines Profils und die Sprache der Unterseite unterschiedlich sind, musst du noch einen Codeschnipsel in deinen Code einfügen. Schau dir als Beispiel den folgenden Auszug in der functions.php-Datei an:

/**
* Updates the rewrite => slug argument when registering a post type.
*
* Will use the option from the "Post Type Slugs" tab the 
* Network Settings of a website, in case it’s not empty.
*
* @see register_post_type()
*
* @param array $args An array of arguments that will be passed to register_post_type().
* @param string $postType The name/slug of the post type.
*
* @return array Updated arguments.
*/
add_filter( 'register_post_type_args', function( $args, $postType ) {

if ( ( isset( $args['_builtin' ] ) && $args['_builtin'] )
|| ( isset( $args['public'] ) && ! $args['public'] )
) {
    return $args;
}
$slugSettings = get_network_option(
            0,
            \Inpsyde\MultilingualPress\Core\Admin\PostTypeSlugsSettingsRepository::OPTION,
            []
        );

        $siteId = get_current_blog_id();

        if (!empty($slugSettings[$siteId][$postType]) && isset($args['rewrite'], $args['rewrite']['slug'])) {
            $args['rewrite']['slug'] = $slugSettings[$siteId][$postType];
        }

        return $args;
}, 10, 2 );

Bei diesem Filter spielt es keine Rolle, welche Sprache in den Spracheinstellungen ausgewählt ist: es wird der richtige Beitragstyp-Slug verwendet.

Jetzt können wir unseren Beitragstyp-Slug einstellen.

Gehe dazu auf Meine Websites → Netzwerkverwaltung →Websites und bearbeite jede Seite. Gib unter Post Type Slugs den Wert des benutzerdefinierten Beitragstyp-Slug für unseren benutzerdefinierten Beitragstyp Rezepte ein. In diesem Fall verwenden beide Seiten den gleichen Slug, aber diese Funktion ermöglicht es dir, auf jeder Seite einen anderen übersetzten Slug einzurichten.

Bedenken aber, dass du, wenn du einen benutzerdefinierten Beitragstyp registrierst und den Slug dieses Beitragstyps nicht übersetzen möchtest, selbst in diesem Fall den Wert im Tab Post Type Slugs eintragen solltest, damit das Sprachmenü korrekt funktioniert.

Post Type Slug Menü im Backend unter Netzwerkverwaltung, Websites
Gib auf jeder Seite einen Slug für benutzerdefinierten Beitragstypen an

Erstellen einiger benutzerdefinierte Beitragstypen und Taxonomie-Terms

Wir können nun damit beginnen, Zutaten (Taxonomie-Terms) und Rezepte (benutzerdefinierte Beiträge) auf Seite 1 zu erstellen. Anschließend verwenden wir die Metabox für die Übersetzung von MultilingualPress, um von dort aus die Übersetzungen für Seite 2 zu erstellen. Es ist auch möglich, bereits bestehende Inhalte auf Seite 2 in derselben Metabox zu verbinden.

Zutaten-Menü unter Rezepte im Backend
Erstelle einige Zutaten auf Seite 1
Rezept bearbeiten im Rezepte-Menü im Backend
Erstelle Rezepte und weise Zutaten auf Seite 1 zu

Verbinden von Taxonomie-Terms mit MultilingualPress

Nachdem wir die Taxonomie-Terms auf den verschiedenen Sprachseiten erstellt haben, müssen wir sie miteinander verbinden.  Gehe zum Dashboard von Seite 1, wähle Rezepte → Zutaten und bearbeite einen Term. In der Übersetzungs-Metabox kannst du Erstelle einen neuen Term oder Wähle einen vorhandenen Term auswählen. In diesem Fall wählen wir Erstelle einen neuen Term. Wir können die Felder in der Registerkarte Term-Daten manuell ausfüllen, ansonsten werden die Werte automatisch generiert.

MultilingualPress Metabox im Backend beim Bearbeiten einer Zutat
Verbinde Taxonomie-Terms in der MultilingualPress-Metabox “Beziehung”

Verbinden benutzerdefinierter Beitragstypen mit MultilingualPress

Das Verbinden von benutzerdefinierten Beitragstypen ist ähnlich wie das Verbinden von Taxonomie-Terms. Gehe zum Dashboard von Seite 1, wähle Rezepte im Menü und bearbeite eines.  In der Übersetzungs-Metabox kannst du Erstelle ein neues Rezept oder Wähle ein vorhandenes Rezept wählen. Wir wählen Erstelle ein neues Rezept. Du kannst die Werte manuell einstellen und erweiterte Funktionen wie Überschreibe das Beitragsbild auf der Registerkarte Fortgeschritten verwenden.

MultilingualPress Übersetzungsmetabox im Backend
Verbinde benutzerdefinierte Beitragstypen mit MultilingualPress

Wenn du nun auf Seite 2 gehst, siehst du ein neues Rezept. Bearbeite  es und wählen in der Metabox Zutaten eine übersetzte Taxonomie aus:

Zutaten-Taxonomie-Metabox rechts beim Bearbeiten eines Rezepts
Wähle Zutaten Taxonomie-Terms in der Taxonomie-Metabox aus

Erstellen eines Menüs zur Sprachnavigation auf jeder Seite

Nun, da wir einige Rezepte und Zutaten zwischen beiden Seiten verbunden haben, erstellen wir auf jeder Seite ein Menü, damit der Benutzer zwischen den Sprachen wechseln kann. Im Menü werden wir MultilingualPress-Sprachelemente hinzufügen.

Sprachen-Tab unter Design, Menüs
Erstelle auf jeder Seite ein Sprachmenü, in dem Benutzer die Sprache wechseln und füge Sprachelemente hinzu

Erstellen einer Permalink-Struktur

Bevor wir prüfen, ob die Sprachumschaltung funktioniert, müssen wir sicherstellen, dass unsere Permalink-Struktur korrekt konfiguriert ist. Je nachdem, ob es sich um eine neue Multisite-Installation handelt, kann es sein, dass unser Permalink einen von WordPress hinzugefügten /blog/-Slug enthält. Der beste Ansatz für den Moment ist, diesen Teil im Permalink einfach loszuwerden:

Einstellungen, Permalinks im WordPress Backend
/blog/ von URLs entfernen

Ein schneller Tipp zum Entfernen des /blog/-Slugs aus dem Permalink besteht darin, in Einstellungen → Permalinks die Checkbox Einfach auszuwählen und zu speichern. Wähle anschließend Benutzerdefiniert und entferne dort den /blog/-Slug. Du musst den /blog/-Slug. auf beiden Seiten entfernen. Vergiss nicht, einen 301 Redirect für die alten Slugs auf die neuen Slugs einzurichten.

Seite eines benutzerdefinierten Beitrags öffnen und Sprache umstellen

Jetzt, da alles korrekt eingerichtet ist, ist es an der Zeit zu prüfen, ob wir von einer benutzerdefinierten Beitrags-Seite aus die Sprache wechseln können. Gehe auf Seite 1 und sieh dir eines der Rezepte an, die du eingerichtet hast. Wechsle dann die Sprache im Menü. Du solltest nun auf die übersetzte Version weitergeleitet werden. Mache dasselbe auch für die Taxonomie-Terms.

Rezepte ansehen über Rezepte, Alle Rezepte im Backend
Rezeptbeitrag ansehen…
Sprachwechsler im Frontend
… und Sprache wechseln
Zutat ansehen über Rezepte, Zutaten im Backend
Eine Zutat ansehen…
Sprachwechsler im Frontend
… und Sprache wechseln

Das ist alles, was zu tun ist, um in MultilingualPress Übersetzungen von benutzerdefinierten Beitragstypen und Taxonomien einzurichten. Wenn du unsicher bist oder weitere Unterstützung benötigst, lass es uns einfach wissen.

 


WooCommerce & MultilingualPress & Central Stock for WooCommerce

Erstelle den perfekten mehrsprachigen Shop mit WooCommerce und unseren Plugins MultilingualPress und Central Stock for WooCommerce!