我创建了一个简单的元框,由两个单选按钮组成:是或否。
当他们单击相应的框时,它会将元值保存到数据库中。然而,贴子页面不记得它已经这样做了:无论按下哪个单选按钮,“checked”值都不再存在。
下面是代码。保存“已检查”状态的最佳方法是什么?这样用户就可以知道哪个已检查?
## ADD TOP META BOX
function top_custom_meta(){
add_meta_box(\'top_meta\', \'Is this a top post?\', \'top_meta_callback\', \'post\', \'side\', \'high\');
}
add_action(\'add_meta_boxes\', \'top_custom_meta\');
## OUTPUTS TOP CONTENT
function top_meta_callback( $post ) {
wp_nonce_field( basename( __FILE__ ), \'top_nonce\' );
$top_stored_meta = get_post_meta( $post->ID ); ?>
<div>
<label>
<input type="radio" name="top-radio" value="radio-one-a">
<?php echo \'Yes\' ?>
</label>
</div>
<div>
<label>
<input checked="checked" type="radio" name="top-radio" value="radio-two-b">
<?php echo \'No\' ?>
</label>
</div>
<?php
}
# SAVE TOP OUTPUT TO DATABASE
function top_meta_save( $post_id ) {
// Checks save status
$is_autosave = wp_is_post_autosave( $post_id );
$is_revision = wp_is_post_revision( $post_id );
$is_valid_nonce = ( isset( $_POST[ \'top_nonce\' ] ) && wp_verify_nonce( $_POST[ \'top_nonce\' ], basename( __FILE__ ) ) ) ? \'true\' : \'false\';
// Exits script depending on save status
if ( $is_autosave || $is_revision || !$is_valid_nonce ) {
return;
}
// Checks for input and sanitizes/saves if needed
if( isset( $_POST[ \'top-radio\' ] ) ) {
update_post_meta( $post_id, \'top-radio\', sanitize_text_field( $_POST[ \'top-radio\' ] ) );
}
}
add_action( \'save_post\', \'top_meta_save\' );
我基本上需要补充
checked="checked"
无论按下哪个单选按钮。