是否有从 wpforms 读取 POST 数据的特定方法?

Posted

技术标签:

【中文标题】是否有从 wpforms 读取 POST 数据的特定方法?【英文标题】:Is there a specific way to read POST data from wpforms? 【发布时间】:2021-01-12 07:04:10 【问题描述】:

我正在尝试访问用户在使用 wpforms 创建的表单上输入的表单数据并将它们保存为会话变量,但无论我尝试什么,我似乎都无法从表单中获得任何信息。我可以将信息硬编码到会话变量中,它们按预期工作,但它需要从表单中提取数据。

这是我在页面上的 php 代码中的 sn-p:

<?php
echo session_id();
$_SESSION['age'] = $_POST['wpforms[fields][3]'];
$_SESSION['gender'] = $_POST['wpforms[fields][2]'];
?>

提交表单后,我还包含了第二页中的一些代码,当我在第一页中对它们进行硬编码时,我看到会话变量设置正确,但在我尝试设置时未设置从表单中拉出。

echo session_id();
if ( isset($_SESSION['gender'])) 
echo "Gender is  set.<br>";

else 
echo "Gender not set<br>";

if ( isset($_SESSION['age'])) 
echo "Age is set.<br>";

else 
echo "Age not set.<br>";

echo $_SESSION['gender'];
echo $_SESSION['age'];

任何见解将不胜感激!谢谢! Screenshot of page inspection

【问题讨论】:

【参考方案1】:

我想通了。我必须将以下代码添加到我正在使用的 wordpress 主题的 functions.php 文件中:

add_action('init', 'register_my_session');
function register_my_session() 
    if (!session_id() ) 
        session_start();
        
function wpf_dev_process_entry_save( $fields, $entry, $form_id, $form_data ) 
    // Only run on my form with ID = 4117
    if ( absint( $form_data['id'] ) !== 4117 ) 
            return $fields;
         
    $_SESSION['age'] = $fields[3]['value']; // This is where we access the form data
    $_SESSION['gender'] = $fields[2]['value'];

add_action( 'wpforms_process_entry_save', 'wpf_dev_process_entry_save', 10, 4 );
    

【讨论】:

以上是关于是否有从 wpforms 读取 POST 数据的特定方法?的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress 帮助(WPForms + PayPal 工作流程)

是否有从 firebase 实时数据库中获取 n 个元素的功能?

是否有从 Google Play 商店检索应用产品收入的 API? [关闭]

php WPForms:添加新货币

php WPForms:在移动设备上隐藏表单

将图标添加到 wpform 提交按钮