我的复选框不是在wordpress帖子中保存数据

时间:2014-07-13 18:14:14

标签: php wordpress function checkbox save

我知道这个问题还有其他一些主题,但它们都有各自的编码。有了我的,我确实知道如何更改为清单或其他人。 一个问题是数据没有保存,我的意思是,我点击复选框方块并保存帖子但是当它重新加载时没有保存的复选框。所有这些都发生在wordpress中。

这是我在wordpress

的functions.php中的复选框代码
function prfx_custom_meta() {
add_meta_box( 'prfx_meta', __( 'Meta Box Title', 'prfx-textdomain' ), 'prfx_meta_callback', 'post' );
}
add_action( 'add_meta_boxes', 'prfx_custom_meta' );

function prfx_meta_callback( $post ) {
wp_nonce_field( basename( __FILE__ ), 'prfx_nonce' );
$prfx_stored_meta = get_post_meta( $post->ID );
?>

<p>
<span class="prfx-row-title"><?php _e( 'Example Checkbox Input', 'prfx-textdomain' )?></span>
<div class="prfx-row-content">
    <label for="meta-checkbox">
        <input type="checkbox" name="meta-checkbox" id="meta-checkbox" value="yes" <? php if ( isset ( $prfx_stored_meta['meta-checkbox'] ) ) checked( 

$prfx_stored_meta['meta-checkbox'][0], 'yes' ); ?> />
        <?php _e( 'Checkbox label', 'prfx-textdomain' )?>
    </label>
    <label for="meta-checkbox-two">
        <input type="checkbox" name="meta-checkbox-two" id="meta-checkbox-two" value="yes" <?php if ( isset ( $prfx_stored_meta['meta-checkbox-two'] ) ) checked( 

$prfx_stored_meta['meta-checkbox-two'][0], 'yes' ); ?> />
        <?php _e( 'Another checkbox', 'prfx-textdomain' )?>
    </label>
</div>

之后,数据保存功能无法正常工作:

   <?php
}

function prfx_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[ 'prfx_nonce' ] ) && wp_verify_nonce( $_POST[ 'prfx_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[ 'meta-text' ] ) ) {
    update_post_meta( $post_id, 'meta-text', sanitize_text_field( $_POST[ 'meta-text' ]    ) );
}

}
add_action( 'save_post', 'prfx_meta_save' );

?>

编辑:

我已将保存数据更改为此,因为正如安德鲁斯所说,没有任何处理元复选框和元复选框二。

 <?php
}

function prfx_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[ 'prfx_nonce' ] ) && wp_verify_nonce( $_POST[   'prfx_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[ 'meta-checkbox' ] ) ) {
    update_post_meta( $post_id, 'meta-checkbox', sanitize_text_field( $_POST[ 'meta-checkbox' ] ));
}

if( isset( $_POST[ 'meta-checkbox-two' ] ) ) {
    update_post_meta( $post_id, 'meta-checkbox-two', sanitize_text_field( $_POST[ 'meta-checkbox-two' ] ));
}

}
 add_action( 'save_post', 'prfx_meta_save' );

现在的问题是我无法取消选中复选框;我的意思是,我选中框并保存帖子,当编辑帖子重新加载时我取消选中复选框并再次保存帖子,但在重新加载时,复选框将保持选中状态。 ¿为什么呢?

0 个答案:

没有答案