我想在没有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>';
中添加下拉菜单类,但我怎么也不知道。
可以请任何人帮助我。
答案 0 :(得分:1)
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()
,而且比下面提到的其他方法更快但灵活性更低。
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,请使用此选项。