プラグインWooCommerceのwc_ajax_$ACTIONアクションの使用方法・解説

概要

wc_ajax_$ACTIONは、WooCommerceプラグインのAjaxリクエストを処理するためのフックです。このフックは、ユーザーがフロントエンドで特定のアクションを実行した際に、サーバー側で必要な処理を行うために使用されます。一般的には、次のような機能を実装する際に使用されます。

  1. カートのアイテムを追加/削除する。
  2. チェックアウトプロセスを管理する。
  3. クーポンの適用や削除を行う。
  4. ユーザー情報の更新を行う。
  5. 商品のフィルタリングやサーチを実行する。
  6. ページ更新なしでの商品情報の取得を行う。

構文

add_action('wp_ajax_wc_ajax_$ACTION', 'your_function');
add_action('wp_ajax_nopriv_wc_ajax_$ACTION', 'your_function');

パラメータ

  • $ACTION: 処理したい特定のアクション名。
  • your_function: Ajaxリクエストを処理するカスタム関数。

戻り値

通常は、JSON形式でデータを返すことが多いですが、具体的な処理により異なります。

WooCommerceとWordPressのバージョン

  • WooCommerce:2.0以上
  • WordPress:4.0以上

この関数のアクションでの使用可能性

アクション 使用例
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプルコード 1: カートにアイテムを追加

カートに商品を追加するAjaxリクエストを処理するサンプルです。

add_action('wp_ajax_wc_ajax_add_to_cart', 'ajax_add_to_cart');
function ajax_add_to_cart() {
    $product_id = absint($_POST['product_id']);
    WC()->cart->add_to_cart($product_id);

    wp_send_json_success(); // 成功を返す
}
// 引用元: https://developer.woocommerce.com

サンプルコード 2: カートのアイテムを削除

カートから特定の商品を削除するAjaxリクエストに応答します。

add_action('wp_ajax_wc_ajax_remove_from_cart', 'ajax_remove_from_cart');
function ajax_remove_from_cart() {
    $cart_item_key = sanitize_text_field($_POST['cart_item_key']);
    WC()->cart->remove_cart_item($cart_item_key);

    wp_send_json_success(); // 成功を返す
}
// 引用元: https://developer.woocommerce.com

サンプルコード 3: クーポンの適用

クーポンをカートに適用するAjax呼び出しを処理します。

add_action('wp_ajax_wc_ajax_apply_coupon', 'ajax_apply_coupon');
function ajax_apply_coupon() {
    $coupon_code = sanitize_text_field($_POST['coupon_code']);
    WC()->cart->apply_coupon($coupon_code);

    wp_send_json_success(); // 成功を返す
}
// 引用元: https://developer.woocommerce.com

サンプルコード 4: ユーザー情報の更新

ユーザーのアカウント情報をAjax経由で更新するサンプルです。

add_action( 'wp_ajax_wc_ajax_update_user_info', 'ajax_update_user_info' );
function ajax_update_user_info() {
    $user_id = get_current_user_id();
    $new_data = $_POST['user_data']; // ユーザーデータ

    // データを更新するコード(省略)

    wp_send_json_success(); // 成功を返す
}
// 引用元: https://developer.woocommerce.com

サンプルコード 5: 商品フィルター機能

Ajaxを使用して商品をフィルタリングするリクエストを処理します。

add_action('wp_ajax_wc_ajax_filter_products', 'ajax_filter_products');
function ajax_filter_products() {
    $filter = $_POST['filter'];

    // フィルタリングロジック(省略)

    wp_send_json_success($filtered_products); // フィルタ後の商品を返す
}
// 引用元: https://developer.woocommerce.com

この関数について質問する


上の計算式の答えを入力してください