Ich versuche, eine meta_box mit einem einzigen Kontrollkästchen zu setzen. Alles funktioniert einwandfrei. Wenn ich sie jedoch deaktiviere und den Beitrag speichere, wird sie erneut als aktiviert markiert. Ich habe einen Blick darauf geworfen, kann aber meinen Fehler nicht finden.
Schauen Sie sich meinen Code an.
function am_checkbox_option() {
global $post;
$custom = get_post_custom($post->ID);
$front_event = $custom["front_event"][0];
wp_nonce_field(__FILE__, 'am_front_event');
if ( $front_event ) {
$checked = "checked=\"checked\"";
} else {
$checked = "";
}
?>
<label>Display Content? (type yes):</label>
<input type="checkbox" name="front_event" value="true" <?php echo $checked; ?> />
<?php
}
}
add_action('save_post', function() {
if ( defined( 'DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
global $post;
if ( $_POST && !wp_verify_nonce($_POST['am_front_event'], __FILE__) ) {
return;
}
if ( isset($_POST['front_event']) ) {
update_post_meta($post->ID, 'front_event', $_POST['front_event']);
}
});
Danke im Voraus
add_meta_boxes
Aktion zum Hinzufügen von Metaboxen (speziell dafür), wie im Beispiel auf deradd_metabox
Codex-Seite beschrieben. Sie profitieren auch davon, dass der Beitragstyp und das Beitragsobjekt an den Rückruf übergeben werden.Fügen Sie einfach eine else-Klausel hinzu, um das Post-Meta zu löschen, wenn es nicht aktiviert ist, und Ihr Code funktioniert einwandfrei. Ändern Sie also Folgendes:
zu
quelle