首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Woocommerce订单号转换为Gravity嵌套形式

将Woocommerce订单号转换为Gravity嵌套形式
EN

Stack Overflow用户
提问于 2020-01-03 10:31:40
回答 1查看 342关注 0票数 0

我正在使用Woocommerce +重力表单和WooCommerce重力表单产品插件。我的表单包含一个嵌套的Gravity表单。我需要将Woocommerce订单号添加到父表单和子重力表单中。我用下面的代码实现了这一点:

代码语言:javascript
复制
add_action( 'woocommerce_checkout_order_processed', 'wc_add_order_id' );<br>function wc_add_order_id( $order_id ) {
$order = wc_get_order( $order_id );
    foreach ( $order->get_items() as $item ){
        $product_id = $item['product_id'];  
        if ( has_term( 'camp', 'product_cat', $product_id ) ) { //my woocommerce category
            $meta_data = $item->get_formatted_meta_data();
            $meta_data_items = $item->get_meta_data();
            foreach ( $meta_data_items as $meta ) {
                $entry_id = $meta->value['_gravity_form_linked_entry_id'];
                $entry = GFAPI::get_entry( $entry_id );
                $entry['40'] = $order_id ;  //40 is the id of a single field reserved for the Order #
                $result = GFAPI::update_entry( $entry );
                return $result;
            }
        }
    }
};

然后,我尝试使用以下方法将订单号添加到我的子窗体中(如果我手动更新父窗体条目,则可以使用此方法。它不能从上面的update_entry触发器自动工作:

代码语言:javascript
复制
add_action( 'gform_after_update_entry_82', function ( $form, $entry_id ) { //82 is the parent form id<br>
    $entry = GFAPI::get_entry( $entry_id );
    $entry_child_order = rgar( $entry, '2' );  //2 is the field that contains the entry id of the child
    $order_id = rgar( $entry, '40' ); //this has the Woocommerce Order #
    $entry2 = GFAPI::get_entry( $entry_child_order); 
    $entry2['147'] = $order_id ; //147 is the single field reserved for the order number
    $result = GFAPI::update_entry( $entry2 );
    return $result;
}, 10, 2 );

有人知道为什么"GFAPI::update_entry( $entry );“不能自动触发代码的后半部分吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-05 08:45:35

好的。我想通了。我能够把所有的东西都放到同一个函数中,它正在工作。

代码语言:javascript
复制
//add order number to gravity forms
add_action( 'woocommerce_checkout_order_processed', 'wc_add_order_id' );
function wc_add_order_id( $order_id ) {
$order = wc_get_order( $order_id );
$cart_reg = $order->get_items();
$entry_id = array();
$entry_id2 = array();
$entry_id[] = $linked_entry;
$entry_id2[] = $linked_nested_value;
foreach( $cart_reg as $key => $value) {  
    $linked_entry=$value->get_meta( '_gravity_forms_history')["_gravity_form_linked_entry_id"];
    $entry_id = $linked_entry;
    $entry = GFAPI::get_entry( $entry_id );
    $entry['40'] = $order_id;  //40 is my field number that will contain orede number
    $result = GFAPI::update_entry( $entry );
    $linked_nested_value=$value->get_meta( '_gravity_forms_history')["_gravity_form_lead"]['2'];
    if(!$linked_nested_value == ''){
        $nested_value_array = preg_split ("/\,/", $linked_nested_value); //array of child entries
        $child_entry_amt = substr_count($linked_nested_value, ",") + 1;
    }//child entries

    if ($child_entry_amt > 0){   
        for ($n = 0; $n < $child_entry_amt; $n++) {
            $entry_id2=$nested_value_array[$n];
            $entry2 = GFAPI::get_entry( $entry_id2 );
            $entry2['147'] = $order_id;//this is my field number on my child form that will contain order number
            $result2 = GFAPI::update_entry( $entry2 );
        }
    }
}

};

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59572530

复制
相关文章

相似问题

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