Custom_Background::take_action()

In this article

Executes custom background modification.

Source

public function take_action() {
	if ( empty( $_POST ) ) {
		return;
	}

	if ( isset( $_POST['reset-background'] ) ) {
		check_admin_referer( 'custom-background-reset', '_wpnonce-custom-background-reset' );

		remove_theme_mod( 'background_image' );
		remove_theme_mod( 'background_image_thumb' );

		$this->updated = true;
		return;
	}

	if ( isset( $_POST['remove-background'] ) ) {
		// @todo Uploaded files are not removed here.
		check_admin_referer( 'custom-background-remove', '_wpnonce-custom-background-remove' );

		set_theme_mod( 'background_image', '' );
		set_theme_mod( 'background_image_thumb', '' );

		$this->updated = true;
		wp_safe_redirect( $_POST['_wp_http_referer'] );
		return;
	}

	if ( isset( $_POST['background-preset'] ) ) {
		check_admin_referer( 'custom-background' );

		if ( in_array( $_POST['background-preset'], array( 'default', 'fill', 'fit', 'repeat', 'custom' ), true ) ) {
			$preset = $_POST['background-preset'];
		} else {
			$preset = 'default';
		}

		set_theme_mod( 'background_preset', $preset );
	}

	if ( isset( $_POST['background-position'] ) ) {
		check_admin_referer( 'custom-background' );

		$position = explode( ' ', $_POST['background-position'] );

		if ( in_array( $position[0], array( 'left', 'center', 'right' ), true ) ) {
			$position_x = $position[0];
		} else {
			$position_x = 'left';
		}

		if ( in_array( $position[1], array( 'top', 'center', 'bottom' ), true ) ) {
			$position_y = $position[1];
		} else {
			$position_y = 'top';
		}

		set_theme_mod( 'background_position_x', $position_x );
		set_theme_mod( 'background_position_y', $position_y );
	}

	if ( isset( $_POST['background-size'] ) ) {
		check_admin_referer( 'custom-background' );

		if ( in_array( $_POST['background-size'], array( 'auto', 'contain', 'cover' ), true ) ) {
			$size = $_POST['background-size'];
		} else {
			$size = 'auto';
		}

		set_theme_mod( 'background_size', $size );
	}

	if ( isset( $_POST['background-repeat'] ) ) {
		check_admin_referer( 'custom-background' );

		$repeat = $_POST['background-repeat'];

		if ( 'no-repeat' !== $repeat ) {
			$repeat = 'repeat';
		}

		set_theme_mod( 'background_repeat', $repeat );
	}

	if ( isset( $_POST['background-attachment'] ) ) {
		check_admin_referer( 'custom-background' );

		$attachment = $_POST['background-attachment'];

		if ( 'fixed' !== $attachment ) {
			$attachment = 'scroll';
		}

		set_theme_mod( 'background_attachment', $attachment );
	}

	if ( isset( $_POST['background-color'] ) ) {
		check_admin_referer( 'custom-background' );

		$color = preg_replace( '/[^0-9a-fA-F]/', '', $_POST['background-color'] );

		if ( strlen( $color ) === 6 || strlen( $color ) === 3 ) {
			set_theme_mod( 'background_color', $color );
		} else {
			set_theme_mod( 'background_color', '' );
		}
	}

	$this->updated = true;
}

Changelog

VersionDescription
3.0.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.