gpt4 book ai didi

php - WordPress 我的主题选项设置未保存

转载 作者:行者123 更新时间:2023-11-29 06:39:25 25 4
gpt4 key购买 nike

我刚刚创建了一个简单的主题选项页面,它运行良好并且在按下保存选项后也被保存了。

但是当我从主题选项页面转到其他地方并返回主题选项页面时,我保存的设置就消失了,每当我进入主题选项页面时我都必须再次更改它。

这是我的代码

add_action( 'admin_menu', 'theme_options_add_page' );

if ( get_option('new_theme_options')) {
$theme_options = get_option('new_theme_options');
} else {
add_option('new_theme_options', array (
'sidebar2_on' => true,
'footer_text' => ''
));
$theme_options = get_option('new_theme_options');

}

function theme_options_add_page() {
add_submenu_page( 'themes.php', 'My Theme Options', 'Theme Options', 8, 'themeoptions', 'theme_options_do_page' );
}

function theme_options_do_page() {
global $theme_options;



$new_values = array (
'footer_text' => htmlentities($_POST['footer_text'], ENT_QUOTES),
);
update_option('new_theme_options', $new_values);

$theme_options = $new_values;

?>
<div class="wrap">
<?php screen_icon(); echo "<h2>" . get_current_theme() . __( ' Theme Options', 'responsivetheme' ) . "</h2>"; ?>




<form method="post" action="themes.php?page=themeoptions">

<label for="footer_text">Footer Text:</label>
<input id="footer_text" type="text" name="footer_text" value="<?php echo $theme_options['footer_text']; ?>" />

<p class="submit">
<input type="submit" class="button-primary" value="<?php _e( 'Save Options', 'responsivetheme' ); ?>" />
</p>
</form>
</div>
<?php
}

最佳答案

@Praveen 的回答是正确的,但为了完整起见,我将发布我测试过的完整代码。请注意,您应该始终使用 WP_DEBUG 进行开发启用。它显示了您的代码的三个问题:

  • 在未定义的情况下使用 $_POST['footer_text'](Praveen 的回答)
  • 使用已弃用的函数 get_current_theme()
  • add_submenu_page() 中使用级别而不是能力

我将以下代码放入主题的 functions.php 中,它工作正常:

if ( get_option('new_theme_options')) {
$theme_options = get_option('new_theme_options');
} else {
$theme_options = array (
'sidebar2_on' => true,
'footer_text' => ''
);
add_option( 'new_theme_options', $theme_options );
}

add_action( 'admin_menu', 'theme_options_add_page' );

function theme_options_add_page() {
add_submenu_page(
'themes.php',
'My Theme Options',
'Theme Options',
'add_users',
'themeoptions',
'theme_options_do_page'
);
}

function theme_options_do_page() {
global $theme_options;
if( isset( $_POST['footer_text'] ) ) {
$new_values = array (
'footer_text' => htmlentities( $_POST['footer_text'], ENT_QUOTES),
);
update_option('new_theme_options', $new_values);
$theme_options = $new_values;
}
?>
<div class="wrap">
<?php screen_icon(); echo "<h2>" . wp_get_theme() . __( ' Theme Options', 'responsivetheme' ) . "</h2>"; ?>
<form method="post" action="themes.php?page=themeoptions">
<label for="footer_text">Footer Text:</label>
<input id="footer_text" type="text" name="footer_text" value="<?php echo $theme_options['footer_text']; ?>" />
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e( 'Save Options', 'responsivetheme' ); ?>" />
</p>
</form>
</div>
<?php
}

我能看到的唯一问题是在 theme_options_do_page() 中被覆盖的选项值 sidebar2_on,但您的示例代码没有显示它在其他地方使用。

关于php - WordPress 我的主题选项设置未保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22451664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com