通过functions.php重写小部件

通过functions.php重写小部件,php,wordpress,woocommerce,widget,Php,Wordpress,Woocommerce,Widget,Woocommerce附带了一个默认的产品过滤器小部件,位于 /wp content/plugins/woocommerce/includes/widgets/class-wc-widget-layered-nav-filters.php 我有很多产品/类别等,使用它看起来非常混乱。我试着把它整理一下,并把它变成一个手风琴菜单,从底部的代码中可以看出,它似乎可以工作 然而,我正在努力把它添加到我的主题中 我使用以下工具创建了自己的小部件: var acc=document.getElemen

Woocommerce附带了一个默认的产品过滤器小部件,位于

/wp content/plugins/woocommerce/includes/widgets/class-wc-widget-layered-nav-filters.php

我有很多产品/类别等,使用它看起来非常混乱。我试着把它整理一下,并把它变成一个手风琴菜单,从底部的代码中可以看出,它似乎可以工作

然而,我正在努力把它添加到我的主题中

我使用以下工具创建了自己的小部件:


var acc=document.getElementsByClassName(“小部件标题”);
var i;
对于(i=0;i
根据此

您必须根据保存此小部件的位置更改路径:

add_action( 'widgets_init', 'err_override_woocommerce_widgets', 15 );

function err_override_woocommerce_widgets() {
  // Ensure our parent class exists to avoid fatal error (thanks Wilgert!)

  if ( class_exists( 'WC_Widget_Layered_Nav' ) ) {

        unregister_widget( 'WC_Widget_Layered_Nav' );

        include_once( 'woocommerce/includes/widgets/custom-wc-widget-layered-nav.php' );

        register_widget( 'Custom_WC_Widget_Layered_Nav' );
  }

}
希望它能起作用

更新:

首先将脚本保存在您的js文件夹中,并将其命名为
custom.js
,然后您必须按如下方式注册该脚本:

// Register your assets during `wp_enqueue_scripts` hook inside `functions.php`.
function custom_register_scripts() {
    // Give the path of the script
    wp_register_script('js-custom', 'path/to/js/custom.js',array('jquery'));
}
然后您可以将您的脚本排队到您的小部件所在的位置

public function widget( $args, $instance ) {
        // Enqueue needed assets inside the `widget` function.
        wp_enqueue_script('js-custom');

        // Output widget contents.
    }

精彩,干杯,整理了我的错误,但功能似乎不起作用。我不确定javascript是否在小部件中工作:-(是的,但是你必须小心地添加脚本并将其排队。看看更新部分,我希望它能工作!感谢你花时间来帮助我。我是一个完全的新手lol。我已经尝试了你在上面的更新中所说的,但仍然没有使新Javascript的功能生效。我知道我可能被把它放在错误的地方或犯了一个简单的错误,但我没有经验或知识知道我错在哪里。Enigma,再次感谢你的帮助。我发现了我犯的简单错误,但我遗漏了:
add_action('wp_排队_脚本','nav_脚本');
上面的
函数自定义注册_脚本(){wp_register_script('js-custom','path/to/js/custom.js',array('jquery');}