usando update_user_meta no formulário para definir e obter meta personalizada

4

Eu tenho um modelo em que um usuário define alguns meta-valores personalizados por meio de um formulário no front-end de meu site. Eu chamo este formulário através de uma função no meu arquivo functions.php.

Atualmente, quando as entradas de texto são preenchidas e eu clico em enviar, os valores são salvos no banco de dados como esperado, no entanto, não vejo os valores enviados na página até que eu a atualize no meu navegador. Mas quando faço isso, vejo os valores definidos pelo usuário, mas os valores são retirados do banco de dados (a atualização novamente no meu navegador retornará, por padrão, a nenhum valor definido).

Não tenho certeza se tenho essa configuração corretamente?

Aqui está o código do meu modelo:

<h2>Your Values</h2>
Value 1: <?php if(!$new_high) { echo 'Not Set'; } else { echo '$' . $new_high; } ?>
Value 2: <?php if(!$new_medium) { echo 'Not Set'; } else { echo '$' . $new_medium; } ?>
Value 3: <?php if(!$new_low) { echo 'Not Set'; } else { echo '$' . $new_low; } ?>

Em seguida, chamo a função no modelo que possui o formulário: <?php my_form_function(); ?>

No meu arquivo de funções eu tenho isso que abriga o formulário e atualiza o user_meta:

function my_form_function() {
global $current_user;
?>
<form name="setPrices" action="" method="POST">

<fieldset>
<label for="lowPrice">Value 3:</label>
<input type="text" id="lowPrice" name="lowPrice" value="<?php echo $_POST['lowPrice']; ?>" />
</fieldset>

<fieldset>
<label for="mediumPrice">Value 2:</label>
<input type="text" id="mediumPrice" name="mediumPrice" value="<?php echo $_POST['mediumPrice']; ?>" />
</fieldset>

<fieldset>
<label for="highPrice">Value 1:</label>
<input type="text" id="highPrice" name="highPrice" value="<?php echo $_POST['highPrice']; ?>" />
</fieldset>

<button type="submit">Save</button>
</form>

<?php
$low_price = $_POST['lowPrice'];
$medium_price = $_POST['mediumPrice'];
$high_price = $_POST['highPrice'];

update_user_meta( $current_user->ID, '_low_price', $low_price); 
update_user_meta( $current_user->ID, '_medium_price', $medium_price);
update_user_meta( $current_user->ID, '_high_price', $high_price);

}

Portanto, apenas para ter certeza de que não confundi ninguém, O texto acima funciona (meio) e quando o formulário é enviado, os valores são salvos no banco de dados conforme o esperado. Mas eu não vejo os valores no meu modelo até que eu atualize a página, e uma vez que eu faço isso, os valores são redefinidos para nada. Eu sei que meu problema é como / onde eu tenho update_user_meta

    
por Derek 17.02.2014 / 01:55

1 resposta

4

Você precisa extrair seu meta_data do WP e preencher essa informação no formulário ... assim:

function my_form_function() {
global $current_user;

$low_price = get_user_meta( $current_user->ID, '_low_price', true);
$medium_price = get_user_meta( $current_user->ID, '_medium_price', true);
$high_price = get_user_meta( $current_user->ID, '_high_price', true);

?>
<form name="setPrices" action="" method="POST">

<fieldset>
<label for="lowPrice">Value 3:</label>
<input type="text" id="lowPrice" name="lowPrice" value="<?php echo $low_price; ?>" />
</fieldset>

<fieldset>
<label for="mediumPrice">Value 2:</label>
<input type="text" id="mediumPrice" name="mediumPrice" value="<?php echo $medium_price; ?>" />
</fieldset>

<fieldset>
<label for="highPrice">Value 1:</label>
<input type="text" id="highPrice" name="highPrice" value="<?php echo $high_price; ?>" />
</fieldset>

<button type="submit">Save</button>
</form>

<?php
$low_price = $_POST['lowPrice'];
$medium_price = $_POST['mediumPrice'];
$high_price = $_POST['highPrice'];

update_user_meta( $current_user->ID, '_low_price', $low_price); 
update_user_meta( $current_user->ID, '_medium_price', $medium_price);
update_user_meta( $current_user->ID, '_high_price', $high_price);

}
    
por user42826 17.02.2014 / 02:53

Tags