0 レビュー
2 回答
php-WooCommerceチェックアウト/カートページの組み合わせとクロスセルの追加
チェックアウトとカートのショートコードを2列のチェックアウトページに組み合わせて、支払いを完了するためのクリック数を減らしました。
しかし、この配置ではフックが奇妙に機能しているように見えます。
たとえば、クロスセルセクションをカートセクションの下に配置しようとしています。デフォルトのカートページには、デフォルトで表示されます。カートとチェックアウトを組み合わせると、カートが消えます。
論理的なアプローチはこれを行うことです:
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
オブジェクトのスコープが失われた可能性があります。
これを達成できるという希望はありますか?
わからない
0
レビュー
答え :
解決策:
WooCommerceのサポートは、私を助けてくれた答えをもたらしました。 $cross_sells
を何にも割り当てていませんでした。このように割り当てる必要がありました$cross_sells= array_filter(array_map('wc_get_product'、WC()-> cart-> get_cross_sells())、'wc_products_array_filter_visible');
>
しかし、フックアクションが機能しなかった理由を知りたいのです。
わからない
0
レビュー
答え :
解決策:
フックでそれを達成できなかった理由については、おそらく、そのアクションにフックした関数のコードの最初の行が原因です:
function woocommerce_cross_sell_display( $limit = 2, $columns = 2, $orderby = 'rand', $order = 'desc' ) {
if ( is_checkout() ) {
return;
}
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。