我在functions.php文件中创建了一个复选框元框,但我有两个问题。如果选中或未选中复选框,我将无法保存。如果检查过,我想在div中显示一些内容。
<?php
function filmview_ext_info_meta_box() {
add_meta_box(
'filmview_ext_info_meta_box',
__( 'Extra info', 'filmview_ext_info_meta' ),
'filmview_ext_info_meta_html',
'filmview',
'normal',
'high'
);
}
add_action( 'add_meta_boxes', 'filmview_ext_info_meta_box' );
function filmview_ext_info_meta_html( $post) {
wp_nonce_field( '_filmview_ext_info_meta_nonce', 'filmview_ext_info_meta_nonce' ); ?>
<p>
<input type="checkbox" id="filmview_ext_info_meta_sub" name="filmview_ext_info_meta_sub" <?php checked( $check, 'on' ); ?> />
<label for="filmview_ext_info_meta_sub">Does it have subtitle?</label>
</p>
<?php
}
function filmview_info_meta_save( $post_id ) {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( ! isset( $_POST['filmview_info_meta_nonce'] ) || ! wp_verify_nonce( $_POST['filmview_info_meta_nonce'], '_filmview_info_meta_nonce' ) ) return;
if ( ! current_user_can( 'edit_post', $post_id ) ) return;
$chk = isset( $_POST['filmview_ext_info_meta_sub'] ) ? 'on' : 'off';
update_post_meta( $post_id, 'filmview_ext_info_meta_sub', $chk );
}
add_action( 'save_post', 'filmview_info_meta_save' );
?>
&#13;
答案 0 :(得分:0)
我能看到的是:
1)你在函数中初始化$chk
:filmview_info_meta_save
2)您正在使用(使用您提供的代码,未定义的变量)$check
尝试从数据库中读取它而不是$ _POST,它只在您提交表单后出现在页面中,这应该是:
function filmview_ext_info_meta_html( $post) {
wp_nonce_field( '_filmview_ext_info_meta_nonce', 'filmview_ext_info_meta_nonce' );
$chk = get_post_meta($post->ID, 'filmview_ext_info_meta_sub', true);
?>
<p>
<input type="checkbox" id="filmview_ext_info_meta_sub" name="filmview_ext_info_meta_sub" <?php checked( $chk[0], 'on' ); ?> />
<label for="filmview_ext_info_meta_sub">Does it have subtitle?</label>
</p>
<?php
}