Tipo de publicación personalizada: cómo obtener la casilla de verificación para actualizar el campo meta a nulo

4

Tengo 7 campos de metadatos para un tipo de publicación personalizada en Wordpress. Estos 7 en particular son días de la semana (de domingo a sábado) y tienen casillas de verificación para cada uno. He conseguido con éxito la casilla de verificación para POST cuando el valor está "Activado", sin embargo, cuando vuelvo a la página de edición e intento anular la selección, el valor permanece igual en la base de datos.

Esto es lo que tengo para cada entrada de elemento:

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

Y mis líneas de actualización:

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

3 respuestas

4

Aparece que el meta de la publicación no se está borrando para 'domingo' cuando la casilla de verificación no está seleccionada.

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

O puede establecer el valor en falso

If( isset($_POST['sunday']) ){
    update_post_meta($post->ID, "sunday", true );
}else{
    update_post_meta($post->ID, "sunday", false );
}
return $post;
    
respondido por el Ryan Meier 07.02.2012 - 18:06
2

Las casillas de verificación no seleccionadas no están establecidas en $ _POST, por lo que tendrías que vaciar su campo meta.

Algo como esto debería funcionar:

 $sunday = ( isset( $_POST['sunday'] ) ) ? $_POST['sunday'] : "";
 update_post_meta( $post->ID, 'sunday', $sunday );
    
respondido por el Shane 07.02.2012 - 18:04
0

Las casillas de verificación no seleccionadas no se configuran en $ _POST, se configuran en $ _REQUEST, puede configurar el valor de la casilla de verificación del tipo de publicación personalizada de esta manera:

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

y obtenga un valor de casilla de verificación como este:

global $post;

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

<input type="checkbox" name="inprint" value='1'<?php checked(1, $inprint); ?> />
    
respondido por el Muti Ullah 08.11.2016 - 00:47

Lea otras preguntas en las etiquetas