web-dev-qa-db-fra.com

Type de message personnalisé - Comment obtenir une case à cocher pour mettre à jour le champ méta sur null

J'ai 7 champs méta pour un type de message personnalisé dans Wordpress. Ces 7 en particulier sont des jours de la semaine (du dimanche au samedi) et ont des cases à cocher pour chacun. J'ai réussi à activer la case à cocher POST lorsque la valeur est "Activé". Toutefois, lorsque je reviens à la page d'édition et que j'essaie de la désélectionner, la valeur reste la même dans la base de données.

Voici ce que j'ai pour chaque entrée d'article:

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

Et mes lignes de mise à jour:

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

Il semble que les méta-publications ne sont pas effacées pour "dimanche" lorsque la case à cocher n'est pas cochée.

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

Ou vous pouvez définir la valeur sur false

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

Les cases à cocher non cochées ne sont pas définies dans $ _POST, vous devez donc vider leur champ méta.

Quelque chose comme ça devrait marcher:

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

Les cases à cocher non cochées ne sont pas définies dans $ _POST, elles le sont dans $ _REQUEST, vous pouvez définir la valeur de case à cocher du type de publication personnalisé comme ceci:

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

et obtenez une valeur de case à cocher comme ceci:

global $post;

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

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