自定义小部件的 JS 脚本的最佳方式是什么?

What is the best way to customize a widget’s JS script?

我有一个插件可以提供它自己的小部件。我需要对小部件的 js 文件中的一些事件稍作更改。由于我不想直接编辑 widget.js 文件,我的理解是我需要通过主题的 functions.php 文件注销脚本,然后注册位于主题目录中的自定义版本。检查 widget.php 文件中的脚本后,我看到的是:

function widget( $args, $instance ) {
    wp_enqueue_script( 'berocket_aapf_widget-script', plugins_url( '../js/widget.min.js', __FILE__ ), array( 'jquery' ), BeRocket_AJAX_filters_version );
 }

因此,在我主题的 functions.php 文件中,我尝试了以下操作来使该脚本出列:

function wpdocs_dequeue_script() {
    wp_deregister_script( 'berocket_aapf_widget-script' );
    wp_dequeue_script( 'berocket_aapf_widget-script' );
}
add_action( 'wp_print_scripts', 'wpdocs_dequeue_script', 99999999 );

不幸的是,这并不能解决问题。我以正确的方式处理这个问题吗?

首先,我不建议放弃插件自带的JS文件。我知道你在用它复制数据,但还是。

话虽如此,您的代码还是有一些弱点。您需要出列然后注销 script/style。并且您应该尝试将 wp_enqueue_scripts 挂钩中的脚本出队,因为 wp_print_scripts 在 wp_enqueu_scripts.

之后执行

参考:Plugin API/Action Reference

除了以上几点,你做对了。

编辑 1: 我不是建议编辑插件的原始 JS 文件,而是 hook/bind 您的自定义 JS 并使其与原始文件一起工作。