Add upstream
This commit is contained in:
		| @@ -0,0 +1,176 @@ | ||||
| <?php | ||||
| /** | ||||
|  * Functions and template tags for using site logos. | ||||
|  * | ||||
|  * @package Jetpack | ||||
|  */ | ||||
|  | ||||
| /** | ||||
|  * Retrieve the site logo URL or ID (URL by default). Pass in the string 'id' for ID. | ||||
|  * | ||||
|  * @uses get_option() | ||||
|  * @uses esc_url_raw() | ||||
|  * @uses set_url_scheme() | ||||
|  * @return mixed The URL or ID of our site logo, false if not set | ||||
|  * @since 1.0 | ||||
|  */ | ||||
| function jetpack_get_site_logo( $show = 'url' ) { | ||||
| 	$logo = site_logo()->logo; | ||||
|  | ||||
| 	// Return false if no logo is set | ||||
| 	if ( ! isset( $logo['id'] ) || 0 == $logo['id'] ) { | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	// Return the ID if specified, otherwise return the URL by default | ||||
| 	if ( 'id' == $show ) { | ||||
| 		return $logo['id']; | ||||
| 	} else { | ||||
| 		return esc_url_raw( set_url_scheme( $logo['url'] ) ); | ||||
| 	} | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Retrieve an array of the dimensions of the Site Logo. | ||||
|  * | ||||
|  * @uses Site_Logo::theme_size() | ||||
|  * @uses get_option( 'thumbnail_size_w' ) | ||||
|  * @uses get_option( 'thumbnail_size_h' ) | ||||
|  * @uses global $_wp_additional_image_sizes; | ||||
|  * | ||||
|  * @since 3.6.0 | ||||
|  * | ||||
|  * @return array $dimensions { | ||||
|  *      An array of dimensions of the Site Logo. | ||||
|  * | ||||
|  *      @type string $width Width of the logo in pixels. | ||||
|  *      @type string $height Height of the logo in pixels. | ||||
|  * } | ||||
|  */ | ||||
| function jetpack_get_site_logo_dimensions() { | ||||
| 	// Get the image size to use with the logo. | ||||
| 	$size = site_logo()->theme_size(); | ||||
|  | ||||
| 	// If the size is the default `thumbnail`, get its dimensions. Otherwise, get them from $_wp_additional_image_sizes | ||||
| 	if ( empty( $size ) ) { | ||||
| 		return false; | ||||
| 	} elseif ( 'thumbnail' == $size ) { | ||||
| 		$dimensions = array( | ||||
| 			'width'  => get_option( 'thumbnail_size_w' ), | ||||
| 			'height' => get_option( 'thumbnail_size_h' ), | ||||
| 		); | ||||
| 	} else { | ||||
| 		global $_wp_additional_image_sizes; | ||||
|  | ||||
| 		if ( ! isset( $_wp_additional_image_sizes[ $size ] ) ) { | ||||
| 			return false; | ||||
| 		} | ||||
|  | ||||
| 		$dimensions = array( | ||||
| 			'width'  => $_wp_additional_image_sizes[ $size ]['width'], | ||||
| 			'height' => $_wp_additional_image_sizes[ $size ]['height'], | ||||
| 		); | ||||
| 	} | ||||
|  | ||||
| 	return $dimensions; | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Determine if a site logo is assigned or not. | ||||
|  * | ||||
|  * @uses get_option | ||||
|  * @return boolean True if there is an active logo, false otherwise | ||||
|  */ | ||||
| function jetpack_has_site_logo() { | ||||
| 	return site_logo()->has_site_logo(); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Output an <img> tag of the site logo, at the size specified | ||||
|  * in the theme's add_theme_support() declaration. | ||||
|  * | ||||
|  * @uses Site_Logo::logo | ||||
|  * @uses Site_Logo::theme_size() | ||||
|  * @uses jetpack_has_site_logo() | ||||
|  * @uses jetpack_is_customize_preview() | ||||
|  * @uses esc_url() | ||||
|  * @uses home_url() | ||||
|  * @uses esc_attr() | ||||
|  * @uses wp_get_attachment_image() | ||||
|  * @uses apply_filters() | ||||
|  * @since 1.0 | ||||
|  */ | ||||
| function jetpack_the_site_logo() { | ||||
| 	$logo    = site_logo()->logo; | ||||
| 	$logo_id = get_theme_mod( 'custom_logo' ); // Check for WP 4.5 Site Logo | ||||
| 	$logo_id = $logo_id ? $logo_id : $logo['id']; // Use WP Core logo if present, otherwise use Jetpack's. | ||||
| 	$size    = site_logo()->theme_size(); | ||||
| 	$html    = ''; | ||||
|  | ||||
| 	// If no logo is set, but we're in the Customizer, leave a placeholder (needed for the live preview). | ||||
| 	if ( ! jetpack_has_site_logo() ) { | ||||
| 		if ( jetpack_is_customize_preview() ) { | ||||
| 			$html = sprintf( | ||||
| 				'<a href="%1$s" class="site-logo-link" style="display:none;"><img class="site-logo" data-size="%2$s" /></a>', | ||||
| 				esc_url( home_url( '/' ) ), | ||||
| 				esc_attr( $size ) | ||||
| 			); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// We have a logo. Logo is go. | ||||
| 	else { | ||||
| 		$html = sprintf( | ||||
| 			'<a href="%1$s" class="site-logo-link" rel="home" itemprop="url">%2$s</a>', | ||||
| 			esc_url( home_url( '/' ) ), | ||||
| 			wp_get_attachment_image( | ||||
| 				$logo_id, | ||||
| 				$size, | ||||
| 				false, | ||||
| 				array( | ||||
| 					'class'     => "site-logo attachment-$size", | ||||
| 					'data-size' => $size, | ||||
| 					'itemprop'  => 'logo', | ||||
| 				) | ||||
| 			) | ||||
| 		); | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
| 	 * Filter the Site Logo output. | ||||
| 	 * | ||||
| 	 * @module theme-tools | ||||
| 	 * | ||||
| 	 * @since 3.2.0 | ||||
| 	 * | ||||
| 	 * @param string $html Site Logo HTML output. | ||||
| 	 * @param array $logo Array of Site Logo details. | ||||
| 	 * @param string $size Size specified in add_theme_support declaration, or 'thumbnail' default. | ||||
| 	 */ | ||||
| 	echo apply_filters( 'jetpack_the_site_logo', $html, $logo, $size ); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Whether the site is being previewed in the Customizer. | ||||
|  * Duplicate of core function until 4.0 is released. | ||||
|  * | ||||
|  * @global WP_Customize_Manager $wp_customize Customizer instance. | ||||
|  * @return bool True if the site is being previewed in the Customizer, false otherwise. | ||||
|  */ | ||||
| function jetpack_is_customize_preview() { | ||||
| 	global $wp_customize; | ||||
|  | ||||
| 	return is_a( $wp_customize, 'WP_Customize_Manager' ) && $wp_customize->is_preview(); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Sanitize the string of classes used for header text. | ||||
|  * Limit to A-Z,a-z,0-9,(space),(comma),_,- | ||||
|  * | ||||
|  * @return string Sanitized string of CSS classes. | ||||
|  */ | ||||
| function jetpack_sanitize_header_text_classes( $classes ) { | ||||
| 	$classes = preg_replace( '/[^A-Za-z0-9\,\ ._-]/', '', $classes ); | ||||
|  | ||||
| 	return $classes; | ||||
| } | ||||
		Reference in New Issue
	
	Block a user