【发布时间】:2017-10-14 19:35:05
【问题描述】:
我已将结帐和购物车的简码合并到结帐页面的两列中,以减少完成付款的点击次数。
但是,我发现钩子在这种安排下似乎表现得很奇怪。
例如,我试图将交叉销售部分放在购物车部分下方。在默认购物车页面上,它默认显示。将购物车和结帐结合在一起可以让它消失。
这样做的逻辑方法是:
function add_cart_collaterals() {
if (is_checkout()) {
add_action( 'woocommerce_after_cart_contents', 'woocommerce_cross_sell_display' );
}
}
add_action('wp', 'add_cart_collaterals');
什么都没做。
无奈之下,我随后将cross-sell.php模板代码复制并改编,并直接放入我的子主题的functions.php文件中,如下所示:
/* Display Cross-Sells below cart */
function show_cross_sell() {
if ( $cross_sells ) :
echo '<div class="cross-sells"><h2>';
_e( 'You may be interested in…', 'woocommerce' );
echo '</h2>';
woocommerce_product_loop_start();
foreach ( $cross_sells as $cross_sell ) :
$post_object = get_post( $cross_sell->get_id() );
setup_postdata( $GLOBALS['post'] =& $post_object );
wc_get_template_part( 'content', 'product' );
endforeach;
woocommerce_product_loop_end();
echo '</div>';
else : {
echo 'No cross sells to display';
}
endif;
}
add_action( 'woocommerce_after_cart_table', 'show_cross_sell', 10 );
但是,只有else 条件运行并显示“没有交叉销售可显示”。所以也许它失去了$cross_sells 对象的范围。
我能做到这一点有希望吗?
【问题讨论】:
标签: php wordpress woocommerce hook checkout