概要
woocommerce_product_quick_edit_save
は、WooCommerce のクイックエディット機能で商品を保存する際に発火するアクションフックです。このフックは、管理画面で商品の情報を迅速に編集したい場合によく使用されます。具体的には、以下のような機能を実装する際に役立ちます。
- 商品のカスタムメタデータを保存する
- デフォルト以外のフィールドの値をカスタマイズして保存する
- 商品の在庫状況を管理する特別なロジックを追加する
- トリガーとして通知を送信する
- 商品のステータスを変更するメカニズムを追加する
- ビジュアル的なフィードバックを提供する
構文
do_action( 'woocommerce_product_quick_edit_save', $post_id );
パラメータ
$post_id
: 編集されている商品の ID。
戻り値
このアクション自体は戻り値を返しませんが、他のフックまたは関数を呼び出すことによって結果を処理できます。
使用可能なWooCommerceのバージョン
WooCommerce でこのアクションはバージョン 2.0.0 以降で使用可能です。
使用可能なWordPressのバージョン
WordPress 4.0 以降で使用可能です。
サンプルコード
サンプルコード 1: カスタムメタデータを保存する
このコードは、商品が更新されたときにカスタムフィールドのデータを保存します。
add_action( 'woocommerce_product_quick_edit_save', 'save_custom_meta_data' );
function save_custom_meta_data( $post_id ) {
if ( isset( $_POST['custom_field'] ) ) {
update_post_meta( $post_id, '_custom_field', sanitize_text_field( $_POST['custom_field'] ) );
}
}
引用元: https://developer.wordpress.org/
サンプルコード 2: 在庫管理をカスタマイズする
このコードは、商品の在庫状況を特定の条件に基づいて更新します。
add_action( 'woocommerce_product_quick_edit_save', 'custom_stock_status_update' );
function custom_stock_status_update( $post_id ) {
if ( isset( $_POST['_stock_status'] ) ) {
$stock_status = sanitize_text_field( $_POST['_stock_status'] );
update_post_meta( $post_id, '_stock_status', $stock_status );
}
}
引用元: https://wordpress.stackexchange.com/
サンプルコード 3: トリガー通知の送信
このコードは、商品が保存された際にメール通知を送信します。
add_action( 'woocommerce_product_quick_edit_save', 'send_notification_on_product_save' );
function send_notification_on_product_save( $post_id ) {
$product = wc_get_product( $post_id );
$to = 'admin@example.com';
$subject = '商品が更新されました';
$message = '商品名: ' . $product->get_name() . ' が更新されました。';
wp_mail( $to, $subject, $message );
}
引用元: https://www.smashingmagazine.com/
サンプルコード 4: 商品ステータスの変更
このコードは、商品の状態を特定の条件で変更します。
add_action( 'woocommerce_product_quick_edit_save', 'change_product_status' );
function change_product_status( $post_id ) {
if ( isset( $_POST['status'] ) && $_POST['status'] == 'draft' ) {
// 商品をドラフト状態にする
wp_update_post( array( 'ID' => $post_id, 'post_status' => 'draft' ) );
}
}
引用元: https://www.wpexplorer.com/
サンプルコード 5: 商品にビジュアルフィードバックを提供する
このコードは、管理画面において商品の更新が成功したことを表示します。
add_action( 'woocommerce_product_quick_edit_save', 'admin_notice_on_product_save' );
function admin_notice_on_product_save( $post_id ) {
add_action( 'admin_notices', function() {
echo '<div class="notice notice-success is-dismissible"><p>商品が正常に更新されました。</p></div>';
});
}
引用元: https://codex.wordpress.org/
この関数のアクションでの使用可能性
アクション名 | 使用例 |
---|---|
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 |
この表は、woocommerce_product_quick_edit_save
アクションがどのような他のフックスと併用されるかを示しています。