get_option
函数
get_option ( $option, $default = false )
- 参数
-
-
(string)
$option
Name of the option to retrieve. Expected to not be SQL-escaped.
- Required: 是
-
(mixed)
$default
Optional. Default value to return if the option does not exist.
- Required: 否
- Default: false
-
(string)
$option
Name of the option to retrieve. Expected to not be SQL-escaped.
- 返回值
-
- (mixed) Value of the option. A value of any type may be returned, including scalar (string, boolean, float, integer), null, array, object. Scalar and null values will be returned as strings as long as they originate from a database stored option value. If there is no option in the database, boolean `false` is returned.
- 定义位置
-
- wp-includes/option.php , line 78
- 引入
- 1.5.0
- 弃用
- -
get_option函数是一个WordPress函数,它从数据库中检索一个选项值。WordPress中的选项是可以由用户设置和调整的设置: 这个函数接受一个参数,它是你想检索的选项的名称。例如,如果你想检索”blogname”选项的值,你会调用get_option(‘blogname’): 该函数返回该选项的值。
检索基于选项名称的选项值。
如果该选项不存在,并且没有提供默认值。会返回布尔值false。这可以用来检查你是否需要 在安装插件的过程中初始化一个选项,然而这 可以通过使用add_option()更好地完成,它将不会覆盖 现有的选项。
不初始化一个选项并使用布尔值”false”作为返回值 是一个不好的做法,因为它会触发一个额外的数据库查询。
返回值的类型可以与保存或更新选项时传递的类型不同。时传递的类型不同。如果选项的值被序列化了。那么当它被返回时,它将被取消序列化。在这种情况下,其类型将 是相同的。例如,存储一个像数组一样的非标量值会 返回相同的数组。
在大多数情况下,非字符串的标量值和空值将被转换并返回 作为字符串的等价物。
例外的情况:
1. 当选项没有保存在数据库中时,如果提供了”$default”值,就会返回。会被返回。如果没有,将返回布尔值`false`。
2. 当使用选项API过滤器之一时。{@see ‘pre_option_$option’}, {@see ‘default_option_$option’}, or {@see ‘option_$option’}, the return 值可能不符合预期的类型。
3. 当选项刚刚被保存在数据库中,并且get_option() 之后,非字符串的标量值和空值不会被转换为等同于字符串的值。字符串等价物,并返回原始类型。
示例:
当像这样添加选项时。`add_option( ‘my_option_name’, ‘value’)`这样添加选项时。然后用`get_option( ‘my_option_name’)`来获取它们,返回的 返回的值将是:
– `false` returns `string(0)””`
– `true` returns `string(1)”1″`
– `0` returns `string(1)”0″`
– `1` returns `string(1)”1″`
– `’0’` returns `string(1)”0″`
– `’1’` returns `string(1)”1″`
– `null` returns `string(0)””`
当添加非标量值的选项时,如 `add_option( ‘my_array’, array( false, ‘str’, null )`, 返回值 将与原始值相同,因为它在保存到数据库之前被序列化了 它被序列化后保存在数据库中:
array(3) {
[0] => bool(false)
[1] => string(3)”str”
[2] => NULL
}
function get_option( $option, $default = false ) {
global $wpdb;
if ( is_scalar( $option ) ) {
$option = trim( $option );
}
if ( empty( $option ) ) {
return false;
}
/*
* Until a proper _deprecated_option() function can be introduced,
* redirect requests to deprecated keys to the new, correct ones.
*/
$deprecated_keys = array(
'blacklist_keys' => 'disallowed_keys',
'comment_whitelist' => 'comment_previously_approved',
);
if ( isset( $deprecated_keys[ $option ] ) && ! wp_installing() ) {
_deprecated_argument(
__FUNCTION__,
'5.5.0',
sprintf(
/* translators: 1: Deprecated option key, 2: New option key. */
__( 'The "%1$s" option key has been renamed to "%2$s".' ),
$option,
$deprecated_keys[ $option ]
)
);
return get_option( $deprecated_keys[ $option ], $default );
}
/**
* Filters the value of an existing option before it is retrieved.
*
* The dynamic portion of the hook name, `$option`, refers to the option name.
*
* Returning a value other than false from the filter will short-circuit retrieval
* and return that value instead.
*
* @since 1.5.0
* @since 4.4.0 The `$option` parameter was added.
* @since 4.9.0 The `$default` parameter was added.
*
* @param mixed $pre_option The value to return instead of the option value. This differs
* from `$default`, which is used as the fallback value in the event
* the option doesn't exist elsewhere in get_option().
* Default false (to skip past the short-circuit).
* @param string $option Option name.
* @param mixed $default The fallback value to return if the option does not exist.
* Default false.
*/
$pre = apply_filters( "pre_option_{$option}", false, $option, $default );
/**
* Filters the value of all existing options before it is retrieved.
*
* Returning a truthy value from the filter will effectively short-circuit retrieval
* and return the passed value instead.
*
* @since 6.1.0
*
* @param mixed $pre_option The value to return instead of the option value. This differs
* from `$default`, which is used as the fallback value in the event
* the option doesn't exist elsewhere in get_option().
* Default false (to skip past the short-circuit).
* @param string $option Name of the option.
* @param mixed $default The fallback value to return if the option does not exist.
* Default false.
*/
$pre = apply_filters( 'pre_option', $pre, $option, $default );
if ( false !== $pre ) {
return $pre;
}
if ( defined( 'WP_SETUP_CONFIG' ) ) {
return false;
}
// Distinguish between `false` as a default, and not passing one.
$passed_default = func_num_args() > 1;
if ( ! wp_installing() ) {
// Prevent non-existent options from triggering multiple queries.
$notoptions = wp_cache_get( 'notoptions', 'options' );
// Prevent non-existent `notoptions` key from triggering multiple key lookups.
if ( ! is_array( $notoptions ) ) {
$notoptions = array();
wp_cache_set( 'notoptions', $notoptions, 'options' );
}
if ( isset( $notoptions[ $option ] ) ) {
/**
* Filters the default value for an option.
*
* The dynamic portion of the hook name, `$option`, refers to the option name.
*
* @since 3.4.0
* @since 4.4.0 The `$option` parameter was added.
* @since 4.7.0 The `$passed_default` parameter was added to distinguish between a `false` value and the default parameter value.
*
* @param mixed $default The default value to return if the option does not exist
* in the database.
* @param string $option Option name.
* @param bool $passed_default Was `get_option()` passed a default value?
*/
return apply_filters( "default_option_{$option}", $default, $option, $passed_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, $option, $passed_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, $option, $passed_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' ), true ) ) {
$value = untrailingslashit( $value );
}
/**
* Filters 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
* @since 4.4.0 The `$option` parameter was added.
*
* @param mixed $value Value of the option. If stored serialized, it will be
* unserialized prior to being returned.
* @param string $option Option name.
*/
return apply_filters( "option_{$option}", maybe_unserialize( $value ), $option );
}
常见问题
FAQs-
如何使用get_users获取所有用户列表?
要使用`
get_users`函数获取所有用户列表,可以按照以下步骤进行:1. 使用`
get_users`函数调用获取用户列表:$users = get_users();
2. 您可以按需使用参数来过滤结果。例如,您可以通过角色、用户ID、用户登录名等过滤用户列表。以下是一个根据用户角色为过滤条件的示例:
$users = get_users( array( 'role' => 'subscriber' // 将角色名称替换为您要过滤的角色 ) );在上述示例中,将`
role`参数设置为所需的角色名称来过滤用户列表。3. 您可以使用循环遍历获取的用户列表,并访问每个用户的属性。例如,以下示例将显示每个用户的用户名和电子邮件地址:
foreach( $users as $user ) { echo '用户名:' . $user->user_login . ', 电子邮件:' . $user->user_email . ; }在上述示例中,通过`
$user->user_login`和`$user->user_email`访问每个用户的用户名和电子邮件地址。请注意,`
get_users`函数默认返回所有用户,并可以根据需要使用更多参数进行过滤。您可以参阅WordPress官方文档中的`get_users`函数文档,了解更多可用参数和用法示例。总结起来,使用`
get_users`函数获取所有用户列表的步骤是:- 调用`
get_users`函数获取用户列表。 - 使用可选的过滤参数,根据需要过滤用户列表。
- 使用循环遍历用户列表,并访问每个用户的属性。
- 调用`
-
如何使用WP_PLUGIN_DIR和WP_PLUGIN_URL定义插件的目录和URL?
在WordPress中,可以使用WP_PLUGIN_DIR和WP_PLUGIN_URL常量来定义插件的目录路径和URL。
1. `WP_PLUGIN_DIR`:这是一个常量,用于定义插件的目录路径(文件系统路径)。您可以使用以下代码在插件文件中访问该常量:
$plugin_dir = WP_PLUGIN_DIR . '/your-plugin-folder/';
在上述代码中,将"your-plugin-folder"替换为您插件的实际文件夹名称。使用该常量,您可以获取插件文件的完整路径。
2. `WP_PLUGIN_URL`:这是一个常量,用于定义插件的URL(用于在网页上访问插件文件)。以下是一个使用该常量的示例:
$plugin_url = WP_PLUGIN_URL . '/your-plugin-folder/';
同样,请将"your-plugin-folder"替换为您插件的实际文件夹名称。使用该常量,您可以获取插件在网页上的完整URL。
请注意,`WP_PLUGIN_DIR`和`WP_PLUGIN_URL`常量在WordPress版本2.6之后引入。从WordPress 5.5版本开始,这两个常量被标记为过时(deprecated),因为WordPress更倾向于使用新的插件文件结构。如果您正在开发新插件,建议使用新的插件文件结构和相关函数。
在新的插件文件结构中,可以使用以下函数来获取插件的目录路径和URL:
- `plugin_dir_path()`:获取插件目录路径。
- `plugin_dir_url()`:获取插件URL。这些函数会自动将插件的版本、多站点和SSL等考虑因素纳入计算。
总结起来,使用`WP_PLUGIN_DIR`和`WP_PLUGIN_URL`常量定义插件的目录和URL的方法是:
$plugin_dir = WP_PLUGIN_DIR . '/your-plugin-folder/'; $plugin_url = WP_PLUGIN_URL . '/your-plugin-folder/';
但请注意,这两个常量已被标记为过时,建议使用新的插件文件结构和相关函数来获取插件的路径和URL。
-
如何使用PHP在WordPress中添加自定义功能?
使用PHP在WordPress中添加自定义功能可以通过以下方式实现:
- 创建一个自定义插件,将功能代码添加到插件中。
- 使用WordPress的钩子系统,将自定义功能绑定到适当的钩子上。
- 在主题文件中添加自定义功能代码,例如functions.php文件。
- 使用WordPress的短代码功能,将自定义功能封装为短代码。
- 使用WordPress的插件或主题编辑器,将自定义功能代码添加到适当的位置。
下面是一个实操示例。
要在WordPress中添加自定义功能,可以按照以下步骤使用PHP编写并添加自定义功能:
- 打开WordPress安装目录中的主题文件夹,通常位于wp-content/themes/下,找到正在使用的主题文件夹。
- 在主题文件夹中,可以创建一个名为functions.php的文件。如果该文件已经存在,可以直接编辑它。
- 在functions.php文件中,可以使用PHP代码添加自定义功能。以下是一些常见的示例:
// 添加自定义功能示例 // 1. 创建自定义短代码 function custom_shortcode() { return '这是我的自定义短代码内容'; } add_shortcode('custom', 'custom_shortcode'); // 2. 自定义小工具 function custom_widget() { echo '这是我的自定义小工具内容'; } register_widget('custom_widget'); // 3. 自定义菜单 function custom_menu() { register_nav_menu('custom-menu', '自定义菜单'); } add_action('after_setup_theme', 'custom_menu'); // 4. 自定义页面模板 function custom_page_template() { /* Template Name: 自定义模板 */ // 自定义模板的内容和样式 } - 编辑完functions.php文件后,保存并上传到WordPress主题文件夹中。
请注意,修改主题文件可以在主题更新时丢失,因此建议在进行任何更改之前备份functions.php文件。此外,为避免不必要的错误和冲突,建议在添加自定义功能前先了解WordPress开发文档和最佳实践,以确保正确、安全地实现所需的自定义功能。
-
如何进行WordPress数据库查询优化?
-
如何使用do_action来触发一个钩子函数?
使用
do_action函数可以触发一个钩子函数。do_action函数的参数与要触发的钩子函数的参数相同。例如,触发save_post钩子函数的代码如下:
do_action( 'save_post', $post_ID, $post );
这里,
$post_ID和$post是传递给钩子函数的参数。 -
如何使用wp_get_current_user获取当前登录用户的信息?
使用
wp_get_current_user获取当前登录用户的信息:$current_user = wp_get_current_user(); // 获取当前用户的ID $user_id = $current_user->ID; // 获取当前用户的用户名 $user_login = $current_user->user_login; // 获取当前用户的邮箱 $user_email = $current_user->user_email; // 获取当前用户的显示名称 $display_name = $current_user->display_name;
