正如@Ashfame已经指出的那样,您不应该在数据库中存储默认值-这应该是用户选择的选项(当然,如果他们选择默认值,那么很好-存储它们:)。
但是,您不需要使用wp_parse_args()
任何一个get_option
允许您选择默认值。例如:
//If nuod_logo is not found, uses \'newlogo.pnp\'
$number = get_option(\'nuod_logo\', \'newlogo.png\')
然而,主题和插件通常(应该)将其选项保存在一个数组中,该数组存储在数据库的一行中。所以
$my_plugin_options = get_option(\'my_plugins_options\')
应返回所有选项。因此,您可以将所有选项保留在默认数组中
$my_plugin_defaults
:
$my_plugin_options = get_option(\'my_plugins_options\',$my_plugin_defaults)
但这也不太好-你必须重新申报
$my_plugin_defaults
这就是简单地复制代码,为bug腾出空间,丑陋-或者你把它变成一个全局变量,这完全是错误的。解决方案是创建自己的\'
get_option
\' 基于WordPress的设置API:
function wpse28954_get_option( $option_name=\'\' ){
$defaults = array(
// Array of defaults: option => default value
)
$options = get_option(\'my_plugins_options\',$defaults);
//Parse defaults again - see comments
$options = wp_parse_args( $options, $defaults );
if( !isset($options[$option_name]) )
return false;
return $options[$option_name];
}
这可以通过允许
wpse28954_get_option
如果不在定义的默认值中,则设置默认值
现在,您的默认值存储在一个易于管理的地方,您可以使用wpse28954_get_option[\'my-option\']
返回保存的设置或默认值。
编辑为@Ashfame 在评论中指出wp_parse_args
具有为未保存的选项子集提供默认值的优点。我已经更新了我的答案,将其包括在内。(这使得$defaults
在里面get_option
相当多余)+1用于@Ashfame\'第一个建议使用的解决方案wp_parse_args
.