File Editor
Directories:
.. (Back)
admin
compatibility
core
customizer
utilities
Files:
breadcrumbs.php
class-sinatra-dynamic-styles.php
common.php
deprecated.php
helpers.php
icon-functions.php
index.php
template-parts.php
template-tags.php
widgets.php
Create New File
Create
Edit File: common.php
<?php /** * Common functions used in backend and frontend of the theme. * * @package Sinatra * @author Sinatra Team <hello@sinatrawp.com> * @since 1.0.0 */ /** * Do not allow direct script access. */ if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! function_exists( 'sinatra_get_allowed_html_tags' ) ) { /** * Array of allowed HTML Tags. * * @since 1.0.0 * @param string $type predefined HTML tags group name. * @return array, allowed HTML tags. */ function sinatra_get_allowed_html_tags( $type = 'post' ) { $tags = array(); switch ( $type ) { case 'basic': $tags = array( 'strong' => array(), 'em' => array(), 'b' => array(), 'br' => array(), 'i' => array( 'class' => array(), ), 'img' => array( 'src' => array(), 'alt' => array(), 'width' => array(), 'height' => array(), 'class' => array(), 'id' => array(), ), 'span' => array( 'class' => array(), ), 'a' => array( 'href' => array(), 'rel' => array(), 'target' => array(), 'class' => array(), 'role' => array(), 'id' => array(), ), ); break; case 'button': $tags = array( 'strong' => array(), 'em' => array(), 'span' => array( 'class' => array(), ), 'i' => array( 'class' => array(), ), ); break; case 'span': $tags = array( 'span' => array( 'class' => array(), ), ); break; case 'icon': $tags = array( 'i' => array(), 'span' => array(), 'img' => array(), ); break; case 'post': $tags = wp_kses_allowed_html( 'post' ); $tags = array_merge( $tags, array( 'svg' => array( 'class' => true, 'xmlns' => true, 'width' => true, 'height' => true, 'viewbox' => true, 'aria-hidden' => true, 'role' => true, 'focusable' => true, ), 'path' => array( 'fill' => true, 'fill-rule' => true, 'd' => true, 'transform' => true, ), 'polygon' => array( 'fill' => true, 'fill-rule' => true, 'points' => true, 'transform' => true, 'focusable' => true, ), 'title' => array(), ) ); break; case 'svg': $tags = array( 'svg' => array( 'class' => true, 'xmlns' => true, 'width' => true, 'height' => true, 'viewbox' => true, 'aria-hidden' => true, 'role' => true, 'focusable' => true, ), 'path' => array( 'fill' => true, 'fill-rule' => true, 'd' => true, 'transform' => true, ), 'polygon' => array( 'fill' => true, 'fill-rule' => true, 'points' => true, 'transform' => true, 'focusable' => true, ), 'title' => array(), ); break; default: $tags = array( 'strong' => array(), 'em' => array(), 'b' => array(), 'i' => array(), 'img' => array( 'src' => array(), 'alt' => array(), 'width' => array(), 'height' => array(), 'class' => array(), 'id' => array(), ), 'span' => array(), 'a' => array( 'href' => array(), 'rel' => array(), 'target' => array(), 'class' => array(), 'role' => array(), 'id' => array(), ), ); break; } return apply_filters( 'sinatra_allowed_html_tags', $tags, $type ); } } /** * Returns the value for option. * * @since 1.0.0 * * @param string $id Option ID. * @param string $prefix Theme prefix. * @param string $type Option or Theme Mod. * @return mixed Option value. */ function sinatra_option( $id, $prefix = 'sinatra_', $type = 'theme_mod' ) { if ( 'theme_mod' === $type ) { return sinatra()->options->get( $prefix . $id ); } else { return get_option( $prefix . $id, sinatra()->options->get( $prefix . $id ) ); } } /** * Get default for option. * * @since 1.1.0 * * @param string $id Option ID. * @param string $prefix Theme prefix. * @return mixed Option value. */ function sinatra_get_default( $id, $prefix = 'sinatra_' ) { return sinatra()->options->get_default( $prefix . $id ); } /** * Checks to see if Top Bar is enabled. * * @since 1.0.0 * * @param int $post_id Optional. The post ID to check. * @return boolean if Top Bar is enabled. */ function sinatra_is_top_bar_displayed( $post_id = 0 ) { if ( ! $post_id ) { $post_id = sinatra_get_the_id(); } $top_bar_displayed = sinatra_option( 'top_bar_enable' ); if ( $post_id && $top_bar_displayed ) { $top_bar_displayed = ! get_post_meta( $post_id, 'sinatra_disable_topbar', true ); } // Do not show top bar on 404 page. if ( is_404() ) { $top_bar_displayed = false; } return apply_filters( 'sinatra_is_top_bar_displayed', $top_bar_displayed, $post_id ); } /** * Checks to see if Page Preloader is displayed. * * @since 1.0.0 * * @return boolean, true if Preloader is displayed. */ function sinatra_is_preloader_displayed() { $displayed = (bool) sinatra_option( 'preloader' ); return apply_filters( 'sinatra_is_preloader_displayed', $displayed ); } /** * Checks to see if Header is displayed. * * @since 1.0.0 * * @param int $post_id Optional. The post ID to check. * @return boolean true if Header is displayed. */ function sinatra_is_header_displayed( $post_id = 0 ) { if ( ! $post_id ) { $post_id = sinatra_get_the_id(); } $displayed = true; if ( $post_id ) { $displayed = ! get_post_meta( $post_id, 'sinatra_disable_header', true ); } return apply_filters( 'sinatra_is_header_displayed', $displayed, $post_id ); } /** * Checks to see if Transparent Header is enabled. * * @since 1.0.0 * @param int $post_id Optional. The post ID to check. * @return boolean, true if Header is transparent. */ function sinatra_is_header_transparent( $post_id = 0 ) { if ( ! $post_id ) { $post_id = sinatra_get_the_id(); } $enabled = sinatra_option( 'tsp_header' ); if ( $enabled && sinatra_is_section_disabled( sinatra_option( 'tsp_header_disable_on' ), $post_id ) ) { $enabled = false; } if ( $post_id ) { $_meta = get_post_meta( $post_id, 'sinatra_transparent_header', true ); if ( 'enable' === $_meta ) { $enabled = true; } elseif ( 'disable' === $_meta ) { $enabled = false; } } return apply_filters( 'sinatra_transparent_header', $enabled, $post_id ); } /** * Checks to see if Pre Footer is enabled. * * @since 1.0.0 * * @param int $post_id Optional. The post ID to check. * @return boolean true if Pre Footer is enabled. */ function sinatra_is_pre_footer_displayed( $post_id = 0 ) { if ( ! $post_id ) { $post_id = sinatra_get_the_id(); } $displayed = false; // Customizer option to enable pre-footer. if ( sinatra_option( 'enable_pre_footer_cta' ) ) { $displayed = true; } // At least one pre-footer are has to be enabled. if ( ! sinatra_is_pre_footer_cta_displayed( $post_id ) ) { $displayed = false; } return apply_filters( 'sinatra_is_pre_footer_displayed', $displayed, $post_id ); } /** * Checks to see if Pre Footer is enabled. * * @since 1.0.0 * * @param int $post_id Optional. The post ID to check. * @return boolean True if Pre Footer is enabled. */ function sinatra_is_pre_footer_cta_displayed( $post_id = 0 ) { if ( ! $post_id ) { $post_id = sinatra_get_the_id(); } $displayed = false; if ( sinatra_option( 'enable_pre_footer_cta' ) ) { $displayed = true; } if ( $displayed && sinatra_is_section_disabled( sinatra_option( 'pre_footer_cta_hide_on' ), $post_id ) ) { $displayed = false; } if ( $post_id && $displayed ) { $displayed = ! get_post_meta( $post_id, 'sinatra_disable_prefooter_cta', true ); } // Do not show pre footer widgets on 404 page. if ( is_404() ) { $displayed = false; } return apply_filters( 'sinatra_is_pre_footer_cta_displayed', $displayed, $post_id ); } /** * Checks to see if Hero section is enabled. * * @since 1.0.0 * * @param int $post_id Optional. The post ID to check. * @return boolean True if Hero is enabled. */ function sinatra_is_hero_displayed( $post_id = 0 ) { $displayed = true; if ( ! sinatra_option( 'enable_hero' ) ) { $displayed = false; } if ( $displayed && ! sinatra_is_section_disabled( sinatra_option( 'hero_enable_on' ), $post_id ) ) { $displayed = false; } return apply_filters( 'sinatra_is_hero_displayed', $displayed, $post_id ); } /** * Checks to see if Main Footer is enabled. * * @since 1.0.0 * * @param int $post_id Optional. The post ID to check. * @return boolean, true if Main Footer is enabled. */ function sinatra_is_footer_displayed( $post_id = 0 ) { if ( ! $post_id ) { $post_id = sinatra_get_the_id(); } $footer_displayed = sinatra_option( 'enable_footer' ); if ( $post_id && $footer_displayed ) { $footer_displayed = ! get_post_meta( $post_id, 'sinatra_disable_footer', true ); } // Do not show footer widgets on 404 page. if ( is_404() ) { $footer_displayed = false; } if ( $footer_displayed && ! current_user_can( 'edit_theme_options' ) ) { $footer_columns = sinatra_get_footer_column_count(); $footer_active = false; for ( $i = 1; $i <= $footer_columns; $i++ ) { $footer_active = $footer_active || is_active_sidebar( 'sinatra-footer-' . $i ); } $footer_displayed = $footer_displayed && $footer_active; } return apply_filters( 'sinatra_is_footer_displayed', $footer_displayed, $post_id ); } /** * Checks to see if Copyright Bar is enabled. * * @since 1.0.0 * * @param int $post_id Optional. The post ID to check. * @return boolean, true if Copyright bar is enabled. */ function sinatra_is_copyright_bar_displayed( $post_id = 0 ) { if ( ! $post_id ) { $post_id = sinatra_get_the_id(); } $displayed = sinatra_option( 'enable_copyright' ); $widgets = sinatra_option( 'copyright_widgets' ); if ( $displayed && ! is_array( $widgets ) || empty( $widgets ) ) { $displayed = false; } if ( $post_id && $displayed ) { $displayed = ! get_post_meta( $post_id, 'sinatra_disable_copyright', true ); } // Do not show copyright bar on 404 page. if ( is_404() ) { $displayed = false; } return apply_filters( 'sinatra_is_copyright_displayed', $displayed, $post_id ); } /** * Checks to see if Colophon section is enabled. * * @since 1.0.0 * * @param int $post_id Optional. The post ID to check. * @return boolean, true if Colophon is enabled. */ function sinatra_is_colophon_displayed( $post_id = 0 ) { if ( ! $post_id ) { $post_id = sinatra_get_the_id(); } $displayed = true; // Do not show colophon if both footer and copyright bar are not displayed. if ( ! sinatra_is_footer_displayed( $post_id ) && ! sinatra_is_copyright_bar_displayed( $post_id ) ) { $displayed = false; } // Do not show colophon on 404 page. if ( is_404() ) { $displayed = false; } return apply_filters( 'sinatra_is_colophon_displayed', $displayed, $post_id ); } /** * Checks to see if Page Header is displayed. * * @since 1.0.0 * * @param int $post_id Optional. The post ID to check. * @return boolean, if Page Header is displayed. */ function sinatra_is_page_header_displayed( $post_id = 0 ) { if ( ! $post_id ) { $post_id = sinatra_get_the_id(); } $displayed = sinatra_option( 'page_header_enable' ); if ( $post_id && $displayed ) { $displayed = sinatra_page_header_has_title( $post_id ) || sinatra_page_header_has_breadcrumbs( $post_id ); } elseif ( is_404() ) { $displayed = false; } if ( is_front_page() ) { $displayed = false; } return apply_filters( 'sinatra_is_page_header_displayed', $displayed, $post_id ); } /** * Checks to see if WooCommerce is installed & activated. * * @since 1.0.0 * @return boolean, if Copyright bar is enabled. */ function sinatra_is_woocommerce_activated() { return class_exists( 'woocommerce' ); } /** * Get registered sidebar name by sidebar ID. * * @since 1.0.0 * @param string $sidebar_id Sidebar ID. * @return string Sidebar name. */ function sinatra_get_sidebar_name_by_id( $sidebar_id = '' ) { if ( ! $sidebar_id ) { return; } global $wp_registered_sidebars; $sidebar_name = ''; if ( isset( $wp_registered_sidebars[ $sidebar_id ] ) ) { $sidebar_name = $wp_registered_sidebars[ $sidebar_id ]['name']; } return $sidebar_name; } /** * Convert hexdec color string to rgb(a) string. * * @since 1.0.0 * @param string $color Hex color code. * @param string | boolean $opacity opacity value. * @return string color in rgba format. */ function sinatra_hex2rgba( $color, $opacity = false ) { $default = 'rgb(0,0,0)'; // Return default if no color provided. if ( empty( $color ) ) { return $default; } if ( substr( $color, 0, 4 ) === 'rgba' ) { return $color; } // Sanitize $color if "#" is provided. if ( '#' === $color[0] ) { $color = substr( $color, 1 ); } // Check if color has 6 or 3 characters and get values. if ( 6 === strlen( $color ) ) { $hex = array( $color[0] . $color[1], $color[2] . $color[3], $color[4] . $color[5] ); } elseif ( 3 === strlen( $color ) ) { $hex = array( $color[0] . $color[0], $color[1] . $color[1], $color[2] . $color[2] ); } else { return $default; } // Convert hexadec to rgb. $rgb = array_map( 'hexdec', $hex ); // Check if opacity is set(rgba or rgb). if ( $opacity ) { if ( abs( $opacity ) > 1 ) { $opacity = 1; } $output = 'rgba(' . implode( ',', $rgb ) . ',' . $opacity . ')'; } else { $output = 'rgb(' . implode( ',', $rgb ) . ')'; } // Return rgb(a) color string. return $output; } /** * Convert rgb(a) color string to hex string. * * @since 1.0.0 * @param string $color rgb(a) color code. * @return string color in HEX format. */ function sinatra_rgba2hex( $color ) { preg_match( '/rgba?\(\s?([0-9]{1,3}),\s?([0-9]{1,3}),\s?([0-9]{1,3})/i', $color, $matches ); if ( ! is_array( $matches ) || count( $matches ) < 3 ) { return false; } $hex = ''; for ( $i = 1; $i <= 3; $i++ ) { $x = dechex( (int) $matches[ $i ] ); $hex .= ( 1 === strlen( $x ) ) ? '0' . $x : $x; } if ( $hex ) { return '#' . $hex; } return false; } /** * Lightens/darkens a given colour (in hex format), returning the altered color in hex format. * * @since 1.0.0 * @param string $hexcolor Color as hexadecimal (with or without hash). * @param float $percent Decimal ( 0.2 = lighten by 20%, -0.4 = darken by 40% ). * @return string Lightened/Darkend color as hexadecimal (with hash) */ function sinatra_luminance( $hexcolor, $percent ) { if ( empty( $hexcolor ) ) { return; } // Check if color is in RGB format and convert to HEX. if ( false !== strpos( $hexcolor, 'rgb' ) ) { $hexcolor = sinatra_rgba2hex( $hexcolor ); } $hexcolor = trim( $hexcolor, '#' ); if ( strlen( $hexcolor ) < 6 && strlen( $hexcolor ) > 2 ) { $hexcolor = $hexcolor[0] . $hexcolor[0] . $hexcolor[1] . $hexcolor[1] . $hexcolor[2] . $hexcolor[2]; } else if ( strlen( $hexcolor ) < 3 || strlen( $hexcolor ) > 6 ) { return; } $hexcolor = array_map( 'hexdec', str_split( str_pad( str_replace( '#', '', $hexcolor ), 6, '0' ), 2 ) ); foreach ( $hexcolor as $i => $color ) { $from = $percent < 0 ? 0 : $color; $to = $percent < 0 ? $color : 255; $pvalue = ceil( ( $to - $from ) * $percent ); $hexcolor[ $i ] = str_pad( dechex( $color + $pvalue ), 2, '0', STR_PAD_LEFT ); } // Return hex color. return '#' . implode( $hexcolor ); } /** * Determine whether a hex color is light. * * @param mixed $color Color. * @return bool True if a light color. */ function sinatra_is_light_color( $color ) { // Ensure we color is in hex format. if ( false !== strpos( $color, 'rgb' ) ) { $color = sinatra_rgba2hex( $color ); } $hex = str_replace( '#', '', $color ); $c_r = hexdec( substr( $hex, 0, 2 ) ); $c_g = hexdec( substr( $hex, 2, 2 ) ); $c_b = hexdec( substr( $hex, 4, 2 ) ); $brightness = ( ( $c_r * 299 ) + ( $c_g * 587 ) + ( $c_b * 114 ) ) / 1000; return $brightness > 155; } /** * Detect if we should use a light or dark color on a background color. * * @param mixed $color Color. * @param string $dark Darkest reference. Defaults to '#000000'. * @param string $light Lightest reference. Defaults to '#FFFFFF'. * @return string */ function sinatra_light_or_dark( $color, $dark = '#000000', $light = '#FFFFFF' ) { return sinatra_is_light_color( $color ) ? $dark : $light; } if ( ! function_exists( 'sinatra_get_prop' ) ) : /** * Get a specific property of an array without needing to check if that property exists. * * Provide a default value if you want to return a specific value if the property is not set. * * @since 1.0.0 * * @param array $array Array from which the property's value should be retrieved. * @param string $prop Name of the property to be retrieved. * @param string $default Optional. Value that should be returned if the property is not set or empty. Defaults to null. * * @return null|string|mixed The value */ function sinatra_get_prop( $array, $prop, $default = null ) { if ( ! is_array( $array ) && ! ( is_object( $array ) && $array instanceof ArrayAccess ) ) { return $default; } if ( isset( $array[ $prop ] ) ) { $value = $array[ $prop ]; } else { $value = ''; } return empty( $value ) && null !== $default ? $default : $value; } endif; /** * Print objects to error log. * * @since 1.0.0 * @param string $object Object to be printed. */ function sinatra_log( $object ) { // phpcs:disable ob_start(); print_r( $object ); error_log( ob_get_clean() ); // phpcs:enable } /** * Returns blog page URL. * * @since 1.0.0 * @return String, current page URL. */ function sinatra_get_blog_url() { $blog_url = ''; // If front page is set to display a static page, get the URL of the posts page. if ( 'page' === get_option( 'show_on_front' ) ) { $page_for_posts = get_option( 'page_for_posts' ); if ( $page_for_posts ) { $blog_url = get_permalink( $page_for_posts ); } } else { // The front page IS the posts page. Get its URL. $blog_url = home_url( '/' ); } return apply_filters( 'sinatra_site_url', $blog_url ); } /** * Returns array of default values for Design Options field. * * @since 1.0.0 * @param array $options Default options. * @return array $defaults array of default values. */ function sinatra_design_options_defaults( $options = array() ) { $defaults = array(); // Background options. if ( isset( $options['background'] ) ) { // Default background type. if ( isset( $options['background']['background-type'] ) && in_array( $options['background']['background-type'], array( 'color', 'image', 'gradient' ), true ) ) { $defaults['background-type'] = $options['background']['background-type']; } else { $defaults['background-type'] = 'color'; } // Background color defaults. if ( isset( $options['background']['color'] ) ) { $defaults += wp_parse_args( (array) $options['background']['color'], array( 'background-color' => '', ) ); } // Background image defaults. if ( isset( $options['background']['image'] ) ) { $defaults += wp_parse_args( (array) $options['background']['image'], array( 'background-image' => '', 'background-repeat' => 'no-repeat', 'background-position-x' => '50', 'background-position-y' => '50', 'background-size' => 'cover', 'background-attachment' => 'inherit', 'background-image-id' => '', 'background-color-overlay' => 'rgba(0,0,0,0.5)', ) ); } // Background gradient defaults. if ( isset( $options['background']['gradient'] ) ) { $defaults += wp_parse_args( (array) $options['background']['gradient'], array( 'gradient-color-1' => '#16222A', 'gradient-color-1-location' => '0', 'gradient-color-2' => '#3A6073', 'gradient-color-2-location' => '100', 'gradient-type' => 'linear', 'gradient-linear-angle' => '45', 'gradient-position' => 'center center', ) ); } } // Border default. if ( isset( $options['border'] ) ) { $defaults += wp_parse_args( (array) $options['border'], array( 'border-left-width' => '', 'border-top-width' => '', 'border-right-width' => '', 'border-bottom-width' => '', 'border-color' => '', 'style' => 'solid', 'separator-color' => '', ) ); } // Color default. if ( isset( $options['color'] ) ) { $defaults += wp_parse_args( (array) $options['color'], array( 'text-color' => '', 'link-color' => '', 'link-hover-color' => '', ) ); } return apply_filters( 'sinatra_design_options_defaults', $defaults, $options ); } /** * Returns array of default values for Typography field. * * @since 1.0.0 * @param array $options Default options. * @return array $defaults array of default values. */ function sinatra_typography_defaults( $options = array() ) { $defaults = apply_filters( 'sinatra_typography_defaults', array( 'font-family' => 'inherit', 'font-subsets' => array(), 'font-weight' => '400', 'font-style' => 'inherit', 'text-transform' => 'inherit', 'text-decoration' => 'inherit', 'font-size-desktop' => '', 'font-size-tablet' => '', 'font-size-mobile' => '', 'font-size-unit' => 'px', 'letter-spacing' => '0', 'letter-spacing-unit' => 'px', 'line-height-desktop' => '', 'line-height-tablet' => '', 'line-height-mobile' => '', 'line-height-unit' => '', ) ); $options = wp_parse_args( $options, $defaults ); return $options; } if ( ! function_exists( 'sinatra_enable_page_builder_compatibility' ) ) : /** * Allow filter to enable/disable page builder compatibility. * * @since 1.0.0 * * @return bool True - If the page builder compatibility is enabled. False - IF the page builder compatibility is disabled. */ function sinatra_enable_page_builder_compatibility() { return apply_filters( 'sinatra_enable_page_builder_compatibility', true ); } endif; /** * Insert into array before specified key. * * @since 1.0.0 * @param array $array Array to be modified. * @param array $pairs Array of key => value pairs to insert. * @param mixed $key Key of $array to insert before or after. * @param string $position Before or after $key. * @return array $result Array with inserted $new value. */ function sinatra_array_insert( $array, $pairs, $key, $position = 'after' ) { $key_pos = array_search( $key, array_keys( $array ), true ); if ( 'after' === $position ) { $key_pos++; } if ( false !== $key_pos ) { $result = array_slice( $array, 0, $key_pos ); $result = array_merge( $result, $pairs ); $result = array_merge( $result, array_slice( $array, $key_pos ) ); } else { $result = array_merge( $array, $pairs ); } return $result; } /** * Get background color based on site layout. * * @since 1.0.0 * @return string Background color. */ function sinatra_get_background_color() { $site_layout = sinatra_get_site_layout(); if ( in_array( $site_layout, array( 'boxed', 'boxed-separated' ), true ) ) { $background_color = sinatra_option( 'boxed_content_background_color' ); } else { $background_color = '#' . get_background_color(); } return $background_color; } /** * Check if a section is disabled. * * @since 1.1.0 * * @param array $disabled_on Array of pages where the section is disabled. * @param int $post_id Current page ID. * @return bool Section is displayed. */ function sinatra_is_section_disabled( $disabled_on = array(), $post_id = 0 ) { $disabled = false; if ( is_front_page() && in_array( 'home', $disabled_on, true ) ) { $disabled = true; } elseif ( is_home() && in_array( 'posts_page', $disabled_on, true ) ) { $disabled = true; } elseif ( is_search() && in_array( 'search', $disabled_on, true ) ) { $disabled = true; } elseif ( is_archive() && in_array( 'archive', $disabled_on, true ) ) { $disabled = true; } elseif ( is_404() && in_array( '404', $disabled_on, true ) ) { $disabled = true; } elseif ( ( is_singular() || ! empty( $post_id ) ) && ! is_front_page() ) { if ( empty( $post_id ) ) { $post_id = sinatra_get_the_id(); } if ( in_array( get_post_type( $post_id ), $disabled_on, true ) ) { $disabled = true; } } return $disabled; } /** * Get all the registered image sizes along with their dimensions. * * @since 1.1.0 * @return array $image_sizes The image sizes */ function sinatra_get_image_sizes() { global $_wp_additional_image_sizes; $default_image_sizes = get_intermediate_image_sizes(); foreach ( $default_image_sizes as $size ) { $image_sizes[ $size ]['width'] = intval( get_option( "{$size}_size_w" ) ); $image_sizes[ $size ]['height'] = intval( get_option( "{$size}_size_h" ) ); $image_sizes[ $size ]['crop'] = get_option( "{$size}_crop" ) ? get_option( "{$size}_crop" ) : false; } if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) ) { $image_sizes = array_merge( $image_sizes, $_wp_additional_image_sizes ); } $image_sizes['full'] = array( 'width' => '', 'height' => '', 'crop' => '', ); return $image_sizes; } if ( ! function_exists( 'sinatra_display_notices' ) ) : /** * Display notices. */ function sinatra_display_notices() { return defined( 'WP_DEBUG_LOG' ) && WP_DEBUG_LOG || defined( 'WP_DEBUG' ) && WP_DEBUG; } endif;
Save Changes
Rename File
Rename