1. 首页
  2. WordPress钩子手册

add_site_option

do_action( ‘add_site_option’, string $option, mixed $value, int $network_id )

操作挂钩:在成功添加网络选项后激发。
Action Hook: Fires after a network option has been successfully added.

目录锚点:#参数#源码


参数(Parameters)

参数 类型 说明
$option (string) 网络选项的名称。
$value (mixed) 网络选项的值。
$network_id (int) 网络的ID。

源码(Source)

/**
 * Add a new site option.
 *
 * Existing options will not be updated. Note that prior to 3.3 this wasn't the case.
 *
 * @since 2.8.0
 *
 * @see add_option()
 *
 * @global wpdb $wpdb
 *
 * @param string $option Name of option to add. Expected to not be SQL-escaped.
 * @param mixed  $value  Optional. Option value, can be anything. Expected to not be SQL-escaped.
 * @return bool False if option was not added and true if option was added.
 */
function add_site_option( $option, $value ) {
	global $wpdb;

	wp_protect_special_option( $option );

	/**
	 * Filter the value of a specific site option before it is added.
	 *
	 * The dynamic portion of the hook name, `$option`, refers to the option name.
	 *
	 * @since 2.9.0 As 'pre_add_site_option_' . $key
	 * @since 3.0.0
	 *
	 * @param mixed $value Value of site option.
	 */
	$value = apply_filters( 'pre_add_site_option_' . $option, $value );

	$notoptions_key = "{$wpdb->siteid}:notoptions";

	if ( !is_multisite() ) {
		$result = add_option( $option, $value );
	} else {
		$cache_key = "{$wpdb->siteid}:$option";

		// 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_key, 'site-options' );
		if ( ! is_array( $notoptions ) || ! isset( $notoptions[$option] ) )
			if ( false !== get_site_option( $option ) )
				return false;

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

		$serialized_value = maybe_serialize( $value );
		$result = $wpdb->insert( $wpdb->sitemeta, array('site_id' => $wpdb->siteid, 'meta_key' => $option, 'meta_value' => $serialized_value ) );

		if ( ! $result )
			return false;

		wp_cache_set( $cache_key, $value, 'site-options' );

		// This option exists now
		$notoptions = wp_cache_get( $notoptions_key, 'site-options' ); // yes, again... we need it to be fresh
		if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
			unset( $notoptions[$option] );
			wp_cache_set( $notoptions_key, $notoptions, 'site-options' );
		}
	}

	if ( $result ) {

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

		/**
		 * Fires after a site option has been successfully added.
		 *
		 * @since 3.0.0
		 *
		 * @param string $option Name of site option.
		 * @param mixed  $value  Value of site option.
		 */
		do_action( "add_site_option", $option, $value );

		return true;
	}
	return false;
}
更新版本 源码位置 使用 被使用
4.7.0 wp-includes/option.php:1454 1 0

add_site_option 为WP2原创文章,链接:https://www.wp2.cn/hook/add_site_option/

发表评论

您的电子邮箱地址不会被公开。