【发布时间】:2022-01-21 06:04:10
【问题描述】:
我试图始终显示我购物车中的所有交叉销售商品。
位于文件class-wc-cart.php 中的函数get_cross_sells() 如下所示:
/**
* Gets cross sells based on the items in the cart.
*
* @return array cross_sells (item ids)
*/
public function get_cross_sells() {
$cross_sells = array();
$in_cart = array();
if ( ! $this->is_empty() ) {
foreach ( $this->get_cart() as $cart_item_key => $values ) {
if ( $values['quantity'] > 0 ) {
$cross_sells = array_merge( $values['data']->get_cross_sell_ids(), $cross_sells );
$in_cart[] = $values['product_id'];
}
}
}
$cross_sells = array_diff( $cross_sells, $in_cart );
return apply_filters( 'woocommerce_cart_crosssell_ids', wp_parse_id_list( $cross_sells ), $this );
}
$cross_sells = array_diff( $cross_sells, $in_cart ); 行删除了购物车中的所有交叉销售商品。
这个“有点”可以,但这样我就必须在添加或删除交叉销售项目时对主题进行更改。
add_filter( 'woocommerce_cart_crosssell_ids', 'my_custom_cross_sells' );
function my_custom_cross_sells( $cross_sell_ids ){
$cross_sell_ids = [4782, 4777, 4776, 4783];
return $cross_sell_ids;
}
我将如何从我的子主题中覆盖此功能以始终显示所有项目?
【问题讨论】:
标签: php wordpress woocommerce product cart