无法在后端配置文件更新时访问$_POST

时间:2018-05-02 作者:Ferran

我在我的网站上为用户提供了一些元字段,但我无法访问$_POST 反更新后的变量。奇怪的是,在更新之后,如果我对条件进行注释,那么meta将使用$_POST 内容,但我无法使用条件句使用$_POST 因为我有个错误,

未定义索引:gdpr\\u data\\u approvement\\u字段

我可以看到所有$_POST 数据输入user-edit.php, 但由于表单位于url中/wp-admin/user-edit.php?user_id=13&wp_http_referer=%2Fwp%2Fwp-admin%2Fusers.php 我无法访问它。

代码如下:

<?php
function privacity_user_profile_fields() {
    global $user_id;

    if ($_POST[\'gdpr_data_consent_field\'] == \'true\' ){
        update_user_meta( $user_id, \'gdpr_user_register_consent\', \'true\' );
        echo \'IS TRUE\';
    } else {
        update_user_meta( $user_id, \'gdpr_user_register_consent\', \'false\' );
        echo \'IS FALSE\';
    }

    $data_consent = get_user_meta($user_id, \'gdpr_user_register_consent\', true);
    $data_consent_text = \'He leído y entendido el cómo se tratarán los datos introducidos durante el registro en esta web.\';
?>

<h2 id="privacity">Opciones de privacidad</h2>
<p>
    <input type="checkbox" name="gdpr_data_consent_field" id="data-consent-field" value="true" <?php echo ($data_consent == \'true\') ? \'checked\' : \'\' ?> />
    <label for="data-consent-field"><?php echo $data_consent_text; ?></label>
</p>
<?php 
}
add_action(\'edit_user_profile\', \'privacity_user_profile_fields\');
add_action( \'edit_user_profile_update\', \'privacity_user_profile_fields\' );
?>
我睡不着!!我做错了什么?非常感谢

1 个回复
SO网友:Ferran

我发现了我的错误。我挂接了两次相同的代码,一个在“edit\\u user\\u profile”中,另一个在“edit\\u user\\u profile\\u update”中。我已将显示代码与反更新代码分离,现在它的工作方式就像必须:

<?php
function privacity_user_profile_fields() {
    global $user_id;
    $data_consent = get_user_meta($user_id, \'gdpr_user_register_consent\', true);
    $data_consent_text = \'He leído y entendido el cómo se tratarán los datos 
      introducidos durante el registro en esta web.\';
    ?>

    <h2 id="privacity">Opciones de privacidad</h2>
    <p>
        <input type="checkbox" name="gdpr_data_consent_field" id="data-consent-field" value="true" <?php echo ($data_consent == \'true\') ? \'checked\' : \'\' ?> />
        <label for="data-consent-field"><?php echo $data_consent_text; ?></label>
    </p>
    <?php 
}
add_action(\'edit_user_profile\', \'privacity_user_profile_fields\');

function privacity_user_profile_update() {
    global $user_id;
    if ($_POST[\'gdpr_data_consent_field\'] == \'true\' ){
        update_user_meta( $user_id, \'gdpr_user_register_consent\', \'true\' );
    } else {
        update_user_meta( $user_id, \'gdpr_user_register_consent\', \'false\' );
    }
}
add_action( \'edit_user_profile_update\', \'privacity_user_profile_update\' );
?>

结束