Як запхнути JavaScripts у плагіні


14

Я дуже багато намагаюся цього разу працювати над включенням JavaScript-файлів у папку плагінів.

Я намагаюся створити плагін шляхом передачі файлів віджетів із каталогу тем. Я скопіював файл віджетів, але цей віджет залежав від файлу JavaScript, тому я створив / js / папку у довідці плагінів. де розміщені ці файли "jquery.repeatable.js"

Я використовував цей код, але він, схоже, не включає файл 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');

Я шукав це на форумі- /programming/31489615/call-a-js-file-from-a-plugin-directory

Але все ж це було не корисно.

Я резюмую своє запитання. У моєму каталозі плагінів є js-файл під цією папкою - / js /

Я хочу включити його, що це правильний процес, чи потрібно мені також щось зареєструвати?

Чи щось не так з цією порцією - 'admin_enqueue_scripts'?


Відповіді:


30

Ваш код здається правильним, але він буде завантажувати скрипт тільки в області адміністрування, оскільки ви залучаєте сценарій до admin_enqueue_scriptsдії .

Щоб завантажити скрипт у фронтенд, використовуйте wp_enqueue_scriptsдію (що не однакова wp_enqueue_script()функція ):

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');

Крім того, цей скрипт, як видається, залежить від jQuery, тому ви повинні оголосити, що залежність або сценарій можна завантажити перед jQuery, і він не працюватиме. Також настійно рекомендую задекларувати версію скрипта. Таким чином, якщо ви оновите скрипт до нової версії, браузер перезапустить його знову і відкине копію, яку він може мати у кеші.

Наприклад, якщо версія сценарію дорівнює 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');

Якщо ви хочете завантажити його в області адміністратора:

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

ОНОВЛЕНО:

Використовуйте замість цього коду

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');

Третій параметр - оголосити залежність, а четвертий - визначити версію.

Встановіть 5-й параметр wp_enqueue_script()до true. Це означає, що цей файл буде завантажений у нижній колонтитул.


Третій параметр - wp_enqueue_script()це оголошення залежності сценарію. П'ятий параметр - той, який потрібно вибрати, якщо ви хочете завантажити сценарій у нижньому колонтитулі чи в заголовку. У будь-якому випадку, я не думаю, що місце для завантаження не має ніякого значення.
cybmeta

Дякую. Я десь читав у якомусь іншому плагіні, що хтось робить так - wp_enqueue_script ('zumper', get_template_directory_uri (). '/Js/jquery.zumper.min.js',array('jquery'),false,true); Ви сказали, що встановлення третього на істинне означає, що воно завантажиться у нижній колонтитул, тоді що означає це помилкове, справжнє поєднання?
Проміжний рівень WP

Я оновив свою відповідь. Це працює?
mukto90

1

Я зазвичай використовую метод plugins_url () для досягнення enqueue.

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');
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.