Como enfileirar JavaScripts em um plug-in


14

Desta vez, estou lutando muito para incluir arquivos JavaScript na pasta de plugins.

Estou tentando criar um plug-in transferindo arquivos de widget do diretório de temas. Copiei o arquivo de widget, mas esse arquivo estava dependendo de um arquivo JavaScript, então criei uma pasta / js / no diretório do plugin. onde esses arquivos estão hospedados "jquery.repeatable.js"

Eu usei esse código, mas parece não incluir o arquivo js -

function Zumper_widget_enqueue_script()
{   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js' );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');

Eu pesquisei isso no fórum- /programming/31489615/call-a-js-file-from-a-plugin-directory

Mas ainda assim isso não foi útil.

Estou resumindo minha pergunta. No diretório do meu plugin, há um arquivo js nesta pasta - / js /

Desejo incluir qual é o processo correto, também preciso registrar algo?

Há algo de errado com essa parte - 'admin_enqueue_scripts'?


Respostas:


29

Seu código parece correto, mas ele carregará o script apenas na área administrativa, porque você está enfileirando o script em admin_enqueue_scriptsação .

Para carregar o script no front-end, use a wp_enqueue_scriptsação (que não é a mesma que wp_enqueue_script()função ):

function Zumper_widget_enqueue_script() {   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js' );
}
add_action('wp_enqueue_scripts', 'Zumper_widget_enqueue_script');

Além disso, esse script parece depender do jQuery, portanto, você deve declarar que a dependência ou o script pode ser carregado antes do jQuery e não funcionará. Além disso, eu recomendo fortemente declarar a versão do script. Dessa forma, se você atualizar o script para uma nova versão, o navegador o descarregará novamente e descartará a cópia que possa ter no cache.

Por exemplo, se a versão do script for 1.0:

function Zumper_widget_enqueue_script() {   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js', array('jquery'), '1.0' );
}
add_action('wp_enqueue_scripts', 'Zumper_widget_enqueue_script');

Se você deseja carregá-lo na área de administração:

function Zumper_widget_enqueue_script() {   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js', array('jquery'), '1.0' );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');

1

ATUALIZADA:

Use esse código

function Zumper_widget_enqueue_script()
{   
    wp_enqueue_script( 'my_custom_script', plugin_dir_url( __FILE__ ) . 'js/jquery.repeatable.js', array('jquery'), '1.0.0', false );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');

O terceiro parâmetro é declarar dependência e o quarto é definir a versão.

Defina o 5º parâmetro de wp_enqueue_script()como true. Ou seja, esse arquivo será carregado no rodapé.


O terceiro parâmetro de wp_enqueue_script()é declarar as dependências do script. O quinto parâmetro é o que você escolhe se deseja carregar o script no rodapé ou no cabeçalho. Enfim, não acho que o lugar para carregar faça alguma diferença.
22616 cybmeta

Obrigado. Eu li em algum lugar de algum outro plugin que alguém está fazendo assim - wp_enqueue_script ('zumper', get_template_directory_uri (). '/Js/jquery.zumper.min.js',array('jquery'),false,true); Você disse que definir 3 como verdadeiro significa que ele será carregado no rodapé; então, o que significa essa combinação falsa e verdadeira?
O WP Intermediate

Eu atualizei minha resposta. Funciona?
mukto90

1

Eu normalmente uso o método plugins_url () para obter o enfileiramento.

function Zumper_widget_enqueue_script()
{   
    wp_enqueue_script( 'my_custom_script', plugins_url('js/jquery.repeatable.js', __FILE__ ), '1.0.0', false );
}
add_action('admin_enqueue_scripts', 'Zumper_widget_enqueue_script');
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.