Zanim zacznę, chcę potwierdzić, że istnieją naprawdę dobre artykuły, których celem jest warunkowe kolejkowanie skryptów na podstawie zawartości strony / postu.
- Programowanie wtyczek WordPress - jak warunkowo uwzględnić CSS i JavaScript tylko wtedy, gdy są potrzebne postom
- Jak załadować JavaScript jak WordPress Master
Są świetne, ale są znacznie bardziej zaawansowane niż to, co chcę robić.
Wydaje mi się, że odpowiedź korzysta z wbudowanej is_page()
funkcji ( kodeksu ), ale kiedy próbuję jej użyć, strona się psuje lub po prostu nie działa.
Myślę, że po prostu wykonuję logikę warunkową w niewłaściwym miejscu.
Oto, co próbowałem dodać do moich funkcji. Php:
function wpse39130_register_more_stylesheets() {
wp_register_style( 'stylesheet_name', get_stylesheet_directory_uri() . '/stylesheet.css' );
}
add_action( 'init', 'wpse39130_register_more_stylesheets' );
function wpse39130_conditionally_enqueue_my_stylesheet() {
// only enqueue on product-services page slug
if ( is_page( 'products-services' ) ) {
wp_enqueue_style( 'stylesheet_name' );
}
}
add_action( 'wp_enqueue_scripts', 'wpse39130_conditionally_enqueue_my_stylesheet' );
Kiedy usuwam część warunkową, arkusz stylów jest z powodzeniem kolejkowany, więc wiem, że działa.
css
conditional-content
wp-enqueue-style
Evan Mattson
źródło
źródło
Odpowiedzi:
Skopiowałem wklejony kod do mojego środowiska programistycznego, zmieniłem tylko nazwę strony i działa dobrze. Czy jesteś pewien, że nie jest kolejkowane i po prostu źle wskazałeś lub że strona nie ma niepoprawnej nazwy?
źródło
To, co masz, jest słuszne - po prostu podpinasz to do niewłaściwego działania. Spróbuj wykonać akcję „wp” zamiast „init”. Kiedy init jest uruchomiony, is_page () jeszcze nie działa poprawnie.
EDYCJA: Mylę się. Myślałem, że masz add_my_stylesheet podpięty do init, ale nie masz. is_page powinien działać z akcji enqueue_scripts. Przepraszam ... kontynuuj ...
źródło
Próbowałem postępować zgodnie z tym samym kodem i zobaczyć, czy mogę uzyskać ten sam wynik, co zauważyłem, że is_page () nie działa zgodnie z oczekiwaniami. więc śledziłem zmienną globalną $ post i sprawdziłem nazwę kategorii / ślimaka, a następnie użyłem prostego porównania tekstu, aby zdecydować o akcji.
Wartość kategorii, jeśli byłaby to tylko jedna kategoria (nie podkategoria)
W podkategorii należy wypełnić następującą zmienną
Teraz w zależności od potrzeb użyj poniższego kodu, tak jak używam do sprawdzenia nazwy podkategorii:
Pełny kod:
Przykład: * Brak dodatkowych CSS http://whatsq.com/category/gst16/
* Dodatkowe CSS z tłem tylko z powyższej kategorii http://whatsq.com/information-technology/shopping-information-technology/mothers-day-gift-plan-show-mom-the-love-with-flowers-and- i więcej/
źródło