私はドキュメントやグーグルでこれを見つけることができないようです。したがって、基本的には、商品がカートに追加されたときに発生するJavascriptイベントを探しています。 何らかの理由で、カート通知に追加されたデフォルトが機能しません。
編集:だから私は私のテーマのデフォルトフォルダと私のwoocommerceテンプレートの上書きにwoocommerce.phpファイルを含めているので私は考えています。
ソースを読んでください。 woocommerce-ajax.phpから(プラグインのルートフォルダにあります)
Javascript/Ajaxがカートに追加されます
/**
* AJAX add to cart
*
* @access public
* @return void
*/
function woocommerce_ajax_add_to_cart() {
global $woocommerce;
check_ajax_referer( 'add-to-cart', 'security' );
$product_id = (int) apply_filters('woocommerce_add_to_cart_product_id', $_POST['product_id']);
$passed_validation = apply_filters('woocommerce_add_to_cart_validation', true, $product_id, 1);
if ($passed_validation && $woocommerce->cart->add_to_cart($product_id, 1)) :
// Return html fragments
$data = apply_filters('add_to_cart_fragments', array());
do_action( 'woocommerce_ajax_added_to_cart', $product_id);
else :
// If there was an error adding to the cart, redirect to the product page to show any errors
$data = array(
'error' => true,
'product_url' => get_permalink( $product_id )
);
$woocommerce->set_messages();
endif;
echo json_encode( $data );
die();
}
add_action('wp_ajax_woocommerce_add_to_cart', 'woocommerce_ajax_add_to_cart');
add_action('wp_ajax_nopriv_woocommerce_add_to_cart', 'woocommerce_ajax_add_to_cart');
非AJAX:ページロードが必要
AJAXを使用していない場合は、init
フックで実行されるwoocommerce-functions.phpのwoocommerce_add_to_cart_action()
を使用しています。それは少し長いです、それで私はあなたにそれを言及されたファイルから読ませます。基本的にそれはadd-to-cart`クエリパラメータ(商品IDと同じであるべきです)を探し、そこから行きます。