WooCommerceとGravity Formsを利用し、 SalesForceと統合するWordPress のメンバーシップ システムを構築しようとしています。
woocommerce_add_to_cart_validation
フィルターを適切に使用する方法について、誰かが私に指示を与えることができますか? このフックを適切に利用する方法がわかりません。
何をしても、カスタム検証を実行しようとすると、アイテムがカートに追加されません。以下は私のコードです:
add_filter( 'woocommerce_add_to_cart_validation', 'validate_active_subscription', 10, 10 );
function validate_active_subscription( $valid, $product_id, $quantity, $variation_id, $variations ) {
global $woocommerce;
$cart_item_data = (array) apply_filters( 'woocommerce_add_cart_item_data', $cart_item_data, $product_id, $variation_id );
$item_data = $cart_item_data["_gravity_form_lead"];
//CAPTURE THE ID OF THE MEMBERSHIP CATEGORY
$idObj = get_term_by('slug','membership','product_cat');
$membership_id = $idObj->term_id;
$membership_purchased = false;
$terms = woocommerce_get_product_terms($product_id, 'product_cat' );
foreach ($terms as $term) {
if($term->term_id == $membership_id){
$membership_purchased = true;
}
}
if($membership_purchased){
//LET'S CHECK THAT, IF THIS EMAIL EXISTS WITHIN SALESFORCE, IT IS ASSOCATED WITH THE SAME INDIVIDUAL
try {
$mySforceConnection = SalesForce_Access::Connection();
$sf_contact = SalesForce_Access::Search_Contacts_Via_Email($mySforceConnection, $item_data[6]);
if( $sf_contact->FirstName == $item_data[3] && $sf_contact->LastName == $item_data[4]){
//$valid = true;
}else{
//$woocommerce->add_error("The email address you supplied already exists within our system. Please supply a different email");
//$valid = false;
}
}
catch (Exception $e)
{
//$woocommerce->add_error($e->faultstring);
//$valid = false;
}
}
}
ユーザーがメンバーシップ アイテムをカートに追加する前に、電子メール アドレス、姓名をチェックして、情報が既存のレコードと適切に一致することを確認します (たとえば、電子メールが存在する場合、提供された姓名も必要です)。マッチ)。
ただし、標準操作に戻ることができるように、検証 (または無効化) を WooCommerce に適切に戻すにはどうすればよいですか。私がすることはすべて、単一の製品ページにループバックし、重力フォーム フィールドを削除するようです。
任意の考えをいただければ幸いです。