要在插件中覆盖Java脚本吗?

时间:2016-09-01 作者:crossbeats

是否可以在带有子主题的插件中重写Javascript?

具体来说,我正试图覆盖WooCommerce产品页面的一部分-我想去掉选项卡式内容区域,而是让所有内容都可以通过“选项卡”看到,然后成为页面下方的锚定链接。

我已经通过删除WooCommerce插件文件中的一部分Javascript,找到了如何在本地安装上做到这一点,但从长远来看,这显然不是一个可行的解决方案。

我想从本质上去除插件中的Javascript,并将我自己的文件放入队列,删除不需要的部分。

如果有其他方法可以覆盖它,这就是我需要删除的代码?

.on( \'click\', \'.wc-tabs li a, ul.tabs li a\', function( e ) {
            e.preventDefault();
            var $tab          = $( this );
            var $tabs_wrapper = $tab.closest( \'.wc-tabs-wrapper, .woocommerce-tabs\' );
            var $tabs         = $tabs_wrapper.find( \'.wc-tabs, ul.tabs\' );

            $tabs.find( \'li\' ).removeClass( \'active\' );
            $tabs_wrapper.find( \'.wc-tab, .panel:not(.panel .panel)\' ).hide();

            $tab.closest( \'li\' ).addClass( \'active\' );
            $tabs_wrapper.find( $tab.attr( \'href\' ) ).show();
        })

2 个回复
SO网友:mmm

您可以使用以下代码禁用JavaScript代码的这一部分:

$( \'body\' ).off( \'click\', \'.wc-tabs li a, ul.tabs li a\');
.off( 分离侦听器:http://api.jquery.com/off/

SO网友:Jeremy Ross

与其用javascript隐藏它们(你也可以用CSS来隐藏),更好的解决方案是不首先生成选项卡。这是WooCommerce文档。

add_filter( \'woocommerce_product_tabs\', \'woo_remove_product_tabs\', 98 );

function woo_remove_product_tabs( $tabs ) {

    unset( $tabs[\'description\'] );  // Remove the description tab
    unset( $tabs[\'reviews\'] );  // Remove the reviews tab
    unset( $tabs[\'additional_information\'] );  // Remove the additional information tab

    return $tabs;
}
从那里,您可以编辑模板文件以显示您想要查看的内容。