WPSEO_Taxonomy_Meta::validate_option()protectedYoast 1.0

Validate the option.

Метод класса: WPSEO_Taxonomy_Meta{}

Возвращает

Массив. Validated clean value for the option to be saved to the database.

Использование

// protected - в коде основоного (родительского) или дочернего класса
$result = $this->validate_option( $dirty, $clean, $old );
$dirty(массив) (обязательный)
New value for the option.
$clean(массив) (обязательный)
Clean value for the option, normally the defaults.
$old(массив) (обязательный)
Old value of the option.

Код WPSEO_Taxonomy_Meta::validate_option() Yoast 22.4

protected function validate_option( $dirty, $clean, $old ) {
	/*
	 * Prevent complete validation (which can be expensive when there are lots of terms)
	 * if only one item has changed and has already been validated.
	 */
	if ( isset( $dirty['wpseo_already_validated'] ) && $dirty['wpseo_already_validated'] === true ) {
		unset( $dirty['wpseo_already_validated'] );

		return $dirty;
	}

	foreach ( $dirty as $taxonomy => $terms ) {
		/* Don't validate taxonomy - may not be registered yet and we don't want to remove valid ones. */
		if ( is_array( $terms ) && $terms !== [] ) {
			foreach ( $terms as $term_id => $meta_data ) {
				/* Only validate term if the taxonomy exists. */
				if ( taxonomy_exists( $taxonomy ) && get_term_by( 'id', $term_id, $taxonomy ) === false ) {
					/* Is this term id a special case ? */
					if ( has_filter( 'wpseo_tax_meta_special_term_id_validation_' . $term_id ) !== false ) {
						$clean[ $taxonomy ][ $term_id ] = apply_filters( 'wpseo_tax_meta_special_term_id_validation_' . $term_id, $meta_data, $taxonomy, $term_id );
					}
					continue;
				}

				if ( is_array( $meta_data ) && $meta_data !== [] ) {
					/* Validate meta data. */
					$old_meta  = self::get_term_meta( $term_id, $taxonomy );
					$meta_data = self::validate_term_meta_data( $meta_data, $old_meta );
					if ( $meta_data !== [] ) {
						$clean[ $taxonomy ][ $term_id ] = $meta_data;
					}
				}

				// Deal with special cases (for when taxonomy doesn't exist yet).
				if ( ! isset( $clean[ $taxonomy ][ $term_id ] ) && has_filter( 'wpseo_tax_meta_special_term_id_validation_' . $term_id ) !== false ) {
					$clean[ $taxonomy ][ $term_id ] = apply_filters( 'wpseo_tax_meta_special_term_id_validation_' . $term_id, $meta_data, $taxonomy, $term_id );
				}
			}
		}
	}

	return $clean;
}