我正在尝试创建自己的自定义字段元框,只在页面中填充复选框。我是以它为基础的this tutorial here. 我可以让原来的教程正常工作,但当我开始简化它,只保存一个复选框时,它停止了工作:当我更新页面时,复选框不会保存“打开”状态。
我确信这与函数的保存部分有关。有人有任何线索、提示或提示吗?谢谢
<?php function cd_meta_box_cb() {
// Some settings first:
global $post;
$check = isset( $values[\'page_title_off\'] ) ? esc_attr( $values[\'page_title_off\'][0] ) : \'\';
// We\'ll use this nonce field later on when saving.
wp_nonce_field( \'my_meta_box_nonce\', \'meta_box_nonce\' );
// Render the custom fields:
?>
<div>
<input type="checkbox" id="page_title_off" name="page_title_off" <?php checked( $check, \'on\' ); ?> />
<label for="page_title_off">Turn off page title</label>
</div>
<?php } ?>
<?php
add_action( \'save_post\', \'cd_meta_box_save\' );
function cd_meta_box_save( $post_id )
{
// Bail if we\'re doing an auto save
if( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) return;
// if our nonce isn\'t there, or we can\'t verify it, bail
if( !isset( $_POST[\'meta_box_nonce\'] ) || !wp_verify_nonce( $_POST[\'meta_box_nonce\'], \'my_meta_box_nonce\' ) ) return;
// if our current user can\'t edit this post, bail
if( !current_user_can( \'edit_post\' ) ) return;
// now we can actually save the data
$allowed = array(
\'a\' => array( // on allow a tags
\'href\' => array() // and those anchors can only have href attribute
)
);
// Save
if( isset( $_POST[\'page_title_off\'] ) )
update_post_meta( $post_id, \'page_title_off\', $_POST[\'page_title_off\'] );
}
?>
SO网友:Bev
我昨天经历了这一切!
根据codex 必须为当前的\\u用户\\u can提供一个post id才能检查“编辑\\u post”,因此您的能力检查应该是:
if( !current_user_can( \'edit_post\', $post_id ) ) return;
此外,最后两行应该更像这样:
$chk = isset( $_REQUEST[\'page_title_off\'] ) ? \'on\' : \'off\';
update_post_meta( $post_id, \'page_title_off\', $chk );
这应该根据是否勾选复选框来打开或关闭post meta。