在woocommerce中将类添加到widget_shopping_cart_content

时间:2017-12-12 04:28:25

标签: wordpress woocommerce

我想在没有JS和Jquery的情况下在WooCommerce中将widget添加到widget_shopping_cart_content。我想在函数文件中过滤片段。

JS和jquery没有处理此文件。

我在class-wc-ajax.php文件中找到了这段代码,我想修改这段代码。

public static function get_refreshed_fragments() {
        ob_start();

        woocommerce_mini_cart();

        $mini_cart = ob_get_clean();

        $data = array(
            'fragments' => apply_filters( 'woocommerce_add_to_cart_fragments', array(
                    'div.widget_shopping_cart_content' => '<div class="widget_shopping_cart_content">' . $mini_cart . '</div>',
                )
            ),
            'cart_hash' => apply_filters( 'woocommerce_add_to_cart_hash', WC()->cart->get_cart_for_session() ? md5( json_encode( WC()->cart->get_cart_for_session() ) ) : '', WC()->cart->get_cart_for_session() ),
        );

        wp_send_json( $data );
    }

我想在此<div class="widget_shopping_cart_content dropdown-menu">' . $mini_cart . '</div>';中添加下拉菜单类,但我怎么也不知道。

可以请任何人帮助我。

1 个答案:

答案 0 :(得分:1)

选项1:str_replace();

add_filter('woocommerce_add_to_cart_fragments', 'mm_string_replace_add_to_cart_fragments');

function mm_string_replace_add_to_cart_fragments($fragments){

    return $fragments['div.widget_shopping_cart_content'] = str_replace('class="widget_shopping_cart_content"', 'class="widget_shopping_cart_content dropdown-menu"', $fragments['div.widget_shopping_cart_content']);

}

这不需要额外调用woocommerce_mini_cart(),而且比下面提到的其他方法更快但灵活性更低。

选项2:覆盖get_refreshed_fragments函数

add_filter('woocommerce_add_to_cart_fragments', 'mm_change_add_to_cart_fragments');

function mm_change_add_to_cart_fragments(){
    ob_start();

    woocommerce_mini_cart();

    $mini_cart = ob_get_clean();

    return array(
        'div.widget_shopping_cart_content' => '<div class="widget_shopping_cart_content dropdown-menu">' . $mini_cart . '</div>',
                )

}

基本上我们正在回顾整个功能,但需要进行一些修改。因此首先在get_refreshed_fragments上运行会浪费。这不是理想的解决方案,但这正是我们手头的事。如果要更详细地修改html,请使用此选项。