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

概要

woocommerce_ajax_get_endpointはWooCommerceプラグインにおけるアクションフックで、AJAXリクエストが送信された際に特定のエンドポイントに対して処理を行う時に使用されます。このフックは、AJAXリクエストの処理をカスタマイズするための機能を提供し、以下のようなシナリオで利用されることが多いです。

  1. カートの内容を非同期で取得
  2. 製品の在庫状況を確認
  3. クーポンコードの適用結果を取得
  4. ユーザーの購入履歴を表示
  5. 商品のフィルタリングやソートを非同期で行う
  6. コンテンツのロードをページ遷移なしに行う

構文

add_action('woocommerce_ajax_get_endpoint', 'my_custom_function');

パラメータ

このアクションフックは、特定のパラメータを受け取ることができ、これによりリクエスト内容に応じた処理が可能になります。主なパラメータには、AJAXリクエストの内容を含む$_REQUEST変数が含まれます。

戻り値

特に戻り値はなく、AJAXレスポンスを直接出力します。

使用可能バージョン

  • WooCommerceのバージョン: 3.0以上
  • WordPressのバージョン: 4.0以上

サンプルコード

サンプルコード1: カート内容の取得

add_action('woocommerce_ajax_get_endpoint', 'get_cart_contents');
function get_cart_contents() {
    if (is_cart() && !empty($_POST['action']) && $_POST['action'] === 'get_cart') {
        $cart = WC()->cart->get_cart();
        wp_send_json_success($cart);
    }
}

このサンプルコードは、カートの内容を非同期で取得し、クライアントにJSON形式で応答します。

サンプルコード2: 製品の在庫状況を確認

add_action('woocommerce_ajax_get_endpoint', 'check_product_stock');
function check_product_stock() {
    $product_id = intval($_POST['product_id']);
    $product = wc_get_product($product_id);
    $stock_status = $product->get_stock_status();
    wp_send_json_success(array('stock_status' => $stock_status));
}

このサンプルコードは、製品の在庫状況を取得し、応答として返します。

サンプルコード3: フィルタリング機能

add_action('woocommerce_ajax_get_endpoint', 'filter_products');
function filter_products() {
    $category = sanitize_text_field($_POST['category']);
    $args = array('post_type' => 'product', 'tax_query' => array(
        array(
            'taxonomy' => 'product_cat',
            'field' => 'slug',
            'terms' => $category,
        )
    ));
    $query = new WP_Query($args);
    $products = $query->posts;
    wp_send_json_success($products);
}

このサンプルコードは、AJAXリクエストで指定されたカテゴリにフィルタリングされた製品を取得します。

サンプルコード4: クーポンコードの適用結果取得

add_action('woocommerce_ajax_get_endpoint', 'apply_coupon_code');
function apply_coupon_code() {
    $coupon_code = sanitize_text_field($_POST['coupon']);
    if (WC()->cart->apply_coupon($coupon_code)) {
        wc_print_notices();
        wp_send_json_success(array('message' => 'クーポンが適用されました'));
    } else {
        wp_send_json_error(array('message' => 'クーポンの適用に失敗しました'));
    }
}

このサンプルコードは、AJAXリクエストで受け取ったクーポンコードをカートに適用し、結果を返します。

サンプルコード5: ユーザーの購入履歴の取得

add_action('woocommerce_ajax_get_endpoint', 'get_purchase_history');
function get_purchase_history() {
    $current_user = wp_get_current_user();
    $orders = wc_get_orders(array('customer_id' => $current_user->ID));
    wp_send_json_success($orders);
}

このサンプルコードは、ログイン中のユーザーの購入履歴を取得し、JSON形式で応答します。

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

アクション 使用可能
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

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


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