首先,您需要将值保存为数组,因为您希望选择多个项目。这个update_option
函数将为您序列化一个数组,所以您只需要给它一个项目数组。在代码中,由于使用了相同的键,所以保存了所有项exclude_page_from_cookies
而不是作为数组。您还需要将所选项目标记为选中,以便能够保存更多项目。功能selected
需要selected
和current
匹配并回显所选标记。您可以将该值保存为标题,但我建议您将其保存为页面的ID,因为如果您有ID,则可以使用函数轻松获取标题get_the_title()
. 因此,我更新了save函数以接受数组:
$exclude_pages = $_POST[\'exclude_page_from_cookies\'];
if( isset( $exclude_pages ) )
{
update_option( \'exclude_page_from_cookies\', $exclude_pages );
}
else
{
delete_option( \'exclude_page_from_cookies\' );
}
和选定的框标记:
<select id="exclude_page_from_cookies" name="exclude_page_from_cookies[]" multiple="multiple">
<?php
$pages = get_pages();
$exclude = get_option(\'exclude_page_from_cookies\');
foreach ( $pages as $page )
{
?>
<option value="<?php echo $page->ID; ?>" <?php echo ( in_array( $page->ID, $exclude ) ? \'selected\' : \'\' ); ?> >
<?php echo $page->post_title; ?>
</option>
<?php
}
?>
</select>