Ukryj nieprzetłumaczone posty w WordPressie dla lepszego doświadczenia użytkownika
Objaśnienie
Jeśli chcesz ukryć posty, które nie zostały przetłumaczone na język, w którym przeglądają Twoi odwiedzający, ten kod jest dla Ciebie. Działa on poprzez sprawdzenie, który język jest aktualnie aktywny na Twojej stronie, a następnie wyświetla tylko te posty, które zostały przetłumaczone na ten język.
Jak to działa:
- Kod łączy się z systemem zapytań WordPressa, który odpowiada za pobieranie postów do wyświetlenia.
- Sprawdza, czy używasz wtyczki do tłumaczeń, takiej jak Polylang lub WPML.
- Jeśli Polylang jest aktywny, korzysta z aktualnych ustawień językowych Polylang.
- Jeśli WPML jest aktywny, korzysta z aktualnych ustawień językowych WPML.
- Następnie dostosowuje zapytanie, aby pobierać tylko posty dostępne w aktualnym języku.
Gdzie to ma zastosowanie:
- Na głównych stronach witryny, zapewniając, że nieprzetłumaczone posty są ukryte.
- Szczególnie na stronach kategorii, aby odwiedzający widzieli tylko posty w wybranym przez siebie języku.
Ta konfiguracja zapewnia, że Twoi odwiedzający widzą tylko treści, które zostały przetłumaczone, co zapewnia czystsze i bardziej odpowiednie doświadczenie przeglądania.
Kod
<?php
// Function to exclude untranslated posts from queries
function wp_dudecom_exclude_untranslated_posts( $query ) {
if ( ! is_admin() && $query->is_main_query() ) {
// Check if a translation plugin is active
if ( function_exists( 'pll_current_language' ) ) {
$current_language = pll_current_language();
$query->set( 'lang', $current_language );
} elseif ( function_exists( 'icl_object_id' ) ) {
global $sitepress;
$current_language = $sitepress->get_current_language();
$query->set( 'lang', $current_language );
}
}
}
add_action( 'pre_get_posts', 'wp_dudecom_exclude_untranslated_posts' );
// Function to ensure untranslated posts are not displayed in category pages
function wp_dudecom_exclude_untranslated_posts_in_category( $query ) {
if ( ! is_admin() && $query->is_category() && $query->is_main_query() ) {
// Check if a translation plugin is active
if ( function_exists( 'pll_current_language' ) ) {
$current_language = pll_current_language();
$query->set( 'lang', $current_language );
} elseif ( function_exists( 'icl_object_id' ) ) {
global $sitepress;
$current_language = $sitepress->get_current_language();
$query->set( 'lang', $current_language );
}
}
}
add_action( 'pre_get_posts', 'wp_dudecom_exclude_untranslated_posts_in_category' );
?>
Instrukcja
Lokalizacja pliku: Dodaj kod do pliku functions.php
swojego motywu lub do pliku własnej wtyczki.
Wymagania wstępne:
- Upewnij się, że masz zainstalowaną i aktywowaną wtyczkę do tłumaczeń, taką jak Polylang lub WPML.
Kroki wdrożenia:
- Dostęp do panelu WordPress: Zaloguj się do swojego panelu administracyjnego WordPress.
- Przejdź do Edytora motywu: Przejdź do Wygląd > Edytor motywu. Jeśli wolisz użyć własnej wtyczki, przejdź do Wtyczki > Dodaj nową i utwórz nową wtyczkę.
- Otwórz functions.php: W Edytorze motywu znajdź i otwórz plik
functions.php
z listy po prawej stronie. Jeśli używasz własnej wtyczki, otwórz plik wtyczki. - Wstaw kod: Skopiuj podany kod i wklej go na końcu pliku
functions.php
lub pliku własnej wtyczki. - Zapisz zmiany: Kliknij przycisk Aktualizuj plik, aby zapisać zmiany.
- Przetestuj swoją stronę: Odwiedź swoją stronę i przejdź do różnych stron i kategorii, aby upewnić się, że nieprzetłumaczone posty są ukryte w wybranym języku.
Jeśli napotkasz jakiekolwiek problemy lub potrzebujesz dalszej pomocy w tej implementacji lub bardziej zaawansowanej funkcjonalności, rozważ skontaktowanie się z wp-dude.com w celu uzyskania fachowej pomocy.