描述
如果该选项不存在,并且未提供默认值,则返回布尔值false。这可以用来检查在安装插件期间是否需要初始化选项,但是使用add_option()可以更好地完成这项工作,因为它不会覆盖现有选项。
不初始化选项并使用布尔false
作为返回值是一种不好的做法,因为它会触发额外的数据库查询。
返回值的类型可以不同于保存或更新选项时传递的类型。如果选项值已序列化,则返回时将取消序列化。在这种情况下,类型将相同。例如,像数组一样存储非标量值将返回相同的数组。
在大多数情况下,非字符串标量值和null值将被转换并作为等值字符串返回。
例外情况:
- 当该选项没有被保存在数据库中时,如果提供了
$default
值则返回它,如果没有则返回false
- 当使用这些选项API过滤器之一:‘pre_option_$option’, ‘default_option_$option’, 或 ‘option_$option’,返回的值可能不符合预期的类型。
- 当选项刚刚被保存在数据库中,紧接着使用 get_option() 时,非字符串标量和null值不会被转换为字符串等值,而是返回原始类型。
示例:
当添加如下选项:add_option( 'my_option_name', 'value' )
并用get_option( 'my_option_name' )
检索它们时,返回的值将为:
false
returnsstring(0) ""
true
returnsstring(1) "1"
0
returnsstring(1) "0"
1
returnsstring(1) "1"
'0'
returnsstring(1) "0"
'1'
returnsstring(1) "1"
null
returnsstring(0) ""
当添加具有非标量值(如add_option( 'my_array', array( false, 'str', null ) )
)的选项时,返回的值将与原始值相同,因为它在保存到数据库中之前已序列化:
array(3) {
[0] => bool(false)
[1] => string(3) "str"
[2] => NULL
}
参数
- $option
-
(string) (必填) 要检索的选项的名称。预期不会被SQL转义。
- $default
-
(mixed) (可选) 如果选项不存在,默认返回的值。
默认值: false
返回
(mixed) 该选项的值。任何类型的值都可以被返回,包括标量(字符串、布尔值、浮动值、整数)、null、数组、对象。标量值和null值将以字符串形式返回,只要它们来自于数据库存储的选项值。如果数据库中没有选项,将返回布尔值 false
说明
下面是常用选项的简明列表,在选项参考中可以找到更完整的选项。
'admin_email'
– 博客管理员 E-mail 地址'blogname'
– 博客标题;在常规选项中设置。'blogdescription'
– 你的博客的标语;在常规选项中设置。'blog_charset'
– 你博客的字符编码;在阅读选项中设置。'date_format'
– 默认日期格式;在常规选项中设置。'default_category'
– 默认文章类别;在撰写选项中设置。'home'
– 博客的主页网址;在常规选项中设置。'siteurl'
– WordPress网址;在常规选项中设置。
警告: 这与get_bloginfo( 'url' )
不一样 (后者会返回主页的url), 而与get_bloginfo( 'wpurl' )
一样'template'
– 当前主题的名称;在外观中设置。'start_of_week'
– 以星期几作为日历每周的始于;在常规选项中设置。'upload_path'
– 默认上传位置;在其他选项中设置。'users_can_register'
– 用户是否可以注册;在常规选项中设置。'posts_per_page'
– 页面上显示的最大文章数;在阅读选项中设置。'posts_per_rss'
– 在聚合feed中显示的最新文章的最大数量;在阅读选项中设置。
还有更多可用的选项,其中很大一部分取决于您安装了哪些插件。
源码
更新日志
版本 | 描述 |
---|---|
1.5.0 | 开始引入 |
使用示例
处理不存在的选项
$no_exists_value = get_option( 'no_exists_value' ); var_dump( $no_exists_value ); /* outputs false */ $no_exists_value = get_option( 'no_exists_value', 'default_value' ); var_dump( $no_exists_value ); /* outputs 'default_value' */
显示博客标题
在<h1>
标签中显示您的博客标题。<h1><?php echo get_option( 'blogname' ); ?></h1>
get_option()
输出可过滤的快速提示:return apply_filters( "option_{$option}", maybe_unserialize( $value ), $option );
因此,您可以在运行时更改
get_option()
的输出。//Outputs an array of all plugins var_dump( get_option('active_plugins') ); add_filter( 'option_active_plugins', function( $plugins ){ return []; }); //Outputs an empty array var_dump( get_option('active_plugins') );
有助于在需要时禁用特定插件。
显示字符集
显示您的博客正在使用的字符集(例如:UTF-8)<p><?php echo esc_html( sprintf( __( 'Character set: %s', 'textdomain' ), get_option( 'blog_charset' ) ) ); ?></p>
检索管理员电子邮件
检索博客管理员的电子邮件,将其存储在变量中。<?php $admin_email = get_option( 'admin_email' ); ?>
检查选项是否设置为避免警告
当插件选项页上未选中复选框时,会收到非法偏移警告
在checked()中添加isset()可以解决所有问题。function comment_author_url_render() { $options = get_option( 'plugin_settings' ); ?> <input type='checkbox' name='plugin_settings[setting]' <?php checked( isset( $options['setting'] ) ); ?> value='1'> <?php }
希望这对其他人有所帮助。
就像我们使用
get_option('date_format')
得到在 设置->常规 中定义的日期格式,
我们也可以使用
get_option('time_format')
得到在 设置->常规 中定义的时间格式,
例如
<?php the_time(get_option('date_format')); ?>
<?php the_time(get_option('time_format')); ?>
有一种“long-hand”格式用于在一行中创建选项设置字段参数,该格式在语义上更难读取/遵循,但为选项设置提供单个字符串,而不是每个选项提供两个字符串。
$wpdevref_text_2 = esc_attr( get_option( 'wpdevref_options' )['wpdevref_text_field_2'] );
以上返回false,因此从技术上讲,除非您需要一个值,否则设置没有默认值
而且,只是在参数解析方面比$options = get_option('wpdevref_options'); $wpdevref_text_2 = (empty($options['wpdevref_text_2'] )) ? 'Default Text' : $options['wpdevref_text_2'];
或者(如果需要默认设置):
$wpdevref_text_2 = (empty( get_option( 'wpdevref_options' )['wpdevref_text_field_2']) ) ? 'Default Text' : get_option( 'wpdevref_options' )['wpdevref_text_field_2'];
对于设置数组中的复选框,请尝试:
'value' => get_option('wpdevref_fields')['wpdevref_dashnews_widgetcheck'], 'checked' => esc_attr( checked( 1, get_option('wpdevref_fields')['wpdevref_dashnews_widgetcheck'], false ) );
这有助于为多个选项指定默认值:
/** * Retrieves multiple options values as an associative array based on an option name. * @param string $option_name (Required) Name of option to retrieve. * @param array $defaults (Optional) Default values to return if the option does not exist. */ function wporg_prfex_get_theme_option( $option_name, $defaults = array() ) { $options = get_option( $option_name ); //checking if options exists if ( ! empty( $options ) ) { $it = new MultipleIterator(); $it->attachIterator( new ArrayIterator( $options ) ); $it->attachIterator( new ArrayIterator( $defaults ) ); foreach ( $it as $setting_name => $value ) { if ( empty( $value[0] ) ) { $optionsArray[ $setting_name[1] ] = $value[1]; } else { $optionsArray[ $setting_name[0] ] = $value[0]; } }// end loop return $optionsArray; } else { // if no options then set the defaults $optionsArray = $defaults; return $optionsArray; } }
用法如下:
$defaults = array( 'settings_name1' => 'rgba(255, 0, 0, 0.7)', 'settings_name1' => 'rgba(31, 200, 219, 0.7)', 'settings_name1' => 'rgba(44, 181, 232, 0.7)' ); $colors = wporg_prfex_get_theme_option( 'option_name', $defaults );
显示选项:
echo $colors['settings_name1'];
检查选项值集与否的简单方法。
例如,我在用户站点上安装了一个插件版本1.0。插件版本在插件激活时设置。如果我发布了一个新的插件版本2.0,需要检查安装的插件版本和新版本更新上的应用更改。
为此,您需要在函数中设置默认值:
get_option( 'key_name', 'default_value' )
所以,若选项值未设置或可用,则会比分配给变量的默认值更高。
示例代码:
$my_plugin_version = get_option('plugin_name_version', '2.0'); if($my_plugin_version == '1.0') { // do something or apply changes and update the plugin version into option value } else { // do nothing }
对于图片的使用,包括在子主题文件夹中的默认图片,命名为default.png,以及在使用定制器添加图片时的选项。
$image = get_option( 'genesis-customizer-image', sprintf( '%s/default.png', get_stylesheet_directory_uri() ) );
检查选项是否存在,使用isset检查如果值存在,则显示复选框,如果没有选项,则显示未选中框
$checkbox = get_option('options'); if ( isset( $checkbox['check_box'] ) ) { echo 'value exists- so return checked box '; } else { echo ' no value - so return unchecked box '; }