Wenn Sie nach einer Suchlösung für Ihre Inhalte suchen, sollten Sie wissen, dass jedes Plugin, das eine FILTERUNG basierend auf Taxonomie oder benutzerdefinierten Feldern durchführt, funktioniert.
Sie können WP_Query mit dem Parameter query[‘s’] verwenden und es funktioniert sofort, um relevante Beiträge für diesen Schlüsselbegriff zu liefern. Der Schlüsselbegriff muss in derselben Sprache vorliegen wie die aktuell angezeigte Sprache beim Laden der Seite. Im Code werden zurückgegebene Beiträge in der Standardsprache (IDs, Titel, Inhalt usw.) angezeigt, aber der ausgegebene Inhalt wird über einen späteren Hook übersetzt, sodass er im Frontend in der übersetzten Sprache angezeigt wird.
Nur Titel und Inhalt von Beiträgen sind in übersetzten Sprachen durchsuchbar, externe benutzerdefinierte Felder wie ACF nicht. Abhängig von Ihrer Konfiguration werden benutzerdefinierte Felder ebenfalls durchsuchbar, wenn Sie den Inhalt von benutzerdefinierten Feldern in den the_content-Hook einfügen können.
Damit die Suche für einen bestimmten Beitrag in einer bestimmten Sprache funktioniert, muss der Inhalt und der Titel dieses Beitrags in derselben Sprache bereits übersetzt sein, bevor die Suche durchgeführt wird. Wenn die automatische Übersetzung aktiv ist, muss ein Beitrag mindestens einmal in der jeweiligen Sprache besucht werden, um von TP indiziert zu werden.
Jedoch werden alle Plugins, die einen Index verwenden, nicht korrekt mit unserem Plugin funktionieren.
Wenn Sie TranslatePress mit einer benutzerdefinierten Suchfunktion kompatibel machen möchten, bei der es nicht von Haus aus funktioniert, finden Sie hier einige Dinge, die Sie wissen sollten.
TranslatePress bindet eine Funktion an den Filter ‘pre_get_posts’, um die Abfrage für die Suchfunktion in einer übersetzten Sprache anzupassen.
Wenn der Abfrageparameter [‘s’] gesetzt ist und die aktuell angezeigte Seite in einer übersetzten Sprache ist, dann führt TP eine Suche durch und gibt die Post-IDs der Standardsprache zurück, bei denen dieser Schlüsselbegriff in den entsprechenden übersetzten Beiträgen gefunden wird.
Es gibt einen Filter, mit dem Sie diesen Hook unabhängig vom Status anwenden können:
!is_admin() && $query->is_main_query() && $query->is_search()
Der TranslatePress-Code sieht wie folgt aus:
if ( ( !is_admin() && $query->is_main_query() && $query->is_search() ) || apply_filters( 'trp_force_search', false ) )
Sie können sich mit ‘trp_force_search’ verbinden, um die Suche unter verschiedenen Bedingungen zu aktivieren. Um die Suche jederzeit zu aktivieren, verwenden Sie den Code:
add_filter('trp_force_search', '__return_true');
Hier ist ein Beispiel, wie Kompatibilität mit einer Suchfunktion hergestellt werden kann, die nicht das Standard-Suchsystem von WordPress mit WP_Query verwendet. Im folgenden Code gibt die Funktion die Beitrags-IDs für einen bestimmten Suchbegriff in einer übersetzten Sprache zurück.
add_filter( 'aws_search_results_products_ids', 'trp_aws_search_results_products_ids', 10, 2 );
function trp_aws_search_results_products_ids( $posts_ids, $s ){
global $TRP_LANGUAGE;
$trp = TRP_Translate_Press::get_trp_instance();
$trp_settings = $trp->get_component( 'settings' );
$settings = $trp_settings->get_settings();
if ( $TRP_LANGUAGE !== $settings['default-language'] ) {
$trp_search = $trp->get_component( 'search' );
$search_result_ids = $trp_search->get_post_ids_containing_search_term($s, null);
if (!empty ( $search_result_ids) ) {
return $search_result_ids;
}
}
return $posts_ids;
}
Es kann vorkommen, dass Sie für eine bestimmte Suchanfrage in einer sekundären Sprache kein Suchergebnis erhalten. In diesem Fall ist unklar, ob TranslatePress diesen bestimmten Beitrag oder diese Seite indexieren konnte (aus verschiedenen Gründen, wie z. B. der Verwendung von Page-Buildern, die keine klassische Abfrageschleife haben) oder ob etwas anderes den Fehler verursacht.
Um zu sehen, ob eine bestimmte Beitrags-ID Zeichenfolgen für eine bestimmte Sprache indiziert hat, können Sie dieses kleine Plugin installieren.
Besuchen Sie dann WordPress Admin -> Tools -> TRP Search Debug

Merkmale: