it-swarm.com.de

Benutzerdefinierter Beitragstyp - Wie wird das Kontrollkästchen zum Aktualisieren des Metafelds auf null aktiviert?

Ich habe 7 Metafelder für einen benutzerdefinierten Beitragstyp in Wordpress. Diese 7 sind insbesondere Wochentage (Sonntag bis Samstag) und haben jeweils Kontrollkästchen. Ich habe das Kontrollkästchen erfolgreich auf POST gesetzt, wenn der Wert "Ein" ist. Wenn ich jedoch zur Bearbeitungsseite zurückkehre und versuche, die Auswahl aufzuheben, bleibt der Wert in der Datenbank derselbe.

Folgendes habe ich für jede Artikeleingabe:

 <li><input type="checkbox" name="sunday" <?php if( $meta_sunday == true ) { ?>checked="checked"<?php } ?>" /> Sunday<br /></li>

Und meine Update-Zeilen:

if(!isset($_POST["sunday"])):
    return $post;
    endif;
    update_post_meta($post->ID, "sunday", $_POST["sunday"] );
4
javy

Es scheint, dass das Post-Meta für "Sonntag" nicht gelöscht wird, wenn das Kontrollkästchen deaktiviert ist.

If( isset($_POST['sunday']) ){
    update_post_meta($post->ID, "sunday", $_POST["sunday"] );
}else{
    delete_post_meta($post->ID, "sunday");
}
return $post;

Oder Sie können den Wert auf false setzen

If( isset($_POST['sunday']) ){
    update_post_meta($post->ID, "sunday", true );
}else{
    update_post_meta($post->ID, "sunday", false );
}
return $post;
4
Ryan Meier

Deaktivierte Kontrollkästchen sind in $ _POST nicht aktiviert, sodass Sie deren Metafeld leeren müssen.

So etwas sollte funktionieren:

 $sunday = ( isset( $_POST['sunday'] ) ) ? $_POST['sunday'] : "";
 update_post_meta( $post->ID, 'sunday', $sunday );
2
Shane

Deaktivierte Kontrollkästchen sind in $ _POST nicht aktiviert. Sie sind in $ _REQUEST aktiviert. Sie können den Kontrollkästchenwert eines benutzerdefinierten Beitragstyps wie folgt festlegen:

if ( isset( $_REQUEST['inprint'] ) ) {
   update_post_meta($post_id, '_inprint', TRUE);
 } else {
   update_post_meta($post_id, '_inprint', FALSE);
 }

und erhalte einen Checkbox-Wert wie diesen:

global $post;

$inprint= get_post_meta($post->ID, '_inprint', true);

<input type="checkbox" name="inprint" value='1'<?php checked(1, $inprint); ?> />
0
Muti Ullah