我想在帖子元中添加一个复选框,并将其设置为默认选中状态。我正在尝试以下代码,但默认情况下它不会显示复选框。但是,它会正确保存,并且在保存帖子后,会显示复选框。
如何将其设置为默认选中?
<?php
$checked = get_post_meta( $post->ID, \'show_links\', true ); //returns string(0) ""
$current = true;
$echo = true;
?>
<input name="show_links" type="checkbox" value="1" <?php checked( $checked, $current, $echo ); ?>/>
这就是我保存值的方式:
if ( isset( $_POST[\'show_links\'] ) && $_POST[\'show_links\'] == 1) {
update_post_meta( $post->ID, \'show_links\', 1 );
} else {
delete_post_meta( $post->ID, \'show_links\', 1 );
}
SO网友:Claude Vedovini
您应该使用delete_post_meta( $post->ID, \'show_links\' );
而不是delete_post_meta( $post->ID, \'show_links\', 1 );
最后一个表单用于在多个值具有相同键时删除特定值。在这里,您很可能已经存储了一个值,它是一个从未删除的空字符串,这就是您调用时得到的值get_post_meta
. 因此,这应该可以解决您的问题:
if ( isset( $_POST[\'show_links\'] ) && $_POST[\'show_links\'] == 1) {
update_post_meta( $post->ID, \'show_links\', 1 );
} else {
delete_post_meta( $post->ID, \'show_links\' );
}
但是,您这样做的方式会迫使系统永远记不住用户选择了不“显示链接”,并且他们每次更改帖子时都必须取消选中该框(这与“默认情况下是打开的”不同)