Astra_Update_Site_Title_Logo::execute( array $args )

Execute the ability.


Description


Parameters

$args

(array) (Required) Input arguments.


Return

(array) Result array.


Source

File: inc/abilities/customizer/siteidentity/class-astra-update-site-title-logo.php

	public function execute( $args ) {
		$updated = array();

		if ( isset( $args['site_title'] ) ) {
			update_option( 'blogname', sanitize_text_field( $args['site_title'] ) );
			$updated[] = 'site_title';
		}

		if ( isset( $args['tagline'] ) ) {
			update_option( 'blogdescription', sanitize_text_field( $args['tagline'] ) );
			$updated[] = 'tagline';
		}

		if ( isset( $args['logo_id'] ) ) {
			$logo_id = absint( $args['logo_id'] );
			if ( $logo_id > 0 ) {
				set_theme_mod( 'custom_logo', $logo_id );
				$updated[] = 'logo';
			}
		} elseif ( isset( $args['logo_url'] ) ) {
			$logo_url = esc_url_raw( $args['logo_url'] );
			if ( ! empty( $logo_url ) ) {
				$attachment_id = attachment_url_to_postid( $logo_url );
				if ( $attachment_id ) {
					set_theme_mod( 'custom_logo', $attachment_id );
					$updated[] = 'logo';
				}
			}
		}

		if ( isset( $args['retina_logo_url'] ) ) {
			astra_update_option( 'ast-header-retina-logo', esc_url_raw( $args['retina_logo_url'] ) );
			$updated[] = 'retina_logo';
		}

		if ( isset( $args['mobile_logo_url'] ) ) {
			astra_update_option( 'mobile-header-logo', esc_url_raw( $args['mobile_logo_url'] ) );
			$updated[] = 'mobile_logo';
		}

		if ( isset( $args['logo_width'] ) && is_array( $args['logo_width'] ) ) {
			$logo_width = Astra_Abilities_Helper::sanitize_responsive_typo( $args['logo_width'] );
			astra_update_option( 'ast-header-responsive-logo-width', $logo_width );
			$updated[] = 'logo_width';
		}

		if ( isset( $args['display_site_title'] ) && is_array( $args['display_site_title'] ) ) {
			$visibility = array();
			foreach ( array( 'desktop', 'tablet', 'mobile' ) as $device ) {
				if ( isset( $args['display_site_title'][ $device ] ) && $args['display_site_title'][ $device ] ) {
					$visibility[] = $device;
				}
			}
			astra_update_option( 'display-site-title-responsive', $visibility );
			$updated[] = 'site_title_visibility';
		}

		if ( isset( $args['display_tagline'] ) && is_array( $args['display_tagline'] ) ) {
			$visibility = array();
			foreach ( array( 'desktop', 'tablet', 'mobile' ) as $device ) {
				if ( isset( $args['display_tagline'][ $device ] ) && $args['display_tagline'][ $device ] ) {
					$visibility[] = $device;
				}
			}
			astra_update_option( 'display-site-tagline-responsive', $visibility );
			$updated[] = 'tagline_visibility';
		}

		if ( isset( $args['logo_title_inline'] ) ) {
			astra_update_option( 'logo-title-inline', (bool) $args['logo_title_inline'] );
			$updated[] = 'logo_title_inline';
		}

		if ( isset( $args['different_retina_logo'] ) ) {
			astra_update_option( 'different-retina-logo', (bool) $args['different_retina_logo'] );
			$updated[] = 'different_retina_logo';
		}

		if ( isset( $args['different_mobile_logo'] ) ) {
			astra_update_option( 'different-mobile-logo', (bool) $args['different_mobile_logo'] );
			$updated[] = 'different_mobile_logo';
		}

		if ( empty( $updated ) ) {
			return Astra_Abilities_Response::error(
				__( 'No valid parameters provided to update.', 'astra' )
			);
		}

		return Astra_Abilities_Response::success(
			/* translators: %s: comma-separated list of updated fields */
			sprintf( __( 'Site title and logo updated successfully: %s', 'astra' ), implode( ', ', $updated ) ),
			array(
				'updated'               => $updated,
				'site_title'            => get_option( 'blogname' ),
				'tagline'               => get_option( 'blogdescription' ),
				'logo_id'               => get_theme_mod( 'custom_logo' ),
				'retina_logo'           => astra_get_option( 'ast-header-retina-logo' ),
				'mobile_logo'           => astra_get_option( 'mobile-header-logo' ),
				'logo_width'            => astra_get_option( 'ast-header-responsive-logo-width' ),
				'display_site_title'    => astra_get_option( 'display-site-title-responsive' ),
				'display_tagline'       => astra_get_option( 'display-site-tagline-responsive' ),
				'logo_title_inline'     => astra_get_option( 'logo-title-inline' ),
				'different_retina_logo' => astra_get_option( 'different-retina-logo' ),
				'different_mobile_logo' => astra_get_option( 'different-mobile-logo' ),
			)
		);
	}


User Contributed Notes

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