繁体   English   中英

cf7 提交 WP 后更新用户元数据

[英]Update user meta after cf7 submit WP

我想在提交 cf7 表单后从用户元数据中减去 1。 我有这个 function 但它不起作用:

$user_id = get_current_user_id();
add_action( 'wpcf7_before_send_mail', 'process_contact_form_data' );
function process_contact_form_data( $contact_data ){

   $user_last = get_user_meta( $user_id, 'QuestionAvailiable', true ); 
    $user_last_sum =  $user_last - 1;
    update_user_meta( $user_id, 'QuestionAvailiable', $user_last_sum);          
}

表单提交后, QuestionAvailiable仍然是 3,而不是 2。有什么问题吗?

当前用户 ID 通过隐藏的meta字段通过表单传递,这些元字段可通过方法get_meta(field)访问

这应该适合你。

add_action( 'wpcf7_before_send_mail', 'process_contact_form_data' );
function process_contact_form_data( $contact_data ) {
    $user_last     = get_user_meta( $contact_data->get_meta( 'current_user_id' ), 'QuestionAvailiable', true );
    $user_last_sum = absint( $user_last ) - 1;
    update_user_meta( $contact_data->get_meta( 'current_user_id' ), 'QuestionAvailiable', $user_last_sum );
}

作为参考,以下是$contact_form object 可用的元字段,它是wpcf7_before_send_mail挂钩的第一个参数。

array(
    'timestamp'         => integer,
    'remote_ip'         => string,
    'remote_port'       => integer,
    'user_agent'        => string,
    'url'               => 'current_url',
    'unit_tag'          => string,
    'container_post_id' => integer,
    'current_user_id'   => integer,
    'do_not_store'      => bool,
);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM