首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用重力表单动态地从嵌套表单中提取值&重力Wiz嵌套表单

使用重力表单动态地从嵌套表单中提取值&重力Wiz嵌套表单
EN

Stack Overflow用户
提问于 2021-12-13 17:11:40
回答 3查看 748关注 0票数 0

因此,我一直在重新构建一个完整的网站,其中一部分内容涉及到从强大的形式到重力形式的转变。我们这样做是因为我们希望使用嵌套的表单特性,这样我们就可以自动化多个与会者,而不必为每个人创建一个新的表单。

这就是问题所在--在我们的老网站上,每个参与者都有一个单独的表单,我们有一个代码使用画布API向画布发送名称+电子邮件信息,并自动注册该公司提供的在线课程的用户。在试图将这些代码的部分转换为使用嵌套表单时,我遇到了一个问题:

  1. 主要问题是,该值是作为嵌套表单条目中的所有信息而不是通过名称/电子邮件/等

来显示出来的。

  1. 信息被吐了两次,也许是因为表单的结构方式?在表单/嵌套表单中有几个计算,所以我把它记在上面。

代码语言:javascript
复制
      [1] => WC_Meta_Data Object
        (
            [current_data:protected] => Array
                (
                    [id] => 212
                    [key] => Attendee Registration
                    [value] => 
    
                                            
                                            Name
                        Test Name
                                            Email Address
                        courses@email.com
                                            Cell Phone
                        (333) 333-3333
                                            Would you like to receive text message reminders for this registration?
                        No
                                            Post-class notification is required for the following states, please identify if you will be using this class to fulfill any state license requirements:
                        N/A
                                            You'll receive a hard copy and digital certificate upon course completion. Additional options are available here:
                        
                                            All live classes include a hard copy manual and regulations. To join our effort to save paper, please also add any of the following options to take your books home:
                        
                    
                


                )

            [data:protected] => Array
                (
                    [id] => 212
                    [key] => Attendee Registration
                    [value] => 
    
                                            
                                            Name
                        Test Name
                                            Email Address
                        courses@email.com
                                            Cell Phone
                        (333) 333-3333
                                            Would you like to receive text message reminders for this registration?
                        No
                                            Post-class notification is required for the following states, please identify if you will be using this class to fulfill any state license requirements:
                        N/A
                                            You'll receive a hard copy and digital certificate upon course completion. Additional options are available here:
                        
                                            All live classes include a hard copy manual and regulations. To join our effort to save paper, please also add any of the following options to take your books home:
                        
                    
                


                )

        )

另外:我还在玩通过_gravity_form_linked_entry_id获取主条目的ID,并通过_gravity_form_lead获取嵌套的信息。

我所能得到的最好的就是这个..。所以,是的,如果有人有任何指点的话,就有点迷失了如何在这里前进!非常感谢!

代码语言:javascript
复制
[data:protected] => Array
                (
                    [id] => 211
                    [key] => _gravity_forms_history
                    [value] => Array
                        (
                            [_gravity_form_cart_item_key] => 72201a9586fb30895b8fb5cac2a796b9
                            [_gravity_form_linked_entry_id] => 125
                            [_gravity_form_lead] => Array
                                (
                                    [form_id] => 1
                                    [source_url] => https://chcv2.flywheelstaging.com/product/air-monitoring-specialist-live/
                                    [ip] => 75.151.95.41
                                    [42.1] => Course Price
                                    [42.2] => $580.00
                                    [42.3] => 1
                                    [21] => 122
                                    [40.1] => Add-On Fees
                                    [40.2] => $0.00
                                    [40.3] => 1
                                )

                            [_gravity_form_data] => Array
                                (
                                    [id] => 1
                                    [bulk_id] => 0
                                    [display_title] => 
                                    [display_description] => 
                                    [disable_woocommerce_price] => no
                                    [price_before] => 
                                    [price_after] => 
                                    [disable_calculations] => no
                                    [disable_label_subtotal] => yes
                                    [disable_label_options] => yes
                                    [disable_label_total] => no
                                    [disable_anchor] => no
                                    [label_subtotal] => Course Fee
                                    [label_options] => Additional Attendees + Selected Options
                                    [label_total] => Attendee Registration + Add-Ons:
                                    [use_ajax] => no
                                    [enable_cart_edit] => no
                                    [enable_cart_edit_remove] => no
                                    [keep_cart_entries] => no
                                    [send_notifications] => no
                                    [enable_cart_quantity_management] => stock
                                    [cart_quantity_field] => 
                                    [update_payment_details] => yes
                                    [display_totals_location] => after
                                    [structured_data_override] => no
                                    [structured_data_low_price] => 
                                    [structured_data_high_price] => 
                                    [structured_data_override_type] => overwrite
                                )

                        )

                )

更新:这里是如何将下面的评论中的代码合并在一起,在这里我得到了一个错误

代码语言:javascript
复制
add_action( 'woocommerce_thankyou', 'canvas_enroll', 20, 2 );

function canvas_enroll($orders) {
    $query = new WC_Order_Query( array(
        'orderby' => 'date',
        'order' => 'DESC',
        'return' => 'ids',
    ) );
    $orders = $query->get_orders();
    foreach($orders as $order){
        foreach ($order->get_items() as $item_id => $item_data) {
            if(isset($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]["form_id"]) && !empty($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]["form_id"])){ 
                $linked_entry=$item_data->get_meta( '_gravity_forms_history')["_gravity_form_linked_entry_id"];
                $entry_id = $linked_entry;
                $entry = GFAPI::get_entry( $entry_id );//id of Parent Gravity Form
                if(isset($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['2']) && !empty($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['2'])){
                    $linked_nested_value=$item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['2'];
                    $nested_value_array = preg_split ("/\,/", $linked_nested_value); //array of child entries
                    $child_entry_amt = substr_count($linked_nested_value, ",") + 1;
                    if ($child_entry_amt > 0){   
                        for ($n = 0; $n < $child_entry_amt; $n++) {
                            $entry_id_nest[$n]=$nested_value_array[$n];
                            $entry_nest[$n] = GFAPI::get_entry( $entry_id_nest[$n] ); //nested form entry
                            $name[$n]  = $entry_nest[$n]['12.3'].''.$entry_nest[$n]['12.6'];//replace 1.3 and 1.6 with nested field id of name
                            $email[$n] = $entry_nest[$n]['11']; //2 is the GF nested field id of email        
                        }
                    }
                }            
            }               
        }
    }
}
EN

回答 3

Stack Overflow用户

发布于 2022-01-17 17:57:29

终于弄明白了!一些非常有用的东西是回显条目元数据(在我的例子中是$value),以便显示所有的ID等等,这就是为什么我能够计算出我在这个ID中需要21个子条目。

我不太清楚为什么我必须切换到wc_get_order而不是wc_order_query,但是它解决了我所遇到的错误。

代码语言:javascript
复制
function canvas_enroll($order_id) {

$order = wc_get_order( $order_id);
    
$order_id = array(
    'orderby' => 'date',
    'order' => 'DESC',
    'return' => 'ids',
);  
    
if(!empty($order) && isset($order)){
// Loop through order line items
foreach( $order->get_items() as $key => $value ){

    // get order item data (in an unprotected array)
             
            if(isset($value->get_meta( '_gravity_forms_history')["_gravity_form_lead"]["form_id"]) && !empty($value->get_meta( '_gravity_forms_history')["_gravity_form_lead"]["form_id"])){ 
                
                $linked_entry=$value->get_meta( '_gravity_forms_history')["_gravity_form_linked_entry_id"];
                $entry_id = $linked_entry;
                $entry = GFAPI::get_entry( $entry_id );//id of Parent Gravity Form              
                
                if(isset($value->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['21']) && !empty($value->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['21'])) { //21 was the id for my child form

                    
                    $linked_nested_value = $value->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['21']; 
                    
                    $nested_value_array = preg_split ("/\,/", $linked_nested_value); //array of child entries
                    $child_entry_amt = substr_count($linked_nested_value, ",") + 1;
                    if ($child_entry_amt > 0){   
                        for ($n = 0; $n < $child_entry_amt; $n++) {
                            $entry_id_nest[$n]=$nested_value_array[$n];
                            $entry_nest[$n] = GFAPI::get_entry( $entry_id_nest[$n] ); //nested form entry
                            $firstname[$n]  = $entry_nest[$n]['12.3'];//replace 12.3 with nested field id of first name
                            $lastname[$n]  = $entry_nest[$n]['12.6'];//replace 12.6 with nested field id of last name
                            $email[$n] = $entry_nest[$n]['11']; //replace 11 with nested field id of email        
                        }
                    } 
                } 
            }         
        }
    }       
}
票数 1
EN

Stack Overflow用户

发布于 2021-12-15 00:51:22

我将粘贴我在另一个项目中使用的代码,我需要这些代码来提取相同类型的数据,以防它将您置于正确的轨道上。您必须用表单中的‘d替换数字:

代码语言:javascript
复制
$query = new WC_Order_Query( array(
    'orderby' => 'date',
    'order' => 'DESC',
    'return' => 'ids',
) );
$orders = $query->get_orders();
foreach($orders as $order){
    foreach ($order->get_items() as $item_id => $item_data) {
        if(isset($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]["form_id"]) && !empty($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]["form_id"])){ 
            $linked_entry=$item_data->get_meta( '_gravity_forms_history')["_gravity_form_linked_entry_id"];
            $entry_id = $linked_entry;
            $entry = GFAPI::get_entry( $entry_id );//id of Parent Gravity Form
            if(isset($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['2']) && !empty($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['2'])){
                $linked_nested_value=$item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['2'];
                $nested_value_array = preg_split ("/\,/", $linked_nested_value); //array of child entries
                $child_entry_amt = substr_count($linked_nested_value, ",") + 1;
                if ($child_entry_amt > 0){   
                    for ($n = 0; $n < $child_entry_amt; $n++) {
                        $entry_id_nest[$n]=$nested_value_array[$n];
                        $entry_nest[$n] = GFAPI::get_entry( $entry_id_nest[$n] ); //nested form entry
                        $name[$n]  = $entry_nest[$n]['1.3'].''.$entry_nest[$n]['1.6'];//replace 1.3 and 1.6 with nested field id of name
                        $email[$n] = $entry_nest[$n]['2']; //2 is the GF nested field id of email        
                    }
                }
            }            
        }               
    }
}
票数 0
EN

Stack Overflow用户

发布于 2022-01-14 19:40:53

好的。先试试这个,看看它是否改变了什么:

代码语言:javascript
复制
$query = new WC_Order_Query( array(
    'orderby' => 'date',
    'order' => 'DESC',
    'return' => 'ids',
) );
$orders = $query->get_orders();
foreach($orders as $order){
  if(!empty($order) && isset($order)){
    foreach ($order->get_items() as $item_id => $item_data) {
        if(isset($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]["form_id"]) && !empty($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]["form_id"])){ 
            $linked_entry=$item_data->get_meta( '_gravity_forms_history')["_gravity_form_linked_entry_id"];
            $entry_id = $linked_entry;
            $entry = GFAPI::get_entry( $entry_id );//id of Parent Gravity Form
            if(isset($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['2']) && !empty($item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['2'])){
                $linked_nested_value=$item_data->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['2'];
                $nested_value_array = preg_split ("/\,/", $linked_nested_value); //array of child entries
                $child_entry_amt = substr_count($linked_nested_value, ",") + 1;
                if ($child_entry_amt > 0){   
                    for ($n = 0; $n < $child_entry_amt; $n++) {
                        $entry_id_nest[$n]=$nested_value_array[$n];
                        $entry_nest[$n] = GFAPI::get_entry( $entry_id_nest[$n] ); //nested form entry
                        $name[$n]  = $entry_nest[$n]['1.3'].''.$entry_nest[$n]['1.6'];//replace 1.3 and 1.6 with nested field id of name
                        $email[$n] = $entry_nest[$n]['2']; //2 is the GF nested field id of email        
                    }
                }
            }            
        }               
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70338429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档