| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 |
- <?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;
- } else if ( '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;
- }
|