我想創建一個基於WordPress的設置API的主題選項頁面。當我在瀏覽器中查看options.php頁面時(例如,http://mysite.com/wordpress/wp-admin/options.php),我看到一個coolorange_options條目,但它是空的。我在向文本字段添加了url,width和height後發生了這種情況。我的設置不保存在wordpress主題選項頁
到目前爲止,我已經編寫了足夠的代碼來獲取信息並將其存儲到數據庫,但不能檢索任何內容。我在代碼頂部的php註釋中引用了一個教程。考慮到我對PHP或編程知之甚少,這裏一定是錯的,我只是不知道該怎麼做。整個代碼如下:
<?php
// This options page mainly follows the WordPress Settings API Tutorial at
// http://ottodestruct.com/blog/2009/wordpress-settings-api-tutorial/
add_action('admin_menu', 'theme_admin_add_page');
add_action('admin_init', 'theme_admin_init');
function theme_admin_init() {
register_setting('coolorange_theme_options', 'coolorange_options', 'coolorange_options_validate');
// what each parameter represents: add_settings_field($id, $title, $callback, $page, $section, $args);
add_settings_section('coolorange_logo_main', 'Logo Section Settings', 'logo_section_text', 'coolorange');
add_settings_field('upload_image_button', '<strong>Upload logo to the Media Folder</strong>', 'file_upload_button', 'coolorange', 'coolorange_logo_main'); // Upload Logo button
add_settings_field('logo_textfields', '<strong>Logo location</strong>', 'file_location', 'coolorange', 'coolorange_logo_main'); // logo url, width and height text fields
add_settings_field('restore_selectbox', '<strong>Restore original heading</strong>', 'restore_dropdown', 'coolorange', 'coolorange_logo_main');
}
function logo_section_text() {
echo '<p>In this section, you can replace the standard blog title heading with a custom logo. The logo cannot be wider than <strong>960 pixels</strong>.</p>';
}
function file_upload_button() {
$options = get_option('coolorange_theme_options');
echo '<input id="upload_image_button" class="button-secondary" type="button" name="coolorange_theme_options[upload_image_button]" value="Upload Logo" />';
}
function file_location() { //opens file_location function
$options = get_option('coolorange_theme_options'); ?>
<h3>How to upload a logo to replace the heading</h3>
<div style="background-color: #FFFFFF; border: 1px solid #BBBBBB; padding: 30px;">
<ul style="list-style: disc;">
...instructions to upload logo
</ul>
</div>
<p><strong>File URL:</strong> <input id="image_url" type="text" value="<?php $options['image_url']; ?>" size="60" name="coolorange_theme_options[image_url]" /><br />
<strong>Logo width:</strong> <input id="image_width" type="text" value="<?php $options['image_width']; ?>" size="6" name="coolorange_theme_options[image_width]" /> Enter logo width in pixels (for example <strong>800px</strong>)<br />
<strong>Logo height:</strong> <input id="image_height" type="text" value="<?php $options['image_height']; ?>" size="6" name="image_height" /> Enter logo height in pixels (for example <strong>90px</strong>)</p>
<?php
} //closes file_location function
function restore_dropdown() { //opens restore_dropdown function
$options = get_option('coolorange_theme_options');
// http://codex.wordpress.org/Function_Reference/selected ?>
<select name="co_restore_selectbox[select_options]" id="co_restore_selectbox">
<option value="default" <?php if ($co_restore_selectbox['select_options'] == 'default')
echo 'selected="selected"'; ?>>select an option</option>
<option value="restore" <?php if ($co_restore_selectbox['select_options'] == 'restore')
echo 'selected="selected"'; ?>>Restore CSS</option>
</select>
<?php
} // closes restore_dropdown funcion
function css_switcher() {
$options = get_option('coolorange_theme_options');
//$backgroundurl = "url('" . $options['image_url']; . "') top center no-repeat";
?>
<style type="text/css">
<!--
#logo {
background: <?php echo $backgroundurl; ?>;
width: <?php echo $image_width; ?>;
height: <?php echo $image_height; ?>;
padding: 1em 2em 0 2em;
margin: 0 auto;
}
#blog-title a {
display: block;
width: <?php echo $image_width; ?>;
height: <?php echo $image_height; ?>;
text-indent: -2000px;
}
#blog-description {
text-indent: -2000px;
}
-->
</style>
<?php } // closes css_switcher function
add_action('wp_head', 'css_switcher');
function theme_admin_add_page() {
add_theme_page('Cool Orange Theme Options','Cool Orange Theme Options','manage_options','coolorange','theme_options_page');
}
//Scripts to load WP's Media Library panel
//http://www.webmaster-source.com/2010/01/08/using-the-wordpress-uploader-in-your-plugin-or-theme/
function my_admin_scripts() {
...scripts to load media library - unrelated
}
function my_admin_styles() {
...styles for media library loader
}
if (isset($_GET['page']) && $_GET['page'] == 'coolorange') {
...actions to add for media library loader script
}
function theme_options_page() {
?>
<div class="wrap">
<div id="icon-themes" class="icon32"><br /></div><h2>Cool Orange Theme Options</h2>
<form action="options.php" method="post" name="options_form"><?php settings_fields('coolorange_theme_options'); ?>
<?php do_settings_sections('coolorange'); ?>
<input name="Submit" class="button-primary" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" />
</form>
</div>
<?php
}
?>