Tylko do wiadomości, to pytanie prawdopodobnie graniczy ze zbyt zlokalizowaną , ponieważ jest specyficzne dla tematu enologii.
To powiedziawszy, tutaj myślę, że masz problem: enologia kolejkuje dwa arkusze stylów:
style.css
, bezpośrednio w głowie dokumentu (a więc przed uruchomieniem wp_head()
)
{varietal}.css
, wp_enqueue_scripts
z priorytetem 11
, w functions/dynamic-css.php
:
/**
* Enqueue Varietal Stylesheet
*/
function oenology_enqueue_varietal_style() {
// define varietal stylesheet
global $oenology_options;
$oenology_options = oenology_get_options();
$varietal_handle = 'oenology_' . $oenology_options['varietal'] . '_stylesheet';
$varietal_stylesheet = get_template_directory_uri() . '/varietals/' . $oenology_options['varietal'] . '.css';
wp_enqueue_style( $varietal_handle, $varietal_stylesheet );
}
// Enqueue Varietal Stylesheet at wp_print_styles
add_action('wp_enqueue_scripts', 'oenology_enqueue_varietal_style', 11 );
Odmienny arkusz stylów, który stosuje „skórkę”, kolejkuje w pierwszej kolejności 11
, aby mieć pewność, że podstawowy arkusz stylów zostanie style.css
załadowany jako pierwszy , a arkusz stylów ładuje się drugi , aby spowodować prawidłową kaskadę.
Tak więc, jeśli chcesz zastąpić arkusz stylów odmian , po prostu umieść drugi arkusz stylów po arkuszu stylów odmian; tj. z priorytetem co najmniej 12
lub większym.
Edytować
Aby udzielić bardziej ogólnej odpowiedzi, na bardziej ogólne pytanie:
Aby zastąpić kolejkę arkuszy stylów nadrzędnych, musisz wiedzieć dwie rzeczy:
- Hak akcja , w której arkusz stylów jest skolejkowany
- Priorytet przy której zwrotna jest dodany do haka
Funkcje kolejki ( wp_enqueue_script()
/ wp_enqueue_style()
) mogą być poprawnie wykonywane w dowolnym miejscu między init
hakiem a wp_print_scripts
/ hakiem wp_print_styles
. ( Semantycznie poprawny zaczep, przy którym można wykonywać wp_enqueue_*()
funkcje, jest obecnie wp_enqueue_scripts
.) Ta lista zawiera następujące akcje (między innymi; są to tylko zwykli podejrzani):
init
wp_head
wp_enqueue_scripts
wp_print_scripts
/wp_print_styles
(Należy pamiętać, że wp_enqueue_scripts
, wp_print_styles
i wp_print_scripts
wszystko ogień wewnątrz od wp_head
, na priorytet konkretnego .
Aby zastąpić arkusz stylów motywu nadrzędnego, musisz wykonać jedną z następujących czynności:
- Usuń kolejkę arkusza stylów nadrzędnych za pomocą
wp_dequeue_style( $handle )
- Usuń wywołanie zwrotne motywu nadrzędnego, który kolejkuje styl, za pośrednictwem
remove_action( $hook, $callback )
Użyj kaskady CSS, aby zastąpić arkusz stylów motywu nadrzędnego, zaczepiając wp_enqueue_style()
wywołanie arkusza stylów motywu podrzędnego do tego samego zaczepu o niższym priorytecie lub późniejszego .
W przypadku tej ostatniej opcji, jeśli motyw nadrzędny używa:
`add_action( 'wp_enqueue_scripts', 'parent_theme_enqueue_style', $priority )`
... wtedy Motyw Dziecka użyłby:
`add_action( 'wp_enqueue_scripts', 'child_theme_enqueue_style', {$priority + 1} )`
jedynym sposobem na zagwarantowanie, że moje style mają ostatni głos w kaskadzie, było włączenie ich na końcu <head> poprzez hak wp_head. wp_enqueue nie działa w ramach wp_head, więc musiałem bezpośrednio wyświetlić link:wreszcie mogę ustawić moje style ze względną łatwością i bez stosowania wysokiego poziomu specyficzności lub ważnej zasady, która powinna być stosowana tylko w ostateczności.WP potrzebuje lepszego systemu kolejkowania w stylu. każdy styl, czy to link do pliku czy styl wbudowany, powinien zostać przepuszczony przez ten sam hak, umożliwiając Priorytetowi określenie ich kolejności. opcjonalnie do celów debugowania przydatne byłoby, gdyby hak wyświetlał również wartości Priorytetów każdego stylu, być może w formie komentarza.
Aktualizacja
Udało mi się zachować kontrolę nad stylami w motywie potomnym, zachowując oryginalną kaskadę motywu nadrzędnego (który korzysta z głównego arkusza stylów, arkusza podrzędnego i kilku instrukcji stylów), dzieląc mój arkusz stylów na dwa, jak wyjaśniono w pytanie. Nie używam już haka wp_head (), zamiast tego używam właściwego i standardowego haka wp_enqueue_scripts () z wysoką liczbą porządkową, aby mieć pewność, że mój arkusz stylów zostanie załadowany na końcu.
domyślny arkusz stylów mojego dziecka:
funkcja kolejkowania mojego głównego arkusza stylów:
istnieje jednak kilka instrukcji stylu wygenerowanych przez WP (tj. nie jest to temat nadrzędny), które podano poniżej moim arkuszu stylów, i będę musiał rozważyć użycie albo reguł css o wysokiej specyficzności, aby zastąpić reguły, które mnie dotyczą, lub poszukać przechwytuje je, w szczególności regułę body.custom-background.
dziękuję wszystkim za komentarze.
na zdrowie,
Gregory
źródło
Należy zawsze korzystać
wp_enqueue_style()
, aby załadować stylów i że funkcje powinny być podpięty do wp_enqueue_scripts hakiem z wyciągów w głowie . Podejrzewam, że tam nie zaczepiałeś, stąd twój problem. (Od wersji WP 3.3, jeśliwp_enqueue_style()
jest podłączony do czegokolwiek innego, wyświetla powiadomienie przy włączonej WP_Debug).źródło