默认情况下将复选框设置为选中

时间:2014-01-03 作者:jay

我想在帖子元中添加一个复选框,并将其设置为默认选中状态。我正在尝试以下代码,但默认情况下它不会显示复选框。但是,它会正确保存,并且在保存帖子后,会显示复选框。

如何将其设置为默认选中?

<?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 ); 
}

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\' ); 
}
但是,您这样做的方式会迫使系统永远记不住用户选择了不“显示链接”,并且他们每次更改帖子时都必须取消选中该框(这与“默认情况下是打开的”不同)

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在