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"] );
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;
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 );
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); ?> />