Ładuję niektóre pliki JavaScript w motywie nadrzędnym. Ścieżka w kompozycji nadrzędnej to:
scripts > custom.js
W motywie potomnym tworzę tę samą ścieżkę ( scripts > custom.js
) i zmieniam część jQuery w custom.js
pliku.
Problem polega na tym, że zmiany nie są stosowane. Czy to zły sposób wprowadzania zmian w tych plikach w motywie potomnym?
child-theme
wp-enqueue-script
Chris Molitor
źródło
źródło
Odpowiedzi:
Motywy potomne zastępują tylko pliki php (takie jak header.php), które są zawarte w funkcjach takich jak get_template_part lub get_header itp.
Prawidłowy sposób dodawania skryptów do WordPress to użycie wp_enqueue_script . Jeśli używa tego motyw nadrzędny, możesz przesłonić pliki JS, używając wp_dequeue_script i umieszczając w kolejce własne.
Tak jak ...
Jeśli motyw nadrzędny nie używa skryptu wp_enqueue_script, prawdopodobnie podłącza się do wp_head (lub wp_footer), aby wysłać tam echa skryptów. Więc byłoby użyć remove_action , aby pozbyć się tych funkcji echo skrypty na zewnątrz, a następnie enqueue własnego scenariusza.
Jeśli skrypt jest zakodowany na stałe w pliku szablonu, wystarczy zastąpić ten plik szablonu w motywie podrzędnym bez znacznika script.
Jeśli użyli wywołań wp_enqueue_script, które wykorzystują get_stylesheet_directory_uri , nie powinieneś nic robić. Ponieważ tak się nie dzieje, musisz po prostu pogrzebać i zobaczyć, co zrobił autor motywu.
źródło
wp_enqueue_scripts
można go było używać tylko do kolejkowania skryptów w interfejsie użytkownika. Zaktualizowano Jeśli zauważysz coś nieaktualnego, możesz go edytować.add_action( 'wp_enqueue_scripts', 'wpse26822_script_fix', 100 );
from codex.wordpress.org/Function_Reference/wp_dequeue_scriptwp_deregister_script('parent-script-handle');
do całkowitego usunięcia skryptu nadrzędnego. Rzeczywiście bez niego to nie działałoby. WP 4.6.1W niektórych przypadkach ważne jest, aby nadać priorytet zarówno wywołaniom funkcji add_action, jak i wp_enqueue_script:
W tym przypadku obiekt nadrzędny wp_enqueue_scripts został wywołany z priorytetem 20120206 (data), więc akcja ta jest dodawana z priorytetem niewiele większym, aby można ją było natychmiast usunąć z kolejki. Następnie następująca po nim instrukcja kolejki jest tak naprawdę traktowana priorytetowo, aby upewnić się, że ładuje się po usunięciu kolejnej starej. Prawda, w tym przypadku jest również ważna, ponieważ określa, że należy ją umieszczać w kolejce w stopce, czyli w miejscu, w którym skrypt nadrzędny został po raz pierwszy umieszczony w kolejce.
Nie potrafię też tego całkowicie wyjaśnić, ale zauważam, że jeśli jesteś ostrożny w usuwaniu z kolejki początkowego skryptu natychmiast po kolejce, wydaje się, że możesz skutecznie zapobiec jego załadowaniu.
źródło
wp_enqueue_script
nie ma parametru priorytetu, jest to tylko numer wersji, który jest konkatenowany do końca ścieżki jako ciąg zapytania. Ten parametr służy do zapewnienia, że poprawna wersja zostanie wysłana do klienta bez względu na buforowanie [...]wywołaj wp_deregister_script przed zarejestrowaniem własnej wersji
źródło
źródło