Làm thế nào để ghi lại JavaScripts trong một plugin


14

Tôi đang vật lộn rất nhiều thời gian này để làm việc bao gồm một tệp JavaScript trong thư mục plugin.

Tôi đang cố gắng tạo một plugin bằng cách chuyển các tập tin widget từ thư mục chủ đề. Tôi đã sao chép tệp widget, nhưng tệp widget đó phụ thuộc vào tệp JavaScript nên tôi đã tạo thư mục / js / trong thư mục plugin. nơi các tệp này được lưu trữ "jquery.repeatable.js"

Tôi đã sử dụng mã này, nhưng dường như không bao gồm tệp 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');

Tôi đã tìm kiếm cái này trên diễn đàn- /programming/31489615/call-a-js-file-from-a-plugin-directory

Nhưng điều này vẫn không hữu ích.

Tôi đang tóm tắt lại câu hỏi của tôi. Trong thư mục plugin của tôi có tệp js trong thư mục này - / js /

Tôi muốn bao gồm nó là quá trình chính xác, tôi có cần phải đăng ký một cái gì đó không?

Có điều gì đó sai với phần này - 'admin_enqueue_scripts'?


Câu trả lời:


29

Mã của bạn có vẻ đúng, nhưng nó sẽ chỉ tải tập lệnh trong khu vực quản trị vì bạn đang mê hoặc tập lệnh đang admin_enqueue_scriptshoạt động .

Để tải tập lệnh ở lối vào, hãy sử dụng wp_enqueue_scriptshành động (không giống với wp_enqueue_script()chức năng đó ):

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

Ngoài ra, tập lệnh đó dường như phụ thuộc vào jQuery, vì vậy bạn nên khai báo rằng tệp phụ thuộc hoặc tập lệnh có thể được tải trước khi jQuery và nó không hoạt động. Ngoài ra, tôi thực sự khuyên bạn nên khai báo phiên bản của scripot. Bằng cách này, nếu bạn cập nhật tập lệnh lên phiên bản mới, trình duyệt sẽ tải lại tập lệnh đó và loại bỏ bản sao có thể có trên bộ đệm.

Ví dụ: nếu phiên bản của tập lệnh là 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');

Nếu bạn muốn tải nó trong khu vực quản trị:

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

CẬP NHẬT:

Sử dụng mã này thay thế

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

Tham số thứ 3 là khai báo sự phụ thuộc và thứ tư là xác định phiên bản.

Set thông số 5rd của wp_enqueue_script()để true. Điều đó có nghĩa là, tập tin này sẽ được tải ở chân trang.


Tham số thứ ba của wp_enqueue_script()là khai báo các phụ thuộc script. Thông số thứ năm là lựa chọn nếu bạn muốn tải tập lệnh ở chân trang hoặc trong tiêu đề. Dù sao, tôi không nghĩ rằng nơi để tải làm cho bất kỳ sự khác biệt.
cybmeta

Cảm ơn. Tôi đã đọc ở đâu đó trong một số plugin khác mà một số người đang làm như thế này - wp_enqueue_script ('zumper', get_template_directory_uri (). '/Js/jquery.zumper.min.js',array('jquery'),false,true; Bạn đã nói cài đặt thứ 3 thành true có nghĩa là nó sẽ được tải ở chân trang, vậy thì sự kết hợp sai, đúng này có nghĩa là gì?
Trung cấp WP

Tôi đã cập nhật câu trả lời của tôi. Nó có hoạt động không?
mukto90

1

Tôi thường sử dụng phương thức plugins_url () để đạt được 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');
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.