Total ratlos. Ich habe ein Kontrollkästchen auf der Benutzerprofilseite, aber es verweigert die Aktualisierung. Es ist nicht einmal ein Array-Sollwert oder irgendetwas, nur setzt nie ... Scheint wie keine Daten an den Postwert übergeben wird ...Wordpress Checkbox wird nie auf Profilseite aktualisiert
per @RST aktualisiert und nun per @ simon-Pollard
// This will show below the color scheme and above username field
add_action('profile_personal_options', 'extra_profile_fields');
add_action('personal_options_update', 'update_field_value');
add_action('edit_user_profile_update', 'update_field_value');
function extra_profile_fields($user) {
// get the value of a single meta key
$user_id = $user->ID;
echo "user id: " . $user_id . "<br/>";
$meta_value = get_user_meta($user->ID, 'emailPrefs', true); // $user contains WP_User object
// do something with it.
echo "checked value: " . $meta_value. "<br/>";
?>
<h2>Email Settings</h2>
<table class="form-table">
<th scope="row" id="lbl-subtitle" for="email-settings">Email on Timer Reset</th>
<td><fieldset>
<form method='post' action="profile.php">
<input type="checkbox" id="email-settings" name='email-settings'
<?php if ($meta_value == '1'){ echo 'checked'; } ?> value ="<?php echo $meta_value?>" />
</form>
<?php submit_button(); ?>
</td>
</fieldset>
</table>
<?php
}
function update_field_value($user) {
$user_id =$user->ID;
if (isset($_POST['email-settings']) && $_POST['email-settings'] == 'on') {
update_user_meta($user_id, 'emailPrefs', '1');
} else {
update_user_meta($user_id, 'emailPrefs', NULL);
}
}
Setzen Sie den Update-Befehl in eine separate Funktion und verwenden Sie die \t add_action ('personal_options_update', 'your_update_function'); \t add_action ('edit_user_profile_update', 'your_update_function'); – RST
Versuchen Sie, 'if (! Empty ($ _ POST [' E-Mail-Einstellungen '])' zu ... 'if (isset ($ _ POST ['E-Mail-Einstellungen']) && $ _POST ['E-Mail-Einstellungen'] == 'on') 'Ich denke, im Moment stellen Sie es immer auf '' und btw sollten Sie es auf null setzen :) nicht '' –
@SimonPollard Ich versuchte issset zunächst und las, dass es _always_ immer mit wahr bewerten würde ein Kontrollkästchenwert Nichts aktualisiert, so dass meine Funktion nicht aufgerufen wird – Frankenmint