您正在使用checkfield_<?php echo $page->ID; ?>
作为输入字段的名称,然后尝试保存$_POST[\'checkfield\']
未设置。
你也可以这样做$pages
在上循环myplugin_meta_save()
函数,然后将每个页面的数据另存为单独的meta_key
输入(checkfield_1
, checkfield_5
, 等等),或者您可以在一个meta_key
这是checkfield
在这种情况下,需要对代码进行一些调整以实现这一点:
function myplugin_inner_custom_box( $post ) {
// we store data as an array, we need to unserialize it
$checkfield = maybe_unserialize( get_post_meta($post->ID, "checkfield", true) );
// Nonce to verify intention later
wp_nonce_field( \'save_quote_meta\', \'custom_nonce\' );
$pages = get_pages();
foreach ( $pages as $page ) { ?>
<input id="page_<?php echo $page->ID; ?>" type="checkbox" name="checkfield[]" value="<?php echo $page->ID; ?>" <?php if ( in_array($page->ID, (array) $checkfield) ) { ?> checked <?php } ?>/> <label for="page_<?php echo $page->ID; ?>"><?php echo $page->post_title; ?></label> <br>
<?php
}
}
//save the meta box action
add_action( \'save_post\', \'myplugin_meta_save\', 10, 2 );
//save the meta box
function myplugin_meta_save($post_id, $post)
{
if ( isset($_POST[\'checkfield\']) ) { // if we get new data
update_post_meta($post_id, "checkfield", $_POST[\'checkfield\'] );
}
}
请注意
name="checkfield"
在输入字段中替换为
name="checkfield[]"
这将使数据以数组形式存储在
$_POST[\'checkfield\']
变量还有
value
属性更改自
yes
到
$page->ID
.
更新:强制转换checkfield
到array
: if ( in_array($page->ID, (array) $checkfield) )