保存复选框元框并在wordpress

时间:2017-12-28 18:40:55

标签: php wordpress

我在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;
&#13;
&#13;

1 个答案:

答案 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
}