概要
wc_ajax_$ACTION
は、WooCommerceプラグインのAjaxリクエストを処理するためのフックです。このフックは、ユーザーがフロントエンドで特定のアクションを実行した際に、サーバー側で必要な処理を行うために使用されます。一般的には、次のような機能を実装する際に使用されます。
- カートのアイテムを追加/削除する。
- チェックアウトプロセスを管理する。
- クーポンの適用や削除を行う。
- ユーザー情報の更新を行う。
- 商品のフィルタリングやサーチを実行する。
- ページ更新なしでの商品情報の取得を行う。
構文
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