Dieses Thema ist gelöst. Hier finden Sie eine Beschreibung des Problems und der Lösung.
Problem: Sie versuchen, die Seiten-URL zu übersetzen, erwarten jedoch, dass die URL automatisch aus dem Titel generiert wird, was nicht der Fall ist. Stattdessen bleibt der ursprüngliche Slug erhalten. Solution: Wir haben ein benutzerdefiniertes PHP-Skript vorbereitet, das Ihnen hilft, die Slugs aller übersetzten Beiträge eines bestimmten Beitragstyps in WPML neu zu generieren. Dieses Skript erstellt auch eine CSV-Datei mit den alten und neuen URLs, um Weiterleitungen einzurichten, falls erforderlich.
<?php<br />/**<br /> * Regenerate slugs for all WPML-translated posts of a given post type<br /> * and capture old/new URLs for redirects.<br /> *<br /> * Run via WP-CLI:<br /> * wp eval-file regenerate-slugs-with-redirects.php your_post_type<br /> *<br /> * Example:<br /> * wp eval-file regenerate-slugs-with-redirects.php page<br /> */<br /><br />if (empty($argv[1])) {<br /> echo "Usage: wp eval-file regenerate-slugs-with-redirects.php <post_type>\n";<br /> exit(1);<br />}...<br /></post_type>
Bitte beachten Sie, dass dieses Skript „as is“ bereitgestellt wird und nicht in Ihrer Umgebung getestet wurde. Die Ausführung oder Anpassung solcher benutzerdefinierten Skripte liegt außerhalb unseres regulären Supportumfangs. Für weitergehende Entwicklungen oder individuelle Unterstützung können Sie sich an unsere empfohlenen Dienstleister über das WPML Contractors System wenden.
Wenn diese Lösung für Sie nicht relevant ist, weil sie veraltet ist oder nicht auf Ihren Fall zutrifft, empfehlen wir Ihnen, ein neues Support-Ticket zu eröffnen. Wir empfehlen Ihnen auch, die bekannten Probleme zu überprüfen, die Version der dauerhaften Lösung zu verifizieren und zu bestätigen, dass Sie die neuesten Versionen von Themes und Plugins installiert haben.
Dies ist das technische Support-Forum für WPML – das mehrsprachige WordPress-Plugin.
Mitlesen können alle, doch nur WPML-Kunden können hier Fragen veröffentlichen. Das WPML-Team antwortet im Forum an 6 Tagen pro Woche, 22 Stunden am Tag.
Hintergrund des Themas:
Ich versuche, die Seiten-URL zu übersetzen. Wir hatten vor den Auto-Übersetzungen die Option aktiviert, bei der der Slug in die Übersetzung aufgenommen wird und nicht automatisch aus dem Titel erstellt wird. Der Link zur Seite, auf der das Problem zu sehen ist: versteckter Link
Die Symptome:
Ich habe erwartet, die URL versteckter Link poisoning/ zu sehen, aber stattdessen habe ich die URL versteckter Link erhalten.
Fragen:
Warum wird die URL nicht wie erwartet übersetzt?
Wie kann ich die URL-Übersetzung korrekt einrichten?
Der vollständige Code in
`wp-content/plugins/sitepress-multilingual-cms/inc/translation-jobs/helpers/wpml-save-translation-data-action.class.php`
sollte folgendermaßen aussehen:
// Es handelt sich um ein Update und der Benutzer möchte die URLs nicht übersetzen – also die URL nicht ändern.
if ( $element_id ) {
if ( $sitepress->get_setting( 'translated_document_page_url' ) !== 'translate' ) {
$postarr['post_name'] = $wpdb->get_var(
$wpdb->prepare(
"SELECT post_name
FROM {$wpdb->posts}
WHERE ID=%d
LIMIT 1",
$element_id
)
);
}
$existing_post = get_post( $element_id );
$postarr['post_date'] = $existing_post->post_date;
$postarr['post_date_gmt'] = $existing_post->post_date_gmt;
// Neue Bedingung hier hinzugefügt
if ( $sitepress->get_setting( 'translated_document_page_url' ) == 'auto-generate' ) {
$postarr['post_name'] = sanitize_title_with_dashes(
$wpdb->get_var(
$wpdb->prepare(
"SELECT post_title
FROM {$wpdb->posts}
WHERE ID=%d
LIMIT 1",
$element_id
)
)
);
}
}
Damit wird sichergestellt:
* Vorhandene Veröffentlichungsdaten bleiben unverändert.
* URLs werden beibehalten, außer wenn sie ausdrücklich auf „auto-generate“ gesetzt sind.
vielen Dank, dass Sie das Ticket offen gelassen haben. Wir konnten den Code inzwischen testen.
Dabei sind wir folgendermaßen vorgegangen:
- Original Inhalt geringfügig geändert
- Permalink geringfügig geändert
- In den WPML Settings die Option "Seiten URL" von "Übersetzen" auf "Aus Titel übernehmen" gesetzt
- Inhalt mit PTC erneut in die Übersetzung aufgenommen
Leider hat der Editor die Veränderung der URL ignoriert. Auch die Umstellung der Seiten URL Einstellung von "Übersetzen" zu "Aus Titel übernehmen" wurde vom Editor missachtet.
WPML zeigt zwar an, dass die Übersetzung aktualisiert werden muss, jedoch wenn man den Inhalt in die Auto-Übersetzung aufnimmt, wird der Inhalt als vollständig übersetzt angezeigt. (Siehe Screenshot)
Da dieser Code die Funktionsweise von WPML ändert und lediglich ein Workaround ist, wurden möglicherweise nicht alle Szenarien abgedeckt, und ich bin mir nicht sicher, ob das überhaupt mit dem Workaround erreichbar ist.
Daher meine Bitte in diesem Sandbox: versteckter Link
Könnten Sie bitte Folgendes tun:
* Übersetzen Sie automatisch eine der Seiten unter Verwendung der gleichen Slug-Übersetzungsoption, wie Sie es ursprünglich auf Ihrer Website gemacht haben
* Ändern Sie anschließend die Einstellung und versuchen Sie, die Seite erneut zu übersetzen
Ich habe Guthaben für die Übersetzung hinzugefügt, sodass Sie die Private Translation Cloud (PTC) verwenden können, um den Auftrag automatisch zur Übersetzung zu senden über: versteckter Link
vielen Dank für das Einrichten der Sandbox Site.
Ich habe den Vorgang zunächst wie folgt wiederholt:
- URL auf "Übersetzen" gestellt.
- Auto-Übersetzung im Translation Management für den CPT gestartet
Ergebnis: Die URL wurde nicht übersetzt
Daraufhin habe ich die Einstellung geändert:
- Original Inhalt geringfügig geändert
- In den WPML Settings die Option "Seiten URL" von "Übersetzen" auf "Aus Titel übernehmen" gesetzt
- Inhalt mit PTC erneut in die Übersetzung aufgenommen
Ergebnis: Die URL wurde aus dem Titel übersetzt
Video: versteckter Link
Da wir nicht die Möglichkeit haben, alle CPTs im Original anzupassen, hatte ich den Vorgang ohne Anpassung des Originals wiederholt.
Ergebnis: CPT kann nicht in die Übersetzung aufgenommen werden, da er als bereits übersetzt erkannt wird.
Video: versteckter Link (Video hat zwischenzeitlich eine Störung)
Nun hatten wir auf unserer Originalseite versucht, manuelle Anpassungen an den automatisch übersetzten CPTs vorzunehmen. Jedoch zeigt der Übersetzungseditor die vorhandenen Übersetzungen nicht an (siehe Bild):
Möchten Sie, dass ich mich zunächst auf das Problem konzentriere, warum die vorhandenen Übersetzungen im Translation Editor auf der Live-Seite nicht angezeigt werden?
Falls ja, könnten Sie mir bitte WordPress-Zugangsdaten sowohl für die Test- als auch für die Produktionsseite bereitstellen, damit ich den Unterschied prüfen und die Ursache genauer eingrenzen kann?
Wenn ich versteckter Link
öffne, sehe ich, dass die Übersetzungen tatsächlich vorhanden sind.
Wenn ich jedoch versteckter Link
öffne und auf das „Zahnrad“ Symbol klicke, um den Übersetzungseditor zu öffnen, wird der Erweiterte Übersetzungseditor geöffnet, und höchstwahrscheinlich wurden diese Inhalte nicht mit dem ATE, sondern mit dem CTE oder sogar manuell übersetzt. https://wpml.org/documentation/translating-your-contents/using-the-translation-editor/
Unter versteckter Link
wurde zwar der „Erweiterte Übersetzungseditor“ aktiviert, aber auch die Option „Auch für alte Übersetzungen verwenden, die mit dem klassischen Editor erstellt wurden“.
Da der ATE jedoch keine CTE-Übersetzungen erkennen kann, sollte diese Option nicht aktiviert sein.
Alle Übersetzungen auf der Website wurden ausschließlich mit PTC durchgeführt. Da der Permalink nicht übersetzt wurde und die Übersetzungen der Metabschreibungen überarbeitet werden müssen, hatten wir vor, diese Anpassungen manuell zu ergänzen.
Als Übersetzungsmethode wurde jedoch nur PTC verwendet, daher haben wir die Einstellung „Auch für alte Übersetzungen verwenden" ignoriert.
Haben Sie all dies zuerst unter versteckter Link
übersetzt oder unter einer anderen URL? Möglicherweise ist die Migration des Translation Memory aus irgendeinem Grund fehlgeschlagen. Wir können sie über unser System zusammenführen, aber ich muss die URL bestätigen.
Ich möchte kurz bestätigen, dass ich das geschilderte Verhalten korrekt zusammengefasst habe, bevor ich den Fall an unser 2nd-Tier-Team zur weiteren Überprüfung weiterleite:
1. Auf Ihrer Testseite versteckter Link ist unter WPML → Einstellungen → Übersetzte Dokumente → Seiten-URL zunächst die Option „Übersetzen“ ausgewählt.
2. Sie erstellen und übersetzen automatisch einen benutzerdefinierten Beitragstyp (z. B. mit dem Titel „Zinkintoxikation Zinkvergiftung“).
3. Der übersetzte Slug wird nicht automatisch generiert – er bleibt identisch mit dem Original (z. B. /zinkintoxikation-zinkvergiftung/).
4. Danach wird die Einstellung auf „Automatisch aus dem Titel generieren“ geändert.
5. Wenn Sie den Originalbeitrag leicht bearbeiten (z. B. ein Zeichen hinzufügen) und erneut zur automatischen Übersetzung senden, wird der übersetzte Slug korrekt aktualisiert.
6. Wenn Sie den Beitrag jedoch ohne Änderungen erneut zur Übersetzung senden, wird der Slug nicht aktualisiert, und die Übersetzung wird als abgeschlossen markiert.
Beispielseite mit nicht aktualisiertem Slug: versteckter Link
Zugehöriges Beispiel aus der Live-Seite: versteckter Link
Könnten Sie bitte bestätigen, ob diese Zusammenfassung das Problem korrekt beschreibt?
Sobald ich Ihre Bestätigung habe, leite ich den Fall an unser 2nd-Tier-Team weiter, um zu prüfen, ob es möglich ist, dass der Slug auch ohne Änderung des Originals aktualisiert wird.
Das ist soweit alles korrekt, bis auf Punkt Nr. 5.
Wenn wir den Originalbeitrag leicht bearbeiten (z. B. ein Zeichen hinzufügen) und erneut zur automatischen Übersetzung senden, wird der übersetzte Slug auch nicht korrekt aktualisiert, also nicht übersetzt.
1. Gehen Sie auf Ihrer Testseite [versteckter Link) zu WPML → Einstellungen → Übersetzte Dokumente → Seiten-URL und stellen Sie sicher, dass die Option „Übersetzen“ ausgewählt ist.
2. Erstellen und übersetzen Sie automatisch einen benutzerdefinierten Beitragstyp (zum Beispiel mit dem Titel „Zinkintoxikation Zinkvergiftung“).
3. Der übersetzte Slug wird nicht automatisch generiert – er bleibt identisch mit dem Original (z. B. /zinkintoxikation-zinkvergiftung/).
4. Ändern Sie anschließend die Einstellung auf „Automatisch aus dem Titel generieren“.
5. Wenn Sie den Originalbeitrag leicht bearbeiten (zum Beispiel ein Zeichen hinzufügen) und ihn erneut zur automatischen Übersetzung senden, wird der übersetzte Slug weiterhin nicht aktualisiert oder korrekt übersetzt.
6. Wenn Sie den Beitrag ohne Änderungen erneut zur Übersetzung senden, wird der Slug ebenfalls nicht aktualisiert, und die Übersetzung wird als abgeschlossen markiert.
Ich werde weitere Tests machen und mich mit unserer zweiten Ebene beraten und mich dann wieder bei Ihnen melden.