Jak wymieniać skrypty na niestandardowych stronach dodawania / edycji postów?

23

Próbuję kolejkować skrypt JS tylko wtedy, gdy ktoś dodaje lub edytuje niestandardowy typ postu, który utworzyłem, zwany „przepisami”. Obecnie skrypt działa poprawnie, gdy to robię:

if (is_admin()){
    wp_enqueue_script( 'my-script' );
}

Ale to ładuje go na każdej stronie administratora, zakładam, że muszę podpiąć go do funkcji, ale nie mam pojęcia, co by to było.

Z góry dziękuję!

Javier Villanueva
źródło
Do wykorzystania w przyszłości zostało udzielone podobne pytanie z tym, co według mnie było łatwiejsze: wordpress.stackexchange.com/q/34894/93169
Frits

Odpowiedzi:

43

Możesz to zrobić w następujący sposób (wstaw functions.php):

function add_admin_scripts( $hook ) {

    global $post;

    if ( $hook == 'post-new.php' || $hook == 'post.php' ) {
        if ( 'recipes' === $post->post_type ) {     
            wp_enqueue_script(  'myscript', get_stylesheet_directory_uri().'/js/myscript.js' );
        }
    }
}
add_action( 'admin_enqueue_scripts', 'add_admin_scripts', 10, 1 );
mike23
źródło
Czy mogę kolejkować styl za pomocą tej funkcji?
Sisir,
1
@Sisir Użyj "admin_print_styles-{$page}"haka. $pagemoże przechowywać cały add_(sub)menu_page()kod i być używany do kierowania na stronę podczas używania @see wp_enqueue_style().
kaiser
Bardziej aktualny sposób na zrobienie tego: wordpress.stackexchange.com/a/34897/93169 (okazuje się też, że jest trochę łatwiejszy dzięki zmianom funkcjonalności w wordpress ...)
Frits
-2

Jest do tego haczyk i jest bardzo prosty w użyciu. Zobacz ten samouczek, aby zobaczyć przykładową implementację .

Edytować

Justin przeniósł samouczki z DevPress na swoją osobistą stronę. Oto zaktualizowany link do samouczka .

Chip Bennett
źródło
Wymieniona strona zniknęła. Oto lustro / archiwum na maszynie Wayback .
Robert K
Dziękuję za to. Zaktualizowałem swoją odpowiedź aktualnym linkiem.
Chip Bennett,
3
Dlaczego nie opublikować rozwiązania tutaj i połączyć samouczek jako źródło ...
Christine Cooper
-3

Rootstheme (oparty na Twitterze Bootstrap) ma naprawdę elegancki sposób ładowania skryptów w zależności od typu strony / postu, jak widać w funkcji root_scripts, którą można zobaczyć tutaj na github .

Zasadniczo zarejestruj wszystkie swoje skrypty i style, a następnie posiadaj instrukcje warunkowe, które zawijają twoje instrukcje wp_enqueue_script lub wp_enqueue_style .

Projekt FLOQ
źródło