在WordPress网站上,我使用联系人表单7和Flamingo来管理联系人表单,并存储数据。
在我的电子邮件中,我一直在使用_serial_number识别存储在Flamingo中的一份意见书。该序列号被添加到打开页面的链接中,并查询数据库中的提交(按序列号),以便在线显示接收电子邮件的用户的所有信息。
我今天已经意识到,您创建的每个表单都会重置序列号。例如:表单1提交序列号从1开始,增加到10 (例如)。如果我做了表格2,提交的序列号再次从1开始。
这造成了一个问题,因为有多个帖子具有相同的序列号,所以我不能保证得到正确的提交。
在任何地方,我都看不出将Flamingo作为邮件标记的方法,我查看了Flamingo的代码,看不到任何钩子,这些钩子允许我将帖子的ID添加到CF7中的邮件标记中。
有人知道这是否可能吗?
发布于 2022-04-21 01:36:59
我解决了这个问题,通过每次表单提交创建和存储自己的唯一令牌,并通过meta_query获得Flamingo帖子,而不是试图通过serial_number获取帖子。不幸的是,它无法解决缺乏自定义令牌的历史提交的问题。
[dynamichidden prtoken "DT_CF7_COOKIE key='dealer_id'"]// define the wpcf7_posted_data callback
function action_wpcf7_posted_data( $array ) {
if( !empty( $array['prtoken'] ) ) {
//Generate real token
$prtoken = $array['prtoken'] . '_' . time() . '_' . bin2hex(random_bytes(8));
if( !empty( $prtoken ) ) {
$array['prtoken'] = $prtoken;
}
}
return $array;
}; 在我的例子中,令牌在电子邮件模板:
<a href="https://example.com/reply-form/?serial_number=[_serial_number]&first-name=[first-name]&surname=[surname]&reply_token=[prtoken]">Reply</a>$args = array(
'post_type' => 'flamingo_inbound',
'fields' => 'ids', //Only return IDS
'meta_query' => array(
array(
'key' => '_field_prtoken', //The custom token field
'value' => sanitize_text_field($field_prtoken), //The token is input by users retrieving data so needs to be sanitized.
)
)
);
$postslist = get_posts( $args );https://stackoverflow.com/questions/68209618
复制相似问题