Como enfileirar scripts em páginas personalizadas de adição / edição de postagem?

23

Estou tentando enfileirar um script JS somente quando alguém está adicionando ou editando um tipo de postagem personalizado que criei chamado "recipes". Atualmente, o script funciona bem quando faço isso:

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

Mas isso o carrega em todas as páginas de administração, suponho que precise conectá-lo a uma função, mas não tenho ideia do que seria.

Desde já, obrigado!

Javier Villanueva
fonte
Para uso futuro, uma pergunta semelhante foi respondida com o que considero uma maneira mais fácil: wordpress.stackexchange.com/q/34894/93169
Frits

Respostas:

43

Você pode fazer assim (coloque no seu 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
fonte
Também posso enfileirar o estilo usando esta função?
Sisir
1
@Sisir Use o "admin_print_styles-{$page}"gancho. $pagepode conter o add_(sub)menu_page()código completo e ser usado para segmentar a página ao usá-lo @see wp_enqueue_style().
kaiser
Uma maneira mais atualizada de fazer isso: wordpress.stackexchange.com/a/34897/93169 (também passa a ser um pouco mais fácil graças às alterações de funcionalidade no wordpress ...)
Frits
-2

Há um gancho para isso, e é simples de usar. Veja este tutorial para um exemplo de implementação .

Editar

Justin mudou seus tutoriais do DevPress para seu site pessoal. Aqui está o link atualizado para o tutorial .

Chip Bennett
fonte
A página listada se foi. Aqui está um espelho / arquivo na máquina Wayback .
Robert K
Obrigado por isso. Atualizei minha resposta com um link atual.
Chip Bennett
3
Por que não postar a solução aqui e vincular o tutorial como fonte ...
Christine Cooper
-3

O Rootstheme (que é baseado no Twitter Bootstrap) tem uma maneira muito elegante de carregar scripts, dependendo do tipo de página / postagem, como visto na função roots_scripts , que pode ser vista aqui no github .

Registre basicamente todos os seus scripts e estilos e, em seguida, tenha instruções condicionais que agrupam suas instruções wp_enqueue_script ou wp_enqueue_style .

Projeto FLOQ
fonte