Wordpress函数add Option()向wordpress数据库添加新选项

WordPress函数add_option()向WordPress数据库添加新选项

WordPress函数add_option()向WordPress数据库添加新选项

  在 WordPress CMS内容管理系统中,add_option()是 WordPress 中一个非常有用的函数,add_option()`函数用于向数据库中添加一个新的选项(option)。这是WordPress用于存储非内容数据的一种方式,例如主题设置、插件配置或者网站的元信息等。`add_option()`函数确保如果选项尚未存在,则将其添加到数据库中。

  add_option () WordPress PHP 函数向 WordPress 数据库添加新选项。它会自动序列化非标量值,然后再插入数据库。但是,资源无法序列化或添加为选项。此函数还会执行检查,以防止添加受保护的 WordPress 选项。

  推荐:WordPress函数allow_subdirectory_install()检查多站点网络是否允许允许子目录安装

add_option()函数基本语法

描述

  向WordPress数据库添加新选项

用法

add_option( 'my_option_name', 'my_option_value', '', 'yes' );
  • $option (string) (必需):要添加的选项的名称。预计不会进行 SQL 转义。
  • $value (mixed) (可选):选项值。如果是非标量,则必须是可序列化的。预计不会进行 SQL 转义。默认值:”。
  • $deprecated (字符串) (可选):描述。不再使用。默认值:”。
  • $autoload (string|bool) (可选):WordPress 启动时是否加载选项。默认启用。由于遗留原因,接受“否”以禁用。默认值:‘yes’。

  推荐:7个WordPress捐赠插件

add_option()函数

  在 WordPress 中,该add_role()功能将电子邮件地址字符转换为 HTML 实体以阻止垃圾邮件机器人。(源文件可参考这里

function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) {
	global $wpdb;

	if ( ! empty( $deprecated ) ) {
		_deprecated_argument( __FUNCTION__, '2.3.0' );
	}

	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 add_option( $deprecated_keys[ $option ], $value, $deprecated, $autoload );
	}

	wp_protect_special_option( $option );

	if ( is_object( $value ) ) {
		$value = clone $value;
	}

	$value = sanitize_option( $option, $value );

	/*
	 * Make sure the option doesn't already exist.
	 * We can check the 'notoptions' cache before we ask for a DB query.
	 */
	$notoptions = wp_cache_get( 'notoptions', 'options' );

	if ( ! is_array( $notoptions ) || ! isset( $notoptions[ $option ] ) ) {
		/** This filter is documented in wp-includes/option.php */
		if ( apply_filters( "default_option_{$option}", false, $option, false ) !== get_option( $option ) ) {
			return false;
		}
	}

	$serialized_value = maybe_serialize( $value );
	$autoload         = ( 'no' === $autoload || false === $autoload ) ? 'no' : 'yes';

	/**
	 * Fires before an option is added.
	 *
	 * @since 2.9.0
	 *
	 * @param string $option Name of the option to add.
	 * @param mixed  $value  Value of the option.
	 */
	do_action( 'add_option', $option, $value );

	$result = $wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)", $option, $serialized_value, $autoload ) );
	if ( ! $result ) {
		return false;
	}

	if ( ! wp_installing() ) {
		if ( 'yes' === $autoload ) {
			$alloptions            = wp_load_alloptions( true );
			$alloptions[ $option ] = $serialized_value;
			wp_cache_set( 'alloptions', $alloptions, 'options' );
		} else {
			wp_cache_set( $option, $serialized_value, 'options' );
		}
	}

	// This option exists now.
	$notoptions = wp_cache_get( 'notoptions', 'options' ); // Yes, again... we need it to be fresh.

	if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {
		unset( $notoptions[ $option ] );
		wp_cache_set( 'notoptions', $notoptions, 'options' );
	}

	/**
	 * Fires after a specific option has been added.
	 *
	 * The dynamic portion of the hook name, `$option`, refers to the option name.
	 *
	 * @since 2.5.0 As "add_option_{$name}"
	 * @since 3.0.0
	 *
	 * @param string $option Name of the option to add.
	 * @param mixed  $value  Value of the option.
	 */
	do_action( "add_option_{$option}", $option, $value );

	/**
	 * Fires after an option has been added.
	 *
	 * @since 2.9.0
	 *
	 * @param string $option Name of the added option.
	 * @param mixed  $value  Value of the option.
	 */
	do_action( 'added_option', $option, $value );

	return true;
}

  推荐:WordPress函数allow_subdirectory_install()检查多站点网络是否允许允许子目录安装

如何使用add_option()

  添加基本​​选项,在这个例子中,我们添加了一个包含字符串值的简单选项。

add_option( 'site_theme_color', 'blue' ); // Adds an option 'site_theme_color' with value 'blue'

  添加带有数组值的选项,您还可以添加一个包含数组值的选项。

add_option( 'featured_posts', array( 12, 15, 18, 21 ) ); // Adds an option 'featured_posts' with an array of post IDs

  添加禁用自动加载的选项,默认情况下,选项是自动加载的。但您可以禁用此功能。

add_option( 'large_dataset', 'a_very_large_string', '', 'no' ); // Adds an option 'large_dataset' with autoload disabled

  更新选项,add_option()函数不会更新现有选项。要做到这一点,您应该使用update_option()函数。

update_option( 'site_theme_color', 'red' ); // Updates the 'site_theme_color' option value to 'red'

  检查选项是否存在,在添加选项之前,您可能需要使用get_option()函数检查它是否已经存在。

if( false === get_option( 'my_custom_option' ) ) {
  add_option( 'my_custom_option', 'my_value' ); // Adds the 'my_custom_option' only if it does not exist
}

  推荐:修复WordPress允许的内存大小已耗尽错误

  推荐:WordPress函数使用手册


晓得博客,版权所有丨如未注明,均为原创
晓得博客 » WordPress函数add_option()向WordPress数据库添加新选项

转载请保留链接:https://www.pythonthree.com/wordpress-add-option/

滚动至顶部