get_option( string $option, mixed $default = false )
根据选项名称检索选项值。目录锚点:#说明#参数#返回#源码#笔记
Retrieves an option value based on an option name.
说明(Description)
如果选项不存在或没有值,则返回值将为false。这有助于检查是否需要安装一个选项,并且在安装插件选项时通常使用它,并测试是否需要升级。
如果该选项已序列化,则在返回时将其取消序列化。
任何标量值都将作为字符串返回。您可以通过注册“optionu$option”筛选器回调来强制给定选项的返回类型。
参数(Parameters)
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
$option | (string) | 必需 | 要检索的选项的名称。应为非SQL转义。 |
$default | (mixed) | 可选 | 如果选项不存在,则返回的默认值。 |
返回(Return)
(mixed)为选项设置的值。源码(Source)
/**
* Retrieve option value based on name of option.
*
* If the option does not exist or does not have a value, then the return value
* will be false. This is useful to check whether you need to install an option
* and is commonly used during installation of plugin options and to test
* whether upgrading is required.
*
* If the option was serialized then it will be unserialized when it is returned.
*
* @since 1.5.0
*
* @global wpdb $wpdb
*
* @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
* @param mixed $default Optional. Default value to return if the option does not exist.
* @return mixed Value set for the option.
*/
function get_option( $option, $default = false ) {
global $wpdb;
$option = trim( $option );
if ( empty( $option ) )
return false;
/**
* Filter the value of an existing option before it is retrieved.
*
* The dynamic portion of the hook name, `$option`, refers to the option name.
*
* Passing a truthy value to the filter will short-circuit retrieving
* the option value, returning the passed value instead.
*
* @since 1.5.0
*
* @param bool|mixed $pre_option Value to return instead of the option value.
* Default false to skip it.
*/
$pre = apply_filters( 'pre_option_' . $option, false );
if ( false !== $pre )
return $pre;
if ( defined( 'WP_SETUP_CONFIG' ) )
return false;
if ( ! defined( 'WP_INSTALLING' ) ) {
// prevent non-existent options from triggering multiple queries
$notoptions = wp_cache_get( 'notoptions', 'options' );
if ( isset( $notoptions[ $option ] ) ) {
/**
* Filter the default value for an option.
*
* The dynamic portion of the hook name, `$option`, refers to the option name.
*
* @since 3.4.0
*
* @param mixed $default The default value to return if the option does not exist
* in the database.
*/
return apply_filters( 'default_option_' . $option, $default );
}
$alloptions = wp_load_alloptions();
if ( isset( $alloptions[$option] ) ) {
$value = $alloptions[$option];
} else {
$value = wp_cache_get( $option, 'options' );
if ( false === $value ) {
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
// Has to be get_row instead of get_var because of funkiness with 0, false, null values
if ( is_object( $row ) ) {
$value = $row->option_value;
wp_cache_add( $option, $value, 'options' );
} else { // option does not exist, so we must cache its non-existence
if ( ! is_array( $notoptions ) ) {
$notoptions = array();
}
$notoptions[$option] = true;
wp_cache_set( 'notoptions', $notoptions, 'options' );
/** This filter is documented in wp-includes/option.php */
return apply_filters( 'default_option_' . $option, $default );
}
}
}
} else {
$suppress = $wpdb->suppress_errors();
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
$wpdb->suppress_errors( $suppress );
if ( is_object( $row ) ) {
$value = $row->option_value;
} else {
/** This filter is documented in wp-includes/option.php */
return apply_filters( 'default_option_' . $option, $default );
}
}
// If home is not set use siteurl.
if ( 'home' == $option && '' == $value )
return get_option( 'siteurl' );
if ( in_array( $option, array('siteurl', 'home', 'category_base', 'tag_base') ) )
$value = untrailingslashit( $value );
/**
* Filter the value of an existing option.
*
* The dynamic portion of the hook name, `$option`, refers to the option name.
*
* @since 1.5.0 As 'option_' . $setting
* @since 3.0.0
*
* @param mixed $value Value of the option. If stored serialized, it will be
* unserialized prior to being returned.
*/
return apply_filters( 'option_' . $option, maybe_unserialize( $value ) );
}
更新版本 | 源码位置 | 使用 | 被使用 |
---|---|---|---|
1.5.0 | wp-includes/option.php:30 | 313 | 15 |
笔记(Notes)
处理不存在的选项显示博客标题
显示字符集