常用钩子
wpcf7Submit 提交表单后
查询用户提交的ContactForm数据
由于提交到Flamingo的数据实际上是写进wp_posts表的,写入的post_type为flamingo_inbound;
使用WP_Query进行查询
<?phpif (is_user_logged_in()) {// 判断用户是否已登录$curUserID = get_current_user_id(); // 当前用户id// 重置请求数据 - 清空此前的页面请求数据wp_reset_postdata();$userInquiriesQuery = new WP_Query(array('author' => $curUserID . '','post_type' => 'flamingo_inbound','posts_per_page' => 10));if ($userInquiriesQuery->have_posts()) {$inquiriesPosts = $userInquiriesQuery->get_posts();foreach ($inquiriesPosts as $inquiryPost) {//再次判断是否有结果// 采用Flamingo类进行获取和转化为Flamingo对象,fields就是表单字段的key-value了;$flamingoPost = new Flamingo_Inbound_Message($inquiryPost->ID);if (!empty($flamingoPost->id())) {// 判断一下是否有id,如果没有,则可能该post数据并不存在关联的flamingo数据;// flamingo数据处理}else{// 非flamingo数据处理}}}// 使用数据完毕,再次清空,防止污染wp_reset_postdata();}
以上代码是大致的迭代获取post转化为flamingo的过程,17行得到的$flamingoPost已经是个开箱即用的对象了,大部分需要迭代的信息都储存在了$flamingoPost->fields中,以key-value形式可以读取出来,例如,快速输出表格
<?php
foreach ($flamingoPost->fields as $postFieldKey => $postField) {
$flamingoProductsTemplate .= '<div class="text-lg ">' . $postFieldKey . ' : ' . $postField . '</div>';
}
在Vidastone的开发中,这里的fields还包含了一个product-ids的字段,用来储存用户在提交表单的时候,用“,”把提交的产品对象的ID串联储存,所以这里可以还原一下
<?php
foreach (explode(',', $flamingoPost->fields['product-ids']) as $pid) {
// woo product
$wcProduct = WC()->product_factory->get_product($pid);
$product_data = $wcProduct->get_data();
}
这样,我们就得到WooCommerrce中的产品信息了;
