diff --git a/wp-content/themes/twentyfifteen/footer.php b/wp-content/themes/twentyfifteen/footer.php index eddaaafa66afca4e9b0e155e7cd15a6d15527020..3ed6ab719b9886ef79874098444f9b523cf501a4 100644 --- a/wp-content/themes/twentyfifteen/footer.php +++ b/wp-content/themes/twentyfifteen/footer.php @@ -1,44 +1,39 @@ -<?php -/** - * The template for displaying the footer - * - * Contains the closing of the "site-content" div and all content after. - * - * @package WordPress - * @subpackage Twenty_Fifteen - * @since Twenty Fifteen 1.0 - */ -?> - - </div><!-- .site-content --> - - <footer id="colophon" class="site-footer" role="contentinfo"> - <div class="site-info"> - <?php - /** - * Fires before the Twenty Fifteen footer text for footer customization. - * - * @since Twenty Fifteen 1.0 - */ - do_action( 'twentyfifteen_credits' ); - ?> - <?php - if ( function_exists( 'the_privacy_policy_link' ) ) { - the_privacy_policy_link( '', '<span role="separator" aria-hidden="true"></span>' ); - } - ?> - <a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentyfifteen' ) ); ?>" class="imprint"> - <?php - /* translators: %s: WordPress */ - printf( __( 'Proudly powered by %s', 'twentyfifteen' ), 'WordPress' ); - ?> - </a> - </div><!-- .site-info --> - </footer><!-- .site-footer --> - -</div><!-- .site --> - -<?php wp_footer(); ?> - -</body> -</html> +<?php +/** + * The template for displaying the footer + * + * Contains the closing of the "site-content" div and all content after. + * + * @package WordPress + * @subpackage Twenty_Fifteen + * @since Twenty Fifteen 1.0 + */ +?> + + </div><!-- .site-content --> + + <footer id="colophon" class="site-footer" role="contentinfo"> + <div class="site-info"> + <?php + /** + * Fires before the Twenty Fifteen footer text for footer customization. + * + * @since Twenty Fifteen 1.0 + */ + do_action( 'twentyfifteen_credits' ); + ?> + <?php + if ( function_exists( 'the_privacy_policy_link' ) ) { + the_privacy_policy_link( '', '<span role="separator" aria-hidden="true"></span>' ); + } + ?> + <strong>Proudly powered by <a href="http://www.autistici.org">R*</a></strong> + </div><!-- .site-info --> + </footer><!-- .site-footer --> + +</div><!-- .site --> + +<?php wp_footer(); ?> + +</body> +</html> diff --git a/wp-content/themes/twentyfifteen/functions.php b/wp-content/themes/twentyfifteen/functions.php index 19f358a0c10a235dca868e609a9c212f0161a375..813b88e81045c062f1a0ed8d8514f792c3e2d515 100644 --- a/wp-content/themes/twentyfifteen/functions.php +++ b/wp-content/themes/twentyfifteen/functions.php @@ -286,11 +286,13 @@ if ( ! function_exists( 'twentyfifteen_fonts_url' ) ) : * * @return string Google fonts URL for the theme. */ + +/*AI fix google font*/ function twentyfifteen_fonts_url() { $fonts_url = ''; - $fonts = array(); + /*$fonts = array(); $subsets = 'latin,latin-ext'; - +*/ /* * translators: If there are characters in your language that are not supported * by Noto Sans, translate this to 'off'. Do not translate into your own language. @@ -319,15 +321,15 @@ if ( ! function_exists( 'twentyfifteen_fonts_url' ) ) : * translators: To add an additional character subset specific to your language, * translate this to 'greek', 'cyrillic', 'devanagari' or 'vietnamese'. Do not translate into your own language. */ - $subset = _x( 'no-subset', 'Add new subset (greek, cyrillic, devanagari, vietnamese)', 'twentyfifteen' ); + /*$subset = _x( 'no-subset', 'Add new subset (greek, cyrillic, devanagari, vietnamese)', 'twentyfifteen' ); - if ( 'cyrillic' === $subset ) { + if ( 'cyrillic' == $subset ) { $subsets .= ',cyrillic,cyrillic-ext'; - } elseif ( 'greek' === $subset ) { + } elseif ( 'greek' == $subset ) { $subsets .= ',greek,greek-ext'; - } elseif ( 'devanagari' === $subset ) { + } elseif ( 'devanagari' == $subset ) { $subsets .= ',devanagari'; - } elseif ( 'vietnamese' === $subset ) { + } elseif ( 'vietnamese' == $subset ) { $subsets .= ',vietnamese'; } @@ -338,9 +340,9 @@ if ( ! function_exists( 'twentyfifteen_fonts_url' ) ) : 'subset' => urlencode( $subsets ), 'display' => urlencode( 'fallback' ), ), - 'https://fonts.googleapis.com/css' + '' ); - } + }*/ return $fonts_url; } @@ -429,7 +431,8 @@ add_action( 'enqueue_block_editor_assets', 'twentyfifteen_block_editor_styles' ) * @param string $relation_type The relation type the URLs are printed. * @return array URLs to print for resource hints. */ -function twentyfifteen_resource_hints( $urls, $relation_type ) { +/* AI fix - google fonts*/ +/*function twentyfifteen_resource_hints( $urls, $relation_type ) { if ( wp_style_is( 'twentyfifteen-fonts', 'queue' ) && 'preconnect' === $relation_type ) { if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '>=' ) ) { $urls[] = array( @@ -444,7 +447,7 @@ function twentyfifteen_resource_hints( $urls, $relation_type ) { return $urls; } add_filter( 'wp_resource_hints', 'twentyfifteen_resource_hints', 10, 2 ); - +*/ /** * Add featured image as background image to post navigation elements. * diff --git a/wp-content/themes/twentyfourteen/footer.php b/wp-content/themes/twentyfourteen/footer.php index 57920c265ae26fe6a8f8895fd4f642aae1f0b211..51bd4833dda39358e172069e1c817c93facbc8e6 100644 --- a/wp-content/themes/twentyfourteen/footer.php +++ b/wp-content/themes/twentyfourteen/footer.php @@ -1,38 +1,33 @@ -<?php -/** - * The template for displaying the footer - * - * Contains footer content and the closing of the #main and #page div elements. - * - * @package WordPress - * @subpackage Twenty_Fourteen - * @since Twenty Fourteen 1.0 - */ -?> - - </div><!-- #main --> - - <footer id="colophon" class="site-footer" role="contentinfo"> - - <?php get_sidebar( 'footer' ); ?> - - <div class="site-info"> - <?php do_action( 'twentyfourteen_credits' ); ?> - <?php - if ( function_exists( 'the_privacy_policy_link' ) ) { - the_privacy_policy_link( '', '<span role="separator" aria-hidden="true"></span>' ); - } - ?> - <a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentyfourteen' ) ); ?>" class="imprint"> - <?php - /* translators: %s: WordPress */ - printf( __( 'Proudly powered by %s', 'twentyfourteen' ), 'WordPress' ); - ?> - </a> - </div><!-- .site-info --> - </footer><!-- #colophon --> - </div><!-- #page --> - - <?php wp_footer(); ?> -</body> -</html> +<?php +/** + * The template for displaying the footer + * + * Contains footer content and the closing of the #main and #page div elements. + * + * @package WordPress + * @subpackage Twenty_Fourteen + * @since Twenty Fourteen 1.0 + */ +?> + + </div><!-- #main --> + + <footer id="colophon" class="site-footer" role="contentinfo"> + + <?php get_sidebar( 'footer' ); ?> + + <div class="site-info"> + <?php do_action( 'twentyfourteen_credits' ); ?> + <?php + if ( function_exists( 'the_privacy_policy_link' ) ) { + the_privacy_policy_link( '', '<span role="separator" aria-hidden="true"></span>' ); + } + ?> + <strong>Proudly powered by <a href="http://www.autistici.org">R*</a></strong> + </div><!-- .site-info --> + </footer><!-- #colophon --> + </div><!-- #page --> + + <?php wp_footer(); ?> +</body> +</html> diff --git a/wp-content/themes/twentyfourteen/functions.php b/wp-content/themes/twentyfourteen/functions.php index f918f2779fff5255fef20dc78094245030e8a8fd..6abf15e000808d3752c7c6e6931d338bd14b1124 100644 --- a/wp-content/themes/twentyfourteen/functions.php +++ b/wp-content/themes/twentyfourteen/functions.php @@ -306,14 +306,16 @@ function twentyfourteen_font_url() { * translators: If there are characters in your language that are not supported * by Lato, translate this to 'off'. Do not translate into your own language. */ - if ( 'off' !== _x( 'on', 'Lato font: on or off', 'twentyfourteen' ) ) { +/* AI fix - remove google font */ + + /*if ( 'off' !== _x( 'on', 'Lato font: on or off', 'twentyfourteen' ) ) { $query_args = array( 'family' => urlencode( 'Lato:300,400,700,900,300italic,400italic,700italic' ), 'subset' => urlencode( 'latin,latin-ext' ), 'display' => urlencode( 'fallback' ), ); $font_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' ); - } + }*/ return $font_url; } @@ -387,7 +389,8 @@ add_action( 'admin_print_scripts-appearance_page_custom-header', 'twentyfourteen * @param string $relation_type The relation type the URLs are printed. * @return array URLs to print for resource hints. */ -function twentyfourteen_resource_hints( $urls, $relation_type ) { +/* AI fix - google font */ +/*function twentyfourteen_resource_hints( $urls, $relation_type ) { if ( wp_style_is( 'twentyfourteen-lato', 'queue' ) && 'preconnect' === $relation_type ) { if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '>=' ) ) { $urls[] = array( @@ -402,7 +405,7 @@ function twentyfourteen_resource_hints( $urls, $relation_type ) { return $urls; } add_filter( 'wp_resource_hints', 'twentyfourteen_resource_hints', 10, 2 ); - +*/ /** * Enqueue styles for the block-based editor. * diff --git a/wp-content/themes/twentyseventeen/functions.php b/wp-content/themes/twentyseventeen/functions.php index 4bc4640f63973ead8b18902c9e71eb00339351a9..9e4e377bf5707b46d1ec36ed4aefa8f2c3e2b8c8 100644 --- a/wp-content/themes/twentyseventeen/functions.php +++ b/wp-content/themes/twentyseventeen/functions.php @@ -1,676 +1,677 @@ -<?php -/** - * Twenty Seventeen functions and definitions - * - * @link https://developer.wordpress.org/themes/basics/theme-functions/ - * - * @package WordPress - * @subpackage Twenty_Seventeen - * @since Twenty Seventeen 1.0 - */ - -/** - * Twenty Seventeen only works in WordPress 4.7 or later. - */ -if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '<' ) ) { - require get_template_directory() . '/inc/back-compat.php'; - return; -} - -/** - * Sets up theme defaults and registers support for various WordPress features. - * - * Note that this function is hooked into the after_setup_theme hook, which - * runs before the init hook. The init hook is too late for some features, such - * as indicating support for post thumbnails. - */ -function twentyseventeen_setup() { - /* - * Make theme available for translation. - * Translations can be filed at WordPress.org. See: https://translate.wordpress.org/projects/wp-themes/twentyseventeen - * If you're building a theme based on Twenty Seventeen, use a find and replace - * to change 'twentyseventeen' to the name of your theme in all the template files. - */ - load_theme_textdomain( 'twentyseventeen' ); - - // Add default posts and comments RSS feed links to head. - add_theme_support( 'automatic-feed-links' ); - - /* - * Let WordPress manage the document title. - * By adding theme support, we declare that this theme does not use a - * hard-coded <title> tag in the document head, and expect WordPress to - * provide it for us. - */ - add_theme_support( 'title-tag' ); - - /* - * Enables custom line height for blocks - */ - add_theme_support( 'custom-line-height' ); - - /* - * Enable support for Post Thumbnails on posts and pages. - * - * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/ - */ - add_theme_support( 'post-thumbnails' ); - - add_image_size( 'twentyseventeen-featured-image', 2000, 1200, true ); - - add_image_size( 'twentyseventeen-thumbnail-avatar', 100, 100, true ); - - // Set the default content width. - $GLOBALS['content_width'] = 525; - - // This theme uses wp_nav_menu() in two locations. - register_nav_menus( - array( - 'top' => __( 'Top Menu', 'twentyseventeen' ), - 'social' => __( 'Social Links Menu', 'twentyseventeen' ), - ) - ); - - /* - * Switch default core markup for search form, comment form, and comments - * to output valid HTML5. - */ - add_theme_support( - 'html5', - array( - 'comment-form', - 'comment-list', - 'gallery', - 'caption', - 'script', - 'style', - 'navigation-widgets', - ) - ); - - /* - * Enable support for Post Formats. - * - * See: https://wordpress.org/support/article/post-formats/ - */ - add_theme_support( - 'post-formats', - array( - 'aside', - 'image', - 'video', - 'quote', - 'link', - 'gallery', - 'audio', - ) - ); - - // Add theme support for Custom Logo. - add_theme_support( - 'custom-logo', - array( - 'width' => 250, - 'height' => 250, - 'flex-width' => true, - ) - ); - - // Add theme support for selective refresh for widgets. - add_theme_support( 'customize-selective-refresh-widgets' ); - - /* - * This theme styles the visual editor to resemble the theme style, - * specifically font, colors, and column width. - */ - add_editor_style( array( 'assets/css/editor-style.css', twentyseventeen_fonts_url() ) ); - - // Load regular editor styles into the new block-based editor. - add_theme_support( 'editor-styles' ); - - // Load default block styles. - add_theme_support( 'wp-block-styles' ); - - // Add support for responsive embeds. - add_theme_support( 'responsive-embeds' ); - - // Define and register starter content to showcase the theme on new sites. - $starter_content = array( - 'widgets' => array( - // Place three core-defined widgets in the sidebar area. - 'sidebar-1' => array( - 'text_business_info', - 'search', - 'text_about', - ), - - // Add the core-defined business info widget to the footer 1 area. - 'sidebar-2' => array( - 'text_business_info', - ), - - // Put two core-defined widgets in the footer 2 area. - 'sidebar-3' => array( - 'text_about', - 'search', - ), - ), - - // Specify the core-defined pages to create and add custom thumbnails to some of them. - 'posts' => array( - 'home', - 'about' => array( - 'thumbnail' => '{{image-sandwich}}', - ), - 'contact' => array( - 'thumbnail' => '{{image-espresso}}', - ), - 'blog' => array( - 'thumbnail' => '{{image-coffee}}', - ), - 'homepage-section' => array( - 'thumbnail' => '{{image-espresso}}', - ), - ), - - // Create the custom image attachments used as post thumbnails for pages. - 'attachments' => array( - 'image-espresso' => array( - 'post_title' => _x( 'Espresso', 'Theme starter content', 'twentyseventeen' ), - 'file' => 'assets/images/espresso.jpg', // URL relative to the template directory. - ), - 'image-sandwich' => array( - 'post_title' => _x( 'Sandwich', 'Theme starter content', 'twentyseventeen' ), - 'file' => 'assets/images/sandwich.jpg', - ), - 'image-coffee' => array( - 'post_title' => _x( 'Coffee', 'Theme starter content', 'twentyseventeen' ), - 'file' => 'assets/images/coffee.jpg', - ), - ), - - // Default to a static front page and assign the front and posts pages. - 'options' => array( - 'show_on_front' => 'page', - 'page_on_front' => '{{home}}', - 'page_for_posts' => '{{blog}}', - ), - - // Set the front page section theme mods to the IDs of the core-registered pages. - 'theme_mods' => array( - 'panel_1' => '{{homepage-section}}', - 'panel_2' => '{{about}}', - 'panel_3' => '{{blog}}', - 'panel_4' => '{{contact}}', - ), - - // Set up nav menus for each of the two areas registered in the theme. - 'nav_menus' => array( - // Assign a menu to the "top" location. - 'top' => array( - 'name' => __( 'Top Menu', 'twentyseventeen' ), - 'items' => array( - 'link_home', // Note that the core "home" page is actually a link in case a static front page is not used. - 'page_about', - 'page_blog', - 'page_contact', - ), - ), - - // Assign a menu to the "social" location. - 'social' => array( - 'name' => __( 'Social Links Menu', 'twentyseventeen' ), - 'items' => array( - 'link_yelp', - 'link_facebook', - 'link_twitter', - 'link_instagram', - 'link_email', - ), - ), - ), - ); - - /** - * Filters Twenty Seventeen array of starter content. - * - * @since Twenty Seventeen 1.1 - * - * @param array $starter_content Array of starter content. - */ - $starter_content = apply_filters( 'twentyseventeen_starter_content', $starter_content ); - - add_theme_support( 'starter-content', $starter_content ); -} -add_action( 'after_setup_theme', 'twentyseventeen_setup' ); - -/** - * Set the content width in pixels, based on the theme's design and stylesheet. - * - * Priority 0 to make it available to lower priority callbacks. - * - * @global int $content_width - */ -function twentyseventeen_content_width() { - - $content_width = $GLOBALS['content_width']; - - // Get layout. - $page_layout = get_theme_mod( 'page_layout' ); - - // Check if layout is one column. - if ( 'one-column' === $page_layout ) { - if ( twentyseventeen_is_frontpage() ) { - $content_width = 644; - } elseif ( is_page() ) { - $content_width = 740; - } - } - - // Check if is single post and there is no sidebar. - if ( is_single() && ! is_active_sidebar( 'sidebar-1' ) ) { - $content_width = 740; - } - - /** - * Filters Twenty Seventeen content width of the theme. - * - * @since Twenty Seventeen 1.0 - * - * @param int $content_width Content width in pixels. - */ - $GLOBALS['content_width'] = apply_filters( 'twentyseventeen_content_width', $content_width ); -} -add_action( 'template_redirect', 'twentyseventeen_content_width', 0 ); - -/** - * Register custom fonts. - */ -function twentyseventeen_fonts_url() { - $fonts_url = ''; - - /* - * translators: If there are characters in your language that are not supported - * by Libre Franklin, translate this to 'off'. Do not translate into your own language. - */ - $libre_franklin = _x( 'on', 'Libre Franklin font: on or off', 'twentyseventeen' ); - - if ( 'off' !== $libre_franklin ) { - $font_families = array(); - - $font_families[] = 'Libre Franklin:300,300i,400,400i,600,600i,800,800i'; - - $query_args = array( - 'family' => urlencode( implode( '|', $font_families ) ), - 'subset' => urlencode( 'latin,latin-ext' ), - 'display' => urlencode( 'fallback' ), - ); - - $fonts_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' ); - } - - return esc_url_raw( $fonts_url ); -} - -/** - * Add preconnect for Google Fonts. - * - * @since Twenty Seventeen 1.0 - * - * @param array $urls URLs to print for resource hints. - * @param string $relation_type The relation type the URLs are printed. - * @return array URLs to print for resource hints. - */ -function twentyseventeen_resource_hints( $urls, $relation_type ) { - if ( wp_style_is( 'twentyseventeen-fonts', 'queue' ) && 'preconnect' === $relation_type ) { - $urls[] = array( - 'href' => 'https://fonts.gstatic.com', - 'crossorigin', - ); - } - - return $urls; -} -add_filter( 'wp_resource_hints', 'twentyseventeen_resource_hints', 10, 2 ); - -/** - * Register widget area. - * - * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar - */ -function twentyseventeen_widgets_init() { - register_sidebar( - array( - 'name' => __( 'Blog Sidebar', 'twentyseventeen' ), - 'id' => 'sidebar-1', - 'description' => __( 'Add widgets here to appear in your sidebar on blog posts and archive pages.', 'twentyseventeen' ), - 'before_widget' => '<section id="%1$s" class="widget %2$s">', - 'after_widget' => '</section>', - 'before_title' => '<h2 class="widget-title">', - 'after_title' => '</h2>', - ) - ); - - register_sidebar( - array( - 'name' => __( 'Footer 1', 'twentyseventeen' ), - 'id' => 'sidebar-2', - 'description' => __( 'Add widgets here to appear in your footer.', 'twentyseventeen' ), - 'before_widget' => '<section id="%1$s" class="widget %2$s">', - 'after_widget' => '</section>', - 'before_title' => '<h2 class="widget-title">', - 'after_title' => '</h2>', - ) - ); - - register_sidebar( - array( - 'name' => __( 'Footer 2', 'twentyseventeen' ), - 'id' => 'sidebar-3', - 'description' => __( 'Add widgets here to appear in your footer.', 'twentyseventeen' ), - 'before_widget' => '<section id="%1$s" class="widget %2$s">', - 'after_widget' => '</section>', - 'before_title' => '<h2 class="widget-title">', - 'after_title' => '</h2>', - ) - ); -} -add_action( 'widgets_init', 'twentyseventeen_widgets_init' ); - -/** - * Replaces "[...]" (appended to automatically generated excerpts) with ... and - * a 'Continue reading' link. - * - * @since Twenty Seventeen 1.0 - * - * @param string $link Link to single post/page. - * @return string 'Continue reading' link prepended with an ellipsis. - */ -function twentyseventeen_excerpt_more( $link ) { - if ( is_admin() ) { - return $link; - } - - $link = sprintf( - '<p class="link-more"><a href="%1$s" class="more-link">%2$s</a></p>', - esc_url( get_permalink( get_the_ID() ) ), - /* translators: %s: Post title. */ - sprintf( __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ), get_the_title( get_the_ID() ) ) - ); - return ' … ' . $link; -} -add_filter( 'excerpt_more', 'twentyseventeen_excerpt_more' ); - -/** - * Handles JavaScript detection. - * - * Adds a `js` class to the root `<html>` element when JavaScript is detected. - * - * @since Twenty Seventeen 1.0 - */ -function twentyseventeen_javascript_detection() { - echo "<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>\n"; -} -add_action( 'wp_head', 'twentyseventeen_javascript_detection', 0 ); - -/** - * Add a pingback url auto-discovery header for singularly identifiable articles. - */ -function twentyseventeen_pingback_header() { - if ( is_singular() && pings_open() ) { - printf( '<link rel="pingback" href="%s">' . "\n", esc_url( get_bloginfo( 'pingback_url' ) ) ); - } -} -add_action( 'wp_head', 'twentyseventeen_pingback_header' ); - -/** - * Display custom color CSS. - */ -function twentyseventeen_colors_css_wrap() { - if ( 'custom' !== get_theme_mod( 'colorscheme' ) && ! is_customize_preview() ) { - return; - } - - require_once get_parent_theme_file_path( '/inc/color-patterns.php' ); - $hue = absint( get_theme_mod( 'colorscheme_hue', 250 ) ); - - $customize_preview_data_hue = ''; - if ( is_customize_preview() ) { - $customize_preview_data_hue = 'data-hue="' . $hue . '"'; - } - ?> - <style type="text/css" id="custom-theme-colors" <?php echo $customize_preview_data_hue; ?>> - <?php echo twentyseventeen_custom_colors_css(); ?> - </style> - <?php -} -add_action( 'wp_head', 'twentyseventeen_colors_css_wrap' ); - -/** - * Enqueues scripts and styles. - */ -function twentyseventeen_scripts() { - // Add custom fonts, used in the main stylesheet. - wp_enqueue_style( 'twentyseventeen-fonts', twentyseventeen_fonts_url(), array(), null ); - - // Theme stylesheet. - wp_enqueue_style( 'twentyseventeen-style', get_stylesheet_uri(), array(), '20201208' ); - - // Theme block stylesheet. - wp_enqueue_style( 'twentyseventeen-block-style', get_theme_file_uri( '/assets/css/blocks.css' ), array( 'twentyseventeen-style' ), '20190105' ); - - // Load the dark colorscheme. - if ( 'dark' === get_theme_mod( 'colorscheme', 'light' ) || is_customize_preview() ) { - wp_enqueue_style( 'twentyseventeen-colors-dark', get_theme_file_uri( '/assets/css/colors-dark.css' ), array( 'twentyseventeen-style' ), '20190408' ); - } - - // Load the Internet Explorer 9 specific stylesheet, to fix display issues in the Customizer. - if ( is_customize_preview() ) { - wp_enqueue_style( 'twentyseventeen-ie9', get_theme_file_uri( '/assets/css/ie9.css' ), array( 'twentyseventeen-style' ), '20161202' ); - wp_style_add_data( 'twentyseventeen-ie9', 'conditional', 'IE 9' ); - } - - // Load the Internet Explorer 8 specific stylesheet. - wp_enqueue_style( 'twentyseventeen-ie8', get_theme_file_uri( '/assets/css/ie8.css' ), array( 'twentyseventeen-style' ), '20161202' ); - wp_style_add_data( 'twentyseventeen-ie8', 'conditional', 'lt IE 9' ); - - // Load the html5 shiv. - wp_enqueue_script( 'html5', get_theme_file_uri( '/assets/js/html5.js' ), array(), '20161020' ); - wp_script_add_data( 'html5', 'conditional', 'lt IE 9' ); - - wp_enqueue_script( 'twentyseventeen-skip-link-focus-fix', get_theme_file_uri( '/assets/js/skip-link-focus-fix.js' ), array(), '20161114', true ); - - $twentyseventeen_l10n = array( - 'quote' => twentyseventeen_get_svg( array( 'icon' => 'quote-right' ) ), - ); - - if ( has_nav_menu( 'top' ) ) { - wp_enqueue_script( 'twentyseventeen-navigation', get_theme_file_uri( '/assets/js/navigation.js' ), array( 'jquery' ), '20161203', true ); - $twentyseventeen_l10n['expand'] = __( 'Expand child menu', 'twentyseventeen' ); - $twentyseventeen_l10n['collapse'] = __( 'Collapse child menu', 'twentyseventeen' ); - $twentyseventeen_l10n['icon'] = twentyseventeen_get_svg( - array( - 'icon' => 'angle-down', - 'fallback' => true, - ) - ); - } - - wp_enqueue_script( 'twentyseventeen-global', get_theme_file_uri( '/assets/js/global.js' ), array( 'jquery' ), '20190121', true ); - - wp_enqueue_script( 'jquery-scrollto', get_theme_file_uri( '/assets/js/jquery.scrollTo.js' ), array( 'jquery' ), '2.1.2', true ); - - wp_localize_script( 'twentyseventeen-skip-link-focus-fix', 'twentyseventeenScreenReaderText', $twentyseventeen_l10n ); - - if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { - wp_enqueue_script( 'comment-reply' ); - } -} -add_action( 'wp_enqueue_scripts', 'twentyseventeen_scripts' ); - -/** - * Enqueues styles for the block-based editor. - * - * @since Twenty Seventeen 1.8 - */ -function twentyseventeen_block_editor_styles() { - // Block styles. - wp_enqueue_style( 'twentyseventeen-block-editor-style', get_theme_file_uri( '/assets/css/editor-blocks.css' ), array(), '20201208' ); - // Add custom fonts. - wp_enqueue_style( 'twentyseventeen-fonts', twentyseventeen_fonts_url(), array(), null ); -} -add_action( 'enqueue_block_editor_assets', 'twentyseventeen_block_editor_styles' ); - -/** - * Add custom image sizes attribute to enhance responsive image functionality - * for content images. - * - * @since Twenty Seventeen 1.0 - * - * @param string $sizes A source size value for use in a 'sizes' attribute. - * @param array $size Image size. Accepts an array of width and height - * values in pixels (in that order). - * @return string A source size value for use in a content image 'sizes' attribute. - */ -function twentyseventeen_content_image_sizes_attr( $sizes, $size ) { - $width = $size[0]; - - if ( 740 <= $width ) { - $sizes = '(max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px'; - } - - if ( is_active_sidebar( 'sidebar-1' ) || is_archive() || is_search() || is_home() || is_page() ) { - if ( ! ( is_page() && 'one-column' === get_theme_mod( 'page_options' ) ) && 767 <= $width ) { - $sizes = '(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px'; - } - } - - return $sizes; -} -add_filter( 'wp_calculate_image_sizes', 'twentyseventeen_content_image_sizes_attr', 10, 2 ); - -/** - * Filters the `sizes` value in the header image markup. - * - * @since Twenty Seventeen 1.0 - * - * @param string $html The HTML image tag markup being filtered. - * @param object $header The custom header object returned by 'get_custom_header()'. - * @param array $attr Array of the attributes for the image tag. - * @return string The filtered header image HTML. - */ -function twentyseventeen_header_image_tag( $html, $header, $attr ) { - if ( isset( $attr['sizes'] ) ) { - $html = str_replace( $attr['sizes'], '100vw', $html ); - } - return $html; -} -add_filter( 'get_header_image_tag', 'twentyseventeen_header_image_tag', 10, 3 ); - -/** - * Add custom image sizes attribute to enhance responsive image functionality - * for post thumbnails. - * - * @since Twenty Seventeen 1.0 - * - * @param array $attr Attributes for the image markup. - * @param int $attachment Image attachment ID. - * @param array $size Registered image size or flat array of height and width dimensions. - * @return array The filtered attributes for the image markup. - */ -function twentyseventeen_post_thumbnail_sizes_attr( $attr, $attachment, $size ) { - if ( is_archive() || is_search() || is_home() ) { - $attr['sizes'] = '(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px'; - } else { - $attr['sizes'] = '100vw'; - } - - return $attr; -} -add_filter( 'wp_get_attachment_image_attributes', 'twentyseventeen_post_thumbnail_sizes_attr', 10, 3 ); - -/** - * Use front-page.php when Front page displays is set to a static page. - * - * @since Twenty Seventeen 1.0 - * - * @param string $template front-page.php. - * @return string The template to be used: blank if is_home() is true (defaults to index.php), - * otherwise $template. - */ -function twentyseventeen_front_page_template( $template ) { - return is_home() ? '' : $template; -} -add_filter( 'frontpage_template', 'twentyseventeen_front_page_template' ); - -/** - * Modifies tag cloud widget arguments to display all tags in the same font size - * and use list format for better accessibility. - * - * @since Twenty Seventeen 1.4 - * - * @param array $args Arguments for tag cloud widget. - * @return array The filtered arguments for tag cloud widget. - */ -function twentyseventeen_widget_tag_cloud_args( $args ) { - $args['largest'] = 1; - $args['smallest'] = 1; - $args['unit'] = 'em'; - $args['format'] = 'list'; - - return $args; -} -add_filter( 'widget_tag_cloud_args', 'twentyseventeen_widget_tag_cloud_args' ); - -/** - * Gets unique ID. - * - * This is a PHP implementation of Underscore's uniqueId method. A static variable - * contains an integer that is incremented with each call. This number is returned - * with the optional prefix. As such the returned value is not universally unique, - * but it is unique across the life of the PHP process. - * - * @since Twenty Seventeen 2.0 - * - * @see wp_unique_id() Themes requiring WordPress 5.0.3 and greater should use this instead. - * - * @param string $prefix Prefix for the returned ID. - * @return string Unique ID. - */ -function twentyseventeen_unique_id( $prefix = '' ) { - static $id_counter = 0; - if ( function_exists( 'wp_unique_id' ) ) { - return wp_unique_id( $prefix ); - } - return $prefix . (string) ++$id_counter; -} - -/** - * Implement the Custom Header feature. - */ -require get_parent_theme_file_path( '/inc/custom-header.php' ); - -/** - * Custom template tags for this theme. - */ -require get_parent_theme_file_path( '/inc/template-tags.php' ); - -/** - * Additional features to allow styling of the templates. - */ -require get_parent_theme_file_path( '/inc/template-functions.php' ); - -/** - * Customizer additions. - */ -require get_parent_theme_file_path( '/inc/customizer.php' ); - -/** - * SVG icons functions and filters. - */ -require get_parent_theme_file_path( '/inc/icon-functions.php' ); - -/** - * Block Patterns. - */ -require get_template_directory() . '/inc/block-patterns.php'; +<?php +/** + * Twenty Seventeen functions and definitions + * + * @link https://developer.wordpress.org/themes/basics/theme-functions/ + * + * @package WordPress + * @subpackage Twenty_Seventeen + * @since Twenty Seventeen 1.0 + */ + +/** + * Twenty Seventeen only works in WordPress 4.7 or later. + */ +if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '<' ) ) { + require get_template_directory() . '/inc/back-compat.php'; + return; +} + +/** + * Sets up theme defaults and registers support for various WordPress features. + * + * Note that this function is hooked into the after_setup_theme hook, which + * runs before the init hook. The init hook is too late for some features, such + * as indicating support for post thumbnails. + */ +function twentyseventeen_setup() { + /* + * Make theme available for translation. + * Translations can be filed at WordPress.org. See: https://translate.wordpress.org/projects/wp-themes/twentyseventeen + * If you're building a theme based on Twenty Seventeen, use a find and replace + * to change 'twentyseventeen' to the name of your theme in all the template files. + */ + load_theme_textdomain( 'twentyseventeen' ); + + // Add default posts and comments RSS feed links to head. + add_theme_support( 'automatic-feed-links' ); + + /* + * Let WordPress manage the document title. + * By adding theme support, we declare that this theme does not use a + * hard-coded <title> tag in the document head, and expect WordPress to + * provide it for us. + */ + add_theme_support( 'title-tag' ); + + /* + * Enables custom line height for blocks + */ + add_theme_support( 'custom-line-height' ); + + /* + * Enable support for Post Thumbnails on posts and pages. + * + * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/ + */ + add_theme_support( 'post-thumbnails' ); + + add_image_size( 'twentyseventeen-featured-image', 2000, 1200, true ); + + add_image_size( 'twentyseventeen-thumbnail-avatar', 100, 100, true ); + + // Set the default content width. + $GLOBALS['content_width'] = 525; + + // This theme uses wp_nav_menu() in two locations. + register_nav_menus( + array( + 'top' => __( 'Top Menu', 'twentyseventeen' ), + 'social' => __( 'Social Links Menu', 'twentyseventeen' ), + ) + ); + + /* + * Switch default core markup for search form, comment form, and comments + * to output valid HTML5. + */ + add_theme_support( + 'html5', + array( + 'comment-form', + 'comment-list', + 'gallery', + 'caption', + 'script', + 'style', + 'navigation-widgets', + ) + ); + + /* + * Enable support for Post Formats. + * + * See: https://wordpress.org/support/article/post-formats/ + */ + add_theme_support( + 'post-formats', + array( + 'aside', + 'image', + 'video', + 'quote', + 'link', + 'gallery', + 'audio', + ) + ); + + // Add theme support for Custom Logo. + add_theme_support( + 'custom-logo', + array( + 'width' => 250, + 'height' => 250, + 'flex-width' => true, + ) + ); + + // Add theme support for selective refresh for widgets. + add_theme_support( 'customize-selective-refresh-widgets' ); + + /* + * This theme styles the visual editor to resemble the theme style, + * specifically font, colors, and column width. + */ + add_editor_style( array( 'assets/css/editor-style.css', twentyseventeen_fonts_url() ) ); + + // Load regular editor styles into the new block-based editor. + add_theme_support( 'editor-styles' ); + + // Load default block styles. + add_theme_support( 'wp-block-styles' ); + + // Add support for responsive embeds. + add_theme_support( 'responsive-embeds' ); + + // Define and register starter content to showcase the theme on new sites. + $starter_content = array( + 'widgets' => array( + // Place three core-defined widgets in the sidebar area. + 'sidebar-1' => array( + 'text_business_info', + 'search', + 'text_about', + ), + + // Add the core-defined business info widget to the footer 1 area. + 'sidebar-2' => array( + 'text_business_info', + ), + + // Put two core-defined widgets in the footer 2 area. + 'sidebar-3' => array( + 'text_about', + 'search', + ), + ), + + // Specify the core-defined pages to create and add custom thumbnails to some of them. + 'posts' => array( + 'home', + 'about' => array( + 'thumbnail' => '{{image-sandwich}}', + ), + 'contact' => array( + 'thumbnail' => '{{image-espresso}}', + ), + 'blog' => array( + 'thumbnail' => '{{image-coffee}}', + ), + 'homepage-section' => array( + 'thumbnail' => '{{image-espresso}}', + ), + ), + + // Create the custom image attachments used as post thumbnails for pages. + 'attachments' => array( + 'image-espresso' => array( + 'post_title' => _x( 'Espresso', 'Theme starter content', 'twentyseventeen' ), + 'file' => 'assets/images/espresso.jpg', // URL relative to the template directory. + ), + 'image-sandwich' => array( + 'post_title' => _x( 'Sandwich', 'Theme starter content', 'twentyseventeen' ), + 'file' => 'assets/images/sandwich.jpg', + ), + 'image-coffee' => array( + 'post_title' => _x( 'Coffee', 'Theme starter content', 'twentyseventeen' ), + 'file' => 'assets/images/coffee.jpg', + ), + ), + + // Default to a static front page and assign the front and posts pages. + 'options' => array( + 'show_on_front' => 'page', + 'page_on_front' => '{{home}}', + 'page_for_posts' => '{{blog}}', + ), + + // Set the front page section theme mods to the IDs of the core-registered pages. + 'theme_mods' => array( + 'panel_1' => '{{homepage-section}}', + 'panel_2' => '{{about}}', + 'panel_3' => '{{blog}}', + 'panel_4' => '{{contact}}', + ), + + // Set up nav menus for each of the two areas registered in the theme. + 'nav_menus' => array( + // Assign a menu to the "top" location. + 'top' => array( + 'name' => __( 'Top Menu', 'twentyseventeen' ), + 'items' => array( + 'link_home', // Note that the core "home" page is actually a link in case a static front page is not used. + 'page_about', + 'page_blog', + 'page_contact', + ), + ), + + // Assign a menu to the "social" location. + 'social' => array( + 'name' => __( 'Social Links Menu', 'twentyseventeen' ), + 'items' => array( + 'link_yelp', + 'link_facebook', + 'link_twitter', + 'link_instagram', + 'link_email', + ), + ), + ), + ); + + /** + * Filters Twenty Seventeen array of starter content. + * + * @since Twenty Seventeen 1.1 + * + * @param array $starter_content Array of starter content. + */ + $starter_content = apply_filters( 'twentyseventeen_starter_content', $starter_content ); + + add_theme_support( 'starter-content', $starter_content ); +} +add_action( 'after_setup_theme', 'twentyseventeen_setup' ); + +/** + * Set the content width in pixels, based on the theme's design and stylesheet. + * + * Priority 0 to make it available to lower priority callbacks. + * + * @global int $content_width + */ +function twentyseventeen_content_width() { + + $content_width = $GLOBALS['content_width']; + + // Get layout. + $page_layout = get_theme_mod( 'page_layout' ); + + // Check if layout is one column. + if ( 'one-column' === $page_layout ) { + if ( twentyseventeen_is_frontpage() ) { + $content_width = 644; + } elseif ( is_page() ) { + $content_width = 740; + } + } + + // Check if is single post and there is no sidebar. + if ( is_single() && ! is_active_sidebar( 'sidebar-1' ) ) { + $content_width = 740; + } + + /** + * Filters Twenty Seventeen content width of the theme. + * + * @since Twenty Seventeen 1.0 + * + * @param int $content_width Content width in pixels. + */ + $GLOBALS['content_width'] = apply_filters( 'twentyseventeen_content_width', $content_width ); +} +add_action( 'template_redirect', 'twentyseventeen_content_width', 0 ); + +/** + * Register custom fonts. + */ +function twentyseventeen_fonts_url() { + $fonts_url = ''; + + /* + * translators: If there are characters in your language that are not supported + * by Libre Franklin, translate this to 'off'. Do not translate into your own language. + */ + $libre_franklin = _x( 'on', 'Libre Franklin font: on or off', 'twentyseventeen' ); + + if ( 'off' !== $libre_franklin ) { + $font_families = array(); + + $font_families[] = 'Libre Franklin:300,300i,400,400i,600,600i,800,800i'; + + $query_args = array( + 'family' => urlencode( implode( '|', $font_families ) ), + 'subset' => urlencode( 'latin,latin-ext' ), + 'display' => urlencode( 'fallback' ), + ); + // A/I removed google fonts + $fonts_url = add_query_arg( $query_args, '' ); + } + + return esc_url_raw( $fonts_url ); +} + +/** + * Add preconnect for Google Fonts. + * + * @since Twenty Seventeen 1.0 + * + * @param array $urls URLs to print for resource hints. + * @param string $relation_type The relation type the URLs are printed. + * @return array URLs to print for resource hints. + */ +function twentyseventeen_resource_hints( $urls, $relation_type ) { + if ( wp_style_is( 'twentyseventeen-fonts', 'queue' ) && 'preconnect' === $relation_type ) { + $urls[] = array( + // A/I removed google Fonts + 'href' => '', + 'crossorigin', + ); + } + + return $urls; +} +add_filter( 'wp_resource_hints', 'twentyseventeen_resource_hints', 10, 2 ); + +/** + * Register widget area. + * + * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar + */ +function twentyseventeen_widgets_init() { + register_sidebar( + array( + 'name' => __( 'Blog Sidebar', 'twentyseventeen' ), + 'id' => 'sidebar-1', + 'description' => __( 'Add widgets here to appear in your sidebar on blog posts and archive pages.', 'twentyseventeen' ), + 'before_widget' => '<section id="%1$s" class="widget %2$s">', + 'after_widget' => '</section>', + 'before_title' => '<h2 class="widget-title">', + 'after_title' => '</h2>', + ) + ); + + register_sidebar( + array( + 'name' => __( 'Footer 1', 'twentyseventeen' ), + 'id' => 'sidebar-2', + 'description' => __( 'Add widgets here to appear in your footer.', 'twentyseventeen' ), + 'before_widget' => '<section id="%1$s" class="widget %2$s">', + 'after_widget' => '</section>', + 'before_title' => '<h2 class="widget-title">', + 'after_title' => '</h2>', + ) + ); + + register_sidebar( + array( + 'name' => __( 'Footer 2', 'twentyseventeen' ), + 'id' => 'sidebar-3', + 'description' => __( 'Add widgets here to appear in your footer.', 'twentyseventeen' ), + 'before_widget' => '<section id="%1$s" class="widget %2$s">', + 'after_widget' => '</section>', + 'before_title' => '<h2 class="widget-title">', + 'after_title' => '</h2>', + ) + ); +} +add_action( 'widgets_init', 'twentyseventeen_widgets_init' ); + +/** + * Replaces "[...]" (appended to automatically generated excerpts) with ... and + * a 'Continue reading' link. + * + * @since Twenty Seventeen 1.0 + * + * @param string $link Link to single post/page. + * @return string 'Continue reading' link prepended with an ellipsis. + */ +function twentyseventeen_excerpt_more( $link ) { + if ( is_admin() ) { + return $link; + } + + $link = sprintf( + '<p class="link-more"><a href="%1$s" class="more-link">%2$s</a></p>', + esc_url( get_permalink( get_the_ID() ) ), + /* translators: %s: Post title. */ + sprintf( __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentyseventeen' ), get_the_title( get_the_ID() ) ) + ); + return ' … ' . $link; +} +add_filter( 'excerpt_more', 'twentyseventeen_excerpt_more' ); + +/** + * Handles JavaScript detection. + * + * Adds a `js` class to the root `<html>` element when JavaScript is detected. + * + * @since Twenty Seventeen 1.0 + */ +function twentyseventeen_javascript_detection() { + echo "<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>\n"; +} +add_action( 'wp_head', 'twentyseventeen_javascript_detection', 0 ); + +/** + * Add a pingback url auto-discovery header for singularly identifiable articles. + */ +function twentyseventeen_pingback_header() { + if ( is_singular() && pings_open() ) { + printf( '<link rel="pingback" href="%s">' . "\n", esc_url( get_bloginfo( 'pingback_url' ) ) ); + } +} +add_action( 'wp_head', 'twentyseventeen_pingback_header' ); + +/** + * Display custom color CSS. + */ +function twentyseventeen_colors_css_wrap() { + if ( 'custom' !== get_theme_mod( 'colorscheme' ) && ! is_customize_preview() ) { + return; + } + + require_once get_parent_theme_file_path( '/inc/color-patterns.php' ); + $hue = absint( get_theme_mod( 'colorscheme_hue', 250 ) ); + + $customize_preview_data_hue = ''; + if ( is_customize_preview() ) { + $customize_preview_data_hue = 'data-hue="' . $hue . '"'; + } + ?> + <style type="text/css" id="custom-theme-colors" <?php echo $customize_preview_data_hue; ?>> + <?php echo twentyseventeen_custom_colors_css(); ?> + </style> + <?php +} +add_action( 'wp_head', 'twentyseventeen_colors_css_wrap' ); + +/** + * Enqueues scripts and styles. + */ +function twentyseventeen_scripts() { + // Add custom fonts, used in the main stylesheet. + wp_enqueue_style( 'twentyseventeen-fonts', twentyseventeen_fonts_url(), array(), null ); + + // Theme stylesheet. + wp_enqueue_style( 'twentyseventeen-style', get_stylesheet_uri(), array(), '20201208' ); + + // Theme block stylesheet. + wp_enqueue_style( 'twentyseventeen-block-style', get_theme_file_uri( '/assets/css/blocks.css' ), array( 'twentyseventeen-style' ), '20190105' ); + + // Load the dark colorscheme. + if ( 'dark' === get_theme_mod( 'colorscheme', 'light' ) || is_customize_preview() ) { + wp_enqueue_style( 'twentyseventeen-colors-dark', get_theme_file_uri( '/assets/css/colors-dark.css' ), array( 'twentyseventeen-style' ), '20190408' ); + } + + // Load the Internet Explorer 9 specific stylesheet, to fix display issues in the Customizer. + if ( is_customize_preview() ) { + wp_enqueue_style( 'twentyseventeen-ie9', get_theme_file_uri( '/assets/css/ie9.css' ), array( 'twentyseventeen-style' ), '20161202' ); + wp_style_add_data( 'twentyseventeen-ie9', 'conditional', 'IE 9' ); + } + + // Load the Internet Explorer 8 specific stylesheet. + wp_enqueue_style( 'twentyseventeen-ie8', get_theme_file_uri( '/assets/css/ie8.css' ), array( 'twentyseventeen-style' ), '20161202' ); + wp_style_add_data( 'twentyseventeen-ie8', 'conditional', 'lt IE 9' ); + + // Load the html5 shiv. + wp_enqueue_script( 'html5', get_theme_file_uri( '/assets/js/html5.js' ), array(), '20161020' ); + wp_script_add_data( 'html5', 'conditional', 'lt IE 9' ); + + wp_enqueue_script( 'twentyseventeen-skip-link-focus-fix', get_theme_file_uri( '/assets/js/skip-link-focus-fix.js' ), array(), '20161114', true ); + + $twentyseventeen_l10n = array( + 'quote' => twentyseventeen_get_svg( array( 'icon' => 'quote-right' ) ), + ); + + if ( has_nav_menu( 'top' ) ) { + wp_enqueue_script( 'twentyseventeen-navigation', get_theme_file_uri( '/assets/js/navigation.js' ), array( 'jquery' ), '20161203', true ); + $twentyseventeen_l10n['expand'] = __( 'Expand child menu', 'twentyseventeen' ); + $twentyseventeen_l10n['collapse'] = __( 'Collapse child menu', 'twentyseventeen' ); + $twentyseventeen_l10n['icon'] = twentyseventeen_get_svg( + array( + 'icon' => 'angle-down', + 'fallback' => true, + ) + ); + } + + wp_enqueue_script( 'twentyseventeen-global', get_theme_file_uri( '/assets/js/global.js' ), array( 'jquery' ), '20190121', true ); + + wp_enqueue_script( 'jquery-scrollto', get_theme_file_uri( '/assets/js/jquery.scrollTo.js' ), array( 'jquery' ), '2.1.2', true ); + + wp_localize_script( 'twentyseventeen-skip-link-focus-fix', 'twentyseventeenScreenReaderText', $twentyseventeen_l10n ); + + if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { + wp_enqueue_script( 'comment-reply' ); + } +} +add_action( 'wp_enqueue_scripts', 'twentyseventeen_scripts' ); + +/** + * Enqueues styles for the block-based editor. + * + * @since Twenty Seventeen 1.8 + */ +function twentyseventeen_block_editor_styles() { + // Block styles. + wp_enqueue_style( 'twentyseventeen-block-editor-style', get_theme_file_uri( '/assets/css/editor-blocks.css' ), array(), '20201208' ); + // Add custom fonts. + wp_enqueue_style( 'twentyseventeen-fonts', twentyseventeen_fonts_url(), array(), null ); +} +add_action( 'enqueue_block_editor_assets', 'twentyseventeen_block_editor_styles' ); + +/** + * Add custom image sizes attribute to enhance responsive image functionality + * for content images. + * + * @since Twenty Seventeen 1.0 + * + * @param string $sizes A source size value for use in a 'sizes' attribute. + * @param array $size Image size. Accepts an array of width and height + * values in pixels (in that order). + * @return string A source size value for use in a content image 'sizes' attribute. + */ +function twentyseventeen_content_image_sizes_attr( $sizes, $size ) { + $width = $size[0]; + + if ( 740 <= $width ) { + $sizes = '(max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px'; + } + + if ( is_active_sidebar( 'sidebar-1' ) || is_archive() || is_search() || is_home() || is_page() ) { + if ( ! ( is_page() && 'one-column' === get_theme_mod( 'page_options' ) ) && 767 <= $width ) { + $sizes = '(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px'; + } + } + + return $sizes; +} +add_filter( 'wp_calculate_image_sizes', 'twentyseventeen_content_image_sizes_attr', 10, 2 ); + +/** + * Filters the `sizes` value in the header image markup. + * + * @since Twenty Seventeen 1.0 + * + * @param string $html The HTML image tag markup being filtered. + * @param object $header The custom header object returned by 'get_custom_header()'. + * @param array $attr Array of the attributes for the image tag. + * @return string The filtered header image HTML. + */ +function twentyseventeen_header_image_tag( $html, $header, $attr ) { + if ( isset( $attr['sizes'] ) ) { + $html = str_replace( $attr['sizes'], '100vw', $html ); + } + return $html; +} +add_filter( 'get_header_image_tag', 'twentyseventeen_header_image_tag', 10, 3 ); + +/** + * Add custom image sizes attribute to enhance responsive image functionality + * for post thumbnails. + * + * @since Twenty Seventeen 1.0 + * + * @param array $attr Attributes for the image markup. + * @param int $attachment Image attachment ID. + * @param array $size Registered image size or flat array of height and width dimensions. + * @return array The filtered attributes for the image markup. + */ +function twentyseventeen_post_thumbnail_sizes_attr( $attr, $attachment, $size ) { + if ( is_archive() || is_search() || is_home() ) { + $attr['sizes'] = '(max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 543px, 580px'; + } else { + $attr['sizes'] = '100vw'; + } + + return $attr; +} +add_filter( 'wp_get_attachment_image_attributes', 'twentyseventeen_post_thumbnail_sizes_attr', 10, 3 ); + +/** + * Use front-page.php when Front page displays is set to a static page. + * + * @since Twenty Seventeen 1.0 + * + * @param string $template front-page.php. + * @return string The template to be used: blank if is_home() is true (defaults to index.php), + * otherwise $template. + */ +function twentyseventeen_front_page_template( $template ) { + return is_home() ? '' : $template; +} +add_filter( 'frontpage_template', 'twentyseventeen_front_page_template' ); + +/** + * Modifies tag cloud widget arguments to display all tags in the same font size + * and use list format for better accessibility. + * + * @since Twenty Seventeen 1.4 + * + * @param array $args Arguments for tag cloud widget. + * @return array The filtered arguments for tag cloud widget. + */ +function twentyseventeen_widget_tag_cloud_args( $args ) { + $args['largest'] = 1; + $args['smallest'] = 1; + $args['unit'] = 'em'; + $args['format'] = 'list'; + + return $args; +} +add_filter( 'widget_tag_cloud_args', 'twentyseventeen_widget_tag_cloud_args' ); + +/** + * Gets unique ID. + * + * This is a PHP implementation of Underscore's uniqueId method. A static variable + * contains an integer that is incremented with each call. This number is returned + * with the optional prefix. As such the returned value is not universally unique, + * but it is unique across the life of the PHP process. + * + * @since Twenty Seventeen 2.0 + * + * @see wp_unique_id() Themes requiring WordPress 5.0.3 and greater should use this instead. + * + * @param string $prefix Prefix for the returned ID. + * @return string Unique ID. + */ +function twentyseventeen_unique_id( $prefix = '' ) { + static $id_counter = 0; + if ( function_exists( 'wp_unique_id' ) ) { + return wp_unique_id( $prefix ); + } + return $prefix . (string) ++$id_counter; +} + +/** + * Implement the Custom Header feature. + */ +require get_parent_theme_file_path( '/inc/custom-header.php' ); + +/** + * Custom template tags for this theme. + */ +require get_parent_theme_file_path( '/inc/template-tags.php' ); + +/** + * Additional features to allow styling of the templates. + */ +require get_parent_theme_file_path( '/inc/template-functions.php' ); + +/** + * Customizer additions. + */ +require get_parent_theme_file_path( '/inc/customizer.php' ); + +/** + * SVG icons functions and filters. + */ +require get_parent_theme_file_path( '/inc/icon-functions.php' ); + +/** + * Block Patterns. + */ +require get_template_directory() . '/inc/block-patterns.php'; diff --git a/wp-content/themes/twentysixteen/functions.php b/wp-content/themes/twentysixteen/functions.php index e49f39864cc1b1df4329860202375a28083c1ef4..1725283e908132fa9ad027b97ff7e4273f9085d6 100644 --- a/wp-content/themes/twentysixteen/functions.php +++ b/wp-content/themes/twentysixteen/functions.php @@ -249,7 +249,8 @@ add_action( 'after_setup_theme', 'twentysixteen_content_width', 0 ); function twentysixteen_resource_hints( $urls, $relation_type ) { if ( wp_style_is( 'twentysixteen-fonts', 'queue' ) && 'preconnect' === $relation_type ) { $urls[] = array( - 'href' => 'https://fonts.gstatic.com', + 'href' => '', +/* AI fix - google font */ 'crossorigin', ); } @@ -350,7 +351,8 @@ if ( ! function_exists( 'twentysixteen_fonts_url' ) ) : 'subset' => urlencode( $subsets ), 'display' => urlencode( 'fallback' ), ), - 'https://fonts.googleapis.com/css' + // A/I removed google fonts + '' ); } diff --git a/wp-content/themes/twentyten/footer.php b/wp-content/themes/twentyten/footer.php index 9000df6023bbe34b22beffbf231e8931ff9fab6c..b7b78b7d8e19bfb82e9922437e9abdcf347361af 100644 --- a/wp-content/themes/twentyten/footer.php +++ b/wp-content/themes/twentyten/footer.php @@ -1,69 +1,66 @@ -<?php -/** - * Template for displaying the footer - * - * Contains the closing of the id=main div and all content - * after. Calls sidebar-footer.php for bottom widgets. - * - * @package WordPress - * @subpackage Twenty_Ten - * @since Twenty Ten 1.0 - */ -?> - </div><!-- #main --> - - <div id="footer" role="contentinfo"> - <div id="colophon"> - -<?php - /* - * A sidebar in the footer? Yep. You can customize - * your footer with four columns of widgets. - */ - get_sidebar( 'footer' ); -?> - - <div id="site-info"> - <a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"> - <?php bloginfo( 'name' ); ?> - </a> - <?php - if ( function_exists( 'the_privacy_policy_link' ) ) { - the_privacy_policy_link( '<span role="separator" aria-hidden="true"></span>', '' ); - } - ?> - </div><!-- #site-info --> - - <div id="site-generator"> - <?php - /** - * Fires before the Twenty Ten credits in the footer. - * - * @since Twenty Ten 1.0 - */ - do_action( 'twentyten_credits' ); - ?> - <a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentyten' ) ); ?>" class="imprint" title="<?php esc_attr_e( 'Semantic Personal Publishing Platform', 'twentyten' ); ?>"> - <?php - /* translators: %s: WordPress */ - printf( __( 'Proudly powered by %s.', 'twentyten' ), 'WordPress' ); - ?> - </a> - </div><!-- #site-generator --> - - </div><!-- #colophon --> - </div><!-- #footer --> - -</div><!-- #wrapper --> - -<?php - /* - * Always have wp_footer() just before the closing </body> - * tag of your theme, or you will break many plugins, which - * generally use this hook to reference JavaScript files. - */ - - wp_footer(); -?> -</body> -</html> +<?php +/** + * Template for displaying the footer + * + * Contains the closing of the id=main div and all content + * after. Calls sidebar-footer.php for bottom widgets. + * + * @package WordPress + * @subpackage Twenty_Ten + * @since Twenty Ten 1.0 + */ +?> + </div><!-- #main --> + + <div id="footer" role="contentinfo"> + <div id="colophon"> + +<?php + /* + * A sidebar in the footer? Yep. You can customize + * your footer with four columns of widgets. + */ + get_sidebar( 'footer' ); +?> + + <div id="site-info"> + <a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"> + <?php bloginfo( 'name' ); ?> + </a> + <?php + if ( function_exists( 'the_privacy_policy_link' ) ) { + the_privacy_policy_link( '<span role="separator" aria-hidden="true"></span>', '' ); + } + ?> + </div><!-- #site-info --> + + <div id="site-generator"> + <?php + /** + * Fires before the Twenty Ten credits in the footer. + * + * @since Twenty Ten 1.0 + */ + do_action( 'twentyten_credits' ); + ?> + + <strong>Proudly powered by <a href="https://www.autistici.org">R*</a></strong> + + </div><!-- #site-generator --> + + </div><!-- #colophon --> + </div><!-- #footer --> + +</div><!-- #wrapper --> + +<?php + /* + * Always have wp_footer() just before the closing </body> + * tag of your theme, or you will break many plugins, which + * generally use this hook to reference JavaScript files. + */ + + wp_footer(); +?> +</body> +</html> diff --git a/wp-content/themes/twentythirteen/functions.php b/wp-content/themes/twentythirteen/functions.php index c93cf51ba13a07b1b5719aa290a1a117a305a92f..255296aefdfe794e5d358682778c16ea5e962563 100644 --- a/wp-content/themes/twentythirteen/functions.php +++ b/wp-content/themes/twentythirteen/functions.php @@ -1,832 +1,834 @@ -<?php -/** - * Twenty Thirteen functions and definitions - * - * Sets up the theme and provides some helper functions, which are used in the - * theme as custom template tags. Others are attached to action and filter - * hooks in WordPress to change core functionality. - * - * When using a child theme you can override certain functions (those wrapped - * in a function_exists() call) by defining them first in your child theme's - * functions.php file. The child theme's functions.php file is included before - * the parent theme's file, so the child theme functions would be used. - * - * @link https://developer.wordpress.org/themes/basics/theme-functions/ - * @link https://developer.wordpress.org/themes/advanced-topics/child-themes/ - * - * Functions that are not pluggable (not wrapped in function_exists()) are - * instead attached to a filter or action hook. - * - * For more information on hooks, actions, and filters, @link https://developer.wordpress.org/plugins/ - * - * @package WordPress - * @subpackage Twenty_Thirteen - * @since Twenty Thirteen 1.0 - */ - -/* - * Set up the content width value based on the theme's design. - * - * @see twentythirteen_content_width() for template-specific adjustments. - */ -if ( ! isset( $content_width ) ) { - $content_width = 604; -} - -/** - * Add support for a custom header image. - */ -require get_template_directory() . '/inc/custom-header.php'; - -/** - * Twenty Thirteen only works in WordPress 3.6 or later. - */ -if ( version_compare( $GLOBALS['wp_version'], '3.6-alpha', '<' ) ) { - require get_template_directory() . '/inc/back-compat.php'; -} - -/** - * Twenty Thirteen setup. - * - * Sets up theme defaults and registers the various WordPress features that - * Twenty Thirteen supports. - * - * @uses load_theme_textdomain() For translation/localization support. - * @uses add_editor_style() To add Visual Editor stylesheets. - * @uses add_theme_support() To add support for automatic feed links, post - * formats, and post thumbnails. - * @uses register_nav_menu() To add support for a navigation menu. - * @uses set_post_thumbnail_size() To set a custom post thumbnail size. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_setup() { - /* - * Makes Twenty Thirteen available for translation. - * - * Translations can be filed at WordPress.org. See: https://translate.wordpress.org/projects/wp-themes/twentythirteen - * If you're building a theme based on Twenty Thirteen, use a find and - * replace to change 'twentythirteen' to the name of your theme in all - * template files. - */ - load_theme_textdomain( 'twentythirteen' ); - - /* - * This theme styles the visual editor to resemble the theme style, - * specifically font, colors, icons, and column width. - */ - add_editor_style( array( 'css/editor-style.css', 'genericons/genericons.css', twentythirteen_fonts_url() ) ); - - // Load regular editor styles into the new block-based editor. - add_theme_support( 'editor-styles' ); - - // Load default block styles. - add_theme_support( 'wp-block-styles' ); - - // Add support for full and wide align images. - add_theme_support( 'align-wide' ); - - // Add support for responsive embeds. - add_theme_support( 'responsive-embeds' ); - - // Add support for custom color scheme. - add_theme_support( - 'editor-color-palette', - array( - array( - 'name' => __( 'Dark Gray', 'twentythirteen' ), - 'slug' => 'dark-gray', - 'color' => '#141412', - ), - array( - 'name' => __( 'Red', 'twentythirteen' ), - 'slug' => 'red', - 'color' => '#bc360a', - ), - array( - 'name' => __( 'Medium Orange', 'twentythirteen' ), - 'slug' => 'medium-orange', - 'color' => '#db572f', - ), - array( - 'name' => __( 'Light Orange', 'twentythirteen' ), - 'slug' => 'light-orange', - 'color' => '#ea9629', - ), - array( - 'name' => __( 'Yellow', 'twentythirteen' ), - 'slug' => 'yellow', - 'color' => '#fbca3c', - ), - array( - 'name' => __( 'White', 'twentythirteen' ), - 'slug' => 'white', - 'color' => '#fff', - ), - array( - 'name' => __( 'Dark Brown', 'twentythirteen' ), - 'slug' => 'dark-brown', - 'color' => '#220e10', - ), - array( - 'name' => __( 'Medium Brown', 'twentythirteen' ), - 'slug' => 'medium-brown', - 'color' => '#722d19', - ), - array( - 'name' => __( 'Light Brown', 'twentythirteen' ), - 'slug' => 'light-brown', - 'color' => '#eadaa6', - ), - array( - 'name' => __( 'Beige', 'twentythirteen' ), - 'slug' => 'beige', - 'color' => '#e8e5ce', - ), - array( - 'name' => __( 'Off-white', 'twentythirteen' ), - 'slug' => 'off-white', - 'color' => '#f7f5e7', - ), - ) - ); - - // Adds RSS feed links to <head> for posts and comments. - add_theme_support( 'automatic-feed-links' ); - - /* - * Switches default core markup for search form, comment form, - * and comments to output valid HTML5. - */ - add_theme_support( - 'html5', - array( - 'search-form', - 'comment-form', - 'comment-list', - 'gallery', - 'caption', - 'script', - 'style', - 'navigation-widgets', - ) - ); - - /* - * This theme supports all available post formats by default. - * See https://wordpress.org/support/article/post-formats/ - */ - add_theme_support( - 'post-formats', - array( - 'aside', - 'audio', - 'chat', - 'gallery', - 'image', - 'link', - 'quote', - 'status', - 'video', - ) - ); - - // This theme uses wp_nav_menu() in one location. - register_nav_menu( 'primary', __( 'Navigation Menu', 'twentythirteen' ) ); - - /* - * This theme uses a custom image size for featured images, displayed on - * "standard" posts and pages. - */ - add_theme_support( 'post-thumbnails' ); - set_post_thumbnail_size( 604, 270, true ); - - // This theme uses its own gallery styles. - add_filter( 'use_default_gallery_style', '__return_false' ); - - // Indicate widget sidebars can use selective refresh in the Customizer. - add_theme_support( 'customize-selective-refresh-widgets' ); -} -add_action( 'after_setup_theme', 'twentythirteen_setup' ); - -/** - * Return the Google font stylesheet URL, if available. - * - * The use of Source Sans Pro and Bitter by default is localized. For languages - * that use characters not supported by the font, the font can be disabled. - * - * @since Twenty Thirteen 1.0 - * - * @return string Font stylesheet or empty string if disabled. - */ -function twentythirteen_fonts_url() { - $fonts_url = ''; - - /* - * translators: If there are characters in your language that are not supported - * by Source Sans Pro, translate this to 'off'. Do not translate into your own language. - */ - $source_sans_pro = _x( 'on', 'Source Sans Pro font: on or off', 'twentythirteen' ); - - /* - * translators: If there are characters in your language that are not supported - * by Bitter, translate this to 'off'. Do not translate into your own language. - */ - $bitter = _x( 'on', 'Bitter font: on or off', 'twentythirteen' ); - - if ( 'off' !== $source_sans_pro || 'off' !== $bitter ) { - $font_families = array(); - - if ( 'off' !== $source_sans_pro ) { - $font_families[] = 'Source Sans Pro:300,400,700,300italic,400italic,700italic'; - } - - if ( 'off' !== $bitter ) { - $font_families[] = 'Bitter:400,700'; - } - - $query_args = array( - 'family' => urlencode( implode( '|', $font_families ) ), - 'subset' => urlencode( 'latin,latin-ext' ), - 'display' => urlencode( 'fallback' ), - ); - $fonts_url = add_query_arg( $query_args, '' ); - } - -/*AI fix - tolto google font */ - - return $fonts_url; -} - -/** - * Enqueue scripts and styles for the front end. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_scripts_styles() { - /* - * Adds JavaScript to pages with the comment form to support - * sites with threaded comments (when in use). - */ - if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { - wp_enqueue_script( 'comment-reply' ); - } - - // Adds Masonry to handle vertical alignment of footer widgets. - if ( is_active_sidebar( 'sidebar-1' ) ) { - wp_enqueue_script( 'jquery-masonry' ); - } - - // Loads JavaScript file with functionality specific to Twenty Thirteen. - wp_enqueue_script( 'twentythirteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20171218', true ); - - // Add Source Sans Pro and Bitter fonts, used in the main stylesheet. - wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null ); - - // Add Genericons font, used in the main stylesheet. - wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.0.3' ); - - // Loads our main stylesheet. - wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '20201208' ); - - // Theme block stylesheet. - wp_enqueue_style( 'twentythirteen-block-style', get_template_directory_uri() . '/css/blocks.css', array( 'twentythirteen-style' ), '20190102' ); - - // Loads the Internet Explorer specific stylesheet. - wp_enqueue_style( 'twentythirteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentythirteen-style' ), '20150214' ); - wp_style_add_data( 'twentythirteen-ie', 'conditional', 'lt IE 9' ); -} -add_action( 'wp_enqueue_scripts', 'twentythirteen_scripts_styles' ); - -/** - * Add preconnect for Google Fonts. - * - * @since Twenty Thirteen 2.1 - * - * @param array $urls URLs to print for resource hints. - * @param string $relation_type The relation type the URLs are printed. - * @return array URLs to print for resource hints. - */ -function twentythirteen_resource_hints( $urls, $relation_type ) { - if ( wp_style_is( 'twentythirteen-fonts', 'queue' ) && 'preconnect' === $relation_type ) { - if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '>=' ) ) { - $urls[] = array( - 'href' => 'https://fonts.gstatic.com', - 'crossorigin', - ); - } else { - $urls[] = 'https://fonts.gstatic.com'; - } - } - - return $urls; -} -add_filter( 'wp_resource_hints', 'twentythirteen_resource_hints', 10, 2 ); - -/** - * Enqueue styles for the block-based editor. - * - * @since Twenty Thirteen 2.5 - */ -function twentythirteen_block_editor_styles() { - // Block styles. - wp_enqueue_style( 'twentythirteen-block-editor-style', get_template_directory_uri() . '/css/editor-blocks.css', array(), '20201208' ); - // Add custom fonts. - wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null ); -} -add_action( 'enqueue_block_editor_assets', 'twentythirteen_block_editor_styles' ); - -/** - * Filter the page title. - * - * Creates a nicely formatted and more specific title element text for output - * in head of document, based on current view. - * - * @since Twenty Thirteen 1.0 - * - * @param string $title Default title text for current view. - * @param string $sep Optional separator. - * @return string The filtered title. - */ -function twentythirteen_wp_title( $title, $sep ) { - global $paged, $page; - - if ( is_feed() ) { - return $title; - } - - // Add the site name. - $title .= get_bloginfo( 'name', 'display' ); - - // Add the site description for the home/front page. - $site_description = get_bloginfo( 'description', 'display' ); - if ( $site_description && ( is_home() || is_front_page() ) ) { - $title = "$title $sep $site_description"; - } - - // Add a page number if necessary. - if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) { - /* translators: %s: Page number. */ - $title = "$title $sep " . sprintf( __( 'Page %s', 'twentythirteen' ), max( $paged, $page ) ); - } - - return $title; -} -add_filter( 'wp_title', 'twentythirteen_wp_title', 10, 2 ); - -/** - * Register two widget areas. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_widgets_init() { - register_sidebar( - array( - 'name' => __( 'Main Widget Area', 'twentythirteen' ), - 'id' => 'sidebar-1', - 'description' => __( 'Appears in the footer section of the site.', 'twentythirteen' ), - 'before_widget' => '<aside id="%1$s" class="widget %2$s">', - 'after_widget' => '</aside>', - 'before_title' => '<h3 class="widget-title">', - 'after_title' => '</h3>', - ) - ); - - register_sidebar( - array( - 'name' => __( 'Secondary Widget Area', 'twentythirteen' ), - 'id' => 'sidebar-2', - 'description' => __( 'Appears on posts and pages in the sidebar.', 'twentythirteen' ), - 'before_widget' => '<aside id="%1$s" class="widget %2$s">', - 'after_widget' => '</aside>', - 'before_title' => '<h3 class="widget-title">', - 'after_title' => '</h3>', - ) - ); -} -add_action( 'widgets_init', 'twentythirteen_widgets_init' ); - -if ( ! function_exists( 'twentythirteen_paging_nav' ) ) : - /** - * Display navigation to next/previous set of posts when applicable. - * - * @since Twenty Thirteen 1.0 - */ - function twentythirteen_paging_nav() { - global $wp_query; - - // Don't print empty markup if there's only one page. - if ( $wp_query->max_num_pages < 2 ) { - return; - } - ?> - <nav class="navigation paging-navigation" role="navigation"> - <h1 class="screen-reader-text"><?php _e( 'Posts navigation', 'twentythirteen' ); ?></h1> - <div class="nav-links"> - - <?php if ( get_next_posts_link() ) : ?> - <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentythirteen' ) ); ?></div> - <?php endif; ?> - - <?php if ( get_previous_posts_link() ) : ?> - <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentythirteen' ) ); ?></div> - <?php endif; ?> - - </div><!-- .nav-links --> - </nav><!-- .navigation --> - <?php - } -endif; - -if ( ! function_exists( 'twentythirteen_post_nav' ) ) : - /** - * Display navigation to next/previous post when applicable. - * - * @since Twenty Thirteen 1.0 - */ - function twentythirteen_post_nav() { - global $post; - - // Don't print empty markup if there's nowhere to navigate. - $previous = ( is_attachment() ) ? get_post( $post->post_parent ) : get_adjacent_post( false, '', true ); - $next = get_adjacent_post( false, '', false ); - - if ( ! $next && ! $previous ) { - return; - } - ?> - <nav class="navigation post-navigation" role="navigation"> - <h1 class="screen-reader-text"><?php _e( 'Post navigation', 'twentythirteen' ); ?></h1> - <div class="nav-links"> - - <?php previous_post_link( '%link', _x( '<span class="meta-nav">←</span> %title', 'Previous post link', 'twentythirteen' ) ); ?> - <?php next_post_link( '%link', _x( '%title <span class="meta-nav">→</span>', 'Next post link', 'twentythirteen' ) ); ?> - - </div><!-- .nav-links --> - </nav><!-- .navigation --> - <?php - } -endif; - -if ( ! function_exists( 'twentythirteen_entry_meta' ) ) : - /** - * Print HTML with meta information for current post: categories, tags, permalink, author, and date. - * - * Create your own twentythirteen_entry_meta() to override in a child theme. - * - * @since Twenty Thirteen 1.0 - */ - function twentythirteen_entry_meta() { - if ( is_sticky() && is_home() && ! is_paged() ) { - echo '<span class="featured-post">' . esc_html__( 'Sticky', 'twentythirteen' ) . '</span>'; - } - - if ( ! has_post_format( 'link' ) && 'post' === get_post_type() ) { - twentythirteen_entry_date(); - } - - /* translators: Used between list items, there is a space after the comma. */ - $categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) ); - if ( $categories_list ) { - echo '<span class="categories-links">' . $categories_list . '</span>'; - } - - /* translators: Used between list items, there is a space after the comma. */ - $tags_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) ); - if ( $tags_list && ! is_wp_error( $tags_list ) ) { - echo '<span class="tags-links">' . $tags_list . '</span>'; - } - - // Post author. - if ( 'post' === get_post_type() ) { - printf( - '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>', - esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), - /* translators: %s: Author display name. */ - esc_attr( sprintf( __( 'View all posts by %s', 'twentythirteen' ), get_the_author() ) ), - get_the_author() - ); - } - } -endif; - -if ( ! function_exists( 'twentythirteen_entry_date' ) ) : - /** - * Print HTML with date information for current post. - * - * Create your own twentythirteen_entry_date() to override in a child theme. - * - * @since Twenty Thirteen 1.0 - * - * @param bool $echo (optional) Whether to echo the date. Default true. - * @return string The HTML-formatted post date. - */ - function twentythirteen_entry_date( $echo = true ) { - if ( has_post_format( array( 'chat', 'status' ) ) ) { - /* translators: 1: Post format name, 2: Date. */ - $format_prefix = _x( '%1$s on %2$s', '1: post format name. 2: date', 'twentythirteen' ); - } else { - $format_prefix = '%2$s'; - } - - $date = sprintf( - '<span class="date"><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a></span>', - esc_url( get_permalink() ), - /* translators: %s: Post title. */ - esc_attr( sprintf( __( 'Permalink to %s', 'twentythirteen' ), the_title_attribute( 'echo=0' ) ) ), - esc_attr( get_the_date( 'c' ) ), - esc_html( sprintf( $format_prefix, get_post_format_string( get_post_format() ), get_the_date() ) ) - ); - - if ( $echo ) { - echo $date; - } - - return $date; - } -endif; - -if ( ! function_exists( 'twentythirteen_the_attached_image' ) ) : - /** - * Print the attached image with a link to the next attached image. - * - * @since Twenty Thirteen 1.0 - */ - function twentythirteen_the_attached_image() { - /** - * Filters the image attachment size to use. - * - * @since Twenty thirteen 1.0 - * - * @param array $size { - * @type int The attachment height in pixels. - * @type int The attachment width in pixels. - * } - */ - $attachment_size = apply_filters( 'twentythirteen_attachment_size', array( 724, 724 ) ); - $next_attachment_url = wp_get_attachment_url(); - $post = get_post(); - - /* - * Grab the IDs of all the image attachments in a gallery so we can get the URL - * of the next adjacent image in a gallery, or the first image (if we're - * looking at the last image in a gallery), or, in a gallery of one, just the - * link to that image file. - */ - $attachment_ids = get_posts( - array( - 'post_parent' => $post->post_parent, - 'fields' => 'ids', - 'numberposts' => -1, - 'post_status' => 'inherit', - 'post_type' => 'attachment', - 'post_mime_type' => 'image', - 'order' => 'ASC', - 'orderby' => 'menu_order ID', - ) - ); - - // If there is more than 1 attachment in a gallery... - if ( count( $attachment_ids ) > 1 ) { - foreach ( $attachment_ids as $idx => $attachment_id ) { - if ( $attachment_id == $post->ID ) { - $next_id = $attachment_ids[ ( $idx + 1 ) % count( $attachment_ids ) ]; - break; - } - } - - if ( $next_id ) { - // ...get the URL of the next image attachment. - $next_attachment_url = get_attachment_link( $next_id ); - } else { - // ...or get the URL of the first image attachment. - $next_attachment_url = get_attachment_link( reset( $attachment_ids ) ); - } - } - - printf( - '<a href="%1$s" title="%2$s" rel="attachment">%3$s</a>', - esc_url( $next_attachment_url ), - the_title_attribute( array( 'echo' => false ) ), - wp_get_attachment_image( $post->ID, $attachment_size ) - ); - } -endif; - -/** - * Return the post URL. - * - * @uses get_url_in_content() to get the URL in the post meta (if it exists) or - * the first link found in the post content. - * - * Falls back to the post permalink if no URL is found in the post. - * - * @since Twenty Thirteen 1.0 - * - * @return string The Link format URL. - */ -function twentythirteen_get_link_url() { - $content = get_the_content(); - $has_url = get_url_in_content( $content ); - - return ( $has_url ) ? $has_url : apply_filters( 'the_permalink', get_permalink() ); -} - -if ( ! function_exists( 'twentythirteen_excerpt_more' ) && ! is_admin() ) : - /** - * Replaces "[...]" (appended to automatically generated excerpts) with ... - * and a Continue reading link. - * - * @since Twenty Thirteen 1.4 - * - * @param string $more Default Read More excerpt link. - * @return string Filtered Read More excerpt link. - */ - function twentythirteen_excerpt_more( $more ) { - $link = sprintf( - '<a href="%1$s" class="more-link">%2$s</a>', - esc_url( get_permalink( get_the_ID() ) ), - /* translators: %s: Post title. */ - sprintf( __( 'Continue reading %s <span class="meta-nav">→</span>', 'twentythirteen' ), '<span class="screen-reader-text">' . get_the_title( get_the_ID() ) . '</span>' ) - ); - return ' … ' . $link; - } - add_filter( 'excerpt_more', 'twentythirteen_excerpt_more' ); -endif; - -/** - * Extend the default WordPress body classes. - * - * Adds body classes to denote: - * 1. Single or multiple authors. - * 2. Active widgets in the sidebar to change the layout and spacing. - * 3. When avatars are disabled in discussion settings. - * - * @since Twenty Thirteen 1.0 - * - * @param array $classes A list of existing body class values. - * @return array The filtered body class list. - */ -function twentythirteen_body_class( $classes ) { - if ( ! is_multi_author() ) { - $classes[] = 'single-author'; - } - - if ( is_active_sidebar( 'sidebar-2' ) && ! is_attachment() && ! is_404() ) { - $classes[] = 'sidebar'; - } - - if ( ! get_option( 'show_avatars' ) ) { - $classes[] = 'no-avatars'; - } - - return $classes; -} -add_filter( 'body_class', 'twentythirteen_body_class' ); - -/** - * Adjust content_width value for video post formats and attachment templates. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_content_width() { - global $content_width; - - if ( is_attachment() ) { - $content_width = 724; - } elseif ( has_post_format( 'audio' ) ) { - $content_width = 484; - } -} -add_action( 'template_redirect', 'twentythirteen_content_width' ); - -/** - * Add postMessage support for site title and description for the Customizer. - * - * @since Twenty Thirteen 1.0 - * - * @param WP_Customize_Manager $wp_customize Customizer object. - */ -function twentythirteen_customize_register( $wp_customize ) { - $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; - $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; - $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; - - if ( isset( $wp_customize->selective_refresh ) ) { - $wp_customize->selective_refresh->add_partial( - 'blogname', - array( - 'selector' => '.site-title', - 'container_inclusive' => false, - 'render_callback' => 'twentythirteen_customize_partial_blogname', - ) - ); - $wp_customize->selective_refresh->add_partial( - 'blogdescription', - array( - 'selector' => '.site-description', - 'container_inclusive' => false, - 'render_callback' => 'twentythirteen_customize_partial_blogdescription', - ) - ); - } -} -add_action( 'customize_register', 'twentythirteen_customize_register' ); - -/** - * Render the site title for the selective refresh partial. - * - * @since Twenty Thirteen 1.9 - * - * @see twentythirteen_customize_register() - * - * @return void - */ -function twentythirteen_customize_partial_blogname() { - bloginfo( 'name' ); -} - -/** - * Render the site tagline for the selective refresh partial. - * - * @since Twenty Thirteen 1.9 - * - * @see twentythirteen_customize_register() - * - * @return void - */ -function twentythirteen_customize_partial_blogdescription() { - bloginfo( 'description' ); -} - -/** - * Enqueue JavaScript postMessage handlers for the Customizer. - * - * Binds JavaScript handlers to make the Customizer preview - * reload changes asynchronously. - * - * @since Twenty Thirteen 1.0 - */ -function twentythirteen_customize_preview_js() { - wp_enqueue_script( 'twentythirteen-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20141120', true ); -} -add_action( 'customize_preview_init', 'twentythirteen_customize_preview_js' ); - -/** - * Modifies tag cloud widget arguments to display all tags in the same font size - * and use list format for better accessibility. - * - * @since Twenty Thirteen 2.3 - * - * @param array $args Arguments for tag cloud widget. - * @return array The filtered arguments for tag cloud widget. - */ -function twentythirteen_widget_tag_cloud_args( $args ) { - $args['largest'] = 22; - $args['smallest'] = 8; - $args['unit'] = 'pt'; - $args['format'] = 'list'; - - return $args; -} -add_filter( 'widget_tag_cloud_args', 'twentythirteen_widget_tag_cloud_args' ); - -/** - * Prevents `author-bio.php` partial template from interfering with rendering - * an author archive of a user with the `bio` username. - * - * @since Twenty Thirteen 3.0 - * - * @param string $template Template file. - * @return string Replacement template file. - */ -function twentythirteen_author_bio_template( $template ) { - if ( is_author() ) { - $author = get_queried_object(); - if ( $author instanceof WP_User && 'bio' === $author->user_nicename ) { - // Use author templates if exist, fall back to template hierarchy otherwise. - return locate_template( array( "author-{$author->ID}.php", 'author.php' ) ); - } - } - - return $template; -} -add_filter( 'author_template', 'twentythirteen_author_bio_template' ); - -if ( ! function_exists( 'wp_body_open' ) ) : - /** - * Fire the wp_body_open action. - * - * Added for backward compatibility to support pre-5.2.0 WordPress versions. - * - * @since Twenty Thirteen 2.8 - */ - function wp_body_open() { - /** - * Triggered after the opening <body> tag. - * - * @since Twenty Thirteen 2.8 - */ - do_action( 'wp_body_open' ); - } -endif; +<?php +/** + * Twenty Thirteen functions and definitions + * + * Sets up the theme and provides some helper functions, which are used in the + * theme as custom template tags. Others are attached to action and filter + * hooks in WordPress to change core functionality. + * + * When using a child theme you can override certain functions (those wrapped + * in a function_exists() call) by defining them first in your child theme's + * functions.php file. The child theme's functions.php file is included before + * the parent theme's file, so the child theme functions would be used. + * + * @link https://developer.wordpress.org/themes/basics/theme-functions/ + * @link https://developer.wordpress.org/themes/advanced-topics/child-themes/ + * + * Functions that are not pluggable (not wrapped in function_exists()) are + * instead attached to a filter or action hook. + * + * For more information on hooks, actions, and filters, @link https://developer.wordpress.org/plugins/ + * + * @package WordPress + * @subpackage Twenty_Thirteen + * @since Twenty Thirteen 1.0 + */ + +/* + * Set up the content width value based on the theme's design. + * + * @see twentythirteen_content_width() for template-specific adjustments. + */ +if ( ! isset( $content_width ) ) { + $content_width = 604; +} + +/** + * Add support for a custom header image. + */ +require get_template_directory() . '/inc/custom-header.php'; + +/** + * Twenty Thirteen only works in WordPress 3.6 or later. + */ +if ( version_compare( $GLOBALS['wp_version'], '3.6-alpha', '<' ) ) { + require get_template_directory() . '/inc/back-compat.php'; +} + +/** + * Twenty Thirteen setup. + * + * Sets up theme defaults and registers the various WordPress features that + * Twenty Thirteen supports. + * + * @uses load_theme_textdomain() For translation/localization support. + * @uses add_editor_style() To add Visual Editor stylesheets. + * @uses add_theme_support() To add support for automatic feed links, post + * formats, and post thumbnails. + * @uses register_nav_menu() To add support for a navigation menu. + * @uses set_post_thumbnail_size() To set a custom post thumbnail size. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_setup() { + /* + * Makes Twenty Thirteen available for translation. + * + * Translations can be filed at WordPress.org. See: https://translate.wordpress.org/projects/wp-themes/twentythirteen + * If you're building a theme based on Twenty Thirteen, use a find and + * replace to change 'twentythirteen' to the name of your theme in all + * template files. + */ + load_theme_textdomain( 'twentythirteen' ); + + /* + * This theme styles the visual editor to resemble the theme style, + * specifically font, colors, icons, and column width. + */ + add_editor_style( array( 'css/editor-style.css', 'genericons/genericons.css', twentythirteen_fonts_url() ) ); + + // Load regular editor styles into the new block-based editor. + add_theme_support( 'editor-styles' ); + + // Load default block styles. + add_theme_support( 'wp-block-styles' ); + + // Add support for full and wide align images. + add_theme_support( 'align-wide' ); + + // Add support for responsive embeds. + add_theme_support( 'responsive-embeds' ); + + // Add support for custom color scheme. + add_theme_support( + 'editor-color-palette', + array( + array( + 'name' => __( 'Dark Gray', 'twentythirteen' ), + 'slug' => 'dark-gray', + 'color' => '#141412', + ), + array( + 'name' => __( 'Red', 'twentythirteen' ), + 'slug' => 'red', + 'color' => '#bc360a', + ), + array( + 'name' => __( 'Medium Orange', 'twentythirteen' ), + 'slug' => 'medium-orange', + 'color' => '#db572f', + ), + array( + 'name' => __( 'Light Orange', 'twentythirteen' ), + 'slug' => 'light-orange', + 'color' => '#ea9629', + ), + array( + 'name' => __( 'Yellow', 'twentythirteen' ), + 'slug' => 'yellow', + 'color' => '#fbca3c', + ), + array( + 'name' => __( 'White', 'twentythirteen' ), + 'slug' => 'white', + 'color' => '#fff', + ), + array( + 'name' => __( 'Dark Brown', 'twentythirteen' ), + 'slug' => 'dark-brown', + 'color' => '#220e10', + ), + array( + 'name' => __( 'Medium Brown', 'twentythirteen' ), + 'slug' => 'medium-brown', + 'color' => '#722d19', + ), + array( + 'name' => __( 'Light Brown', 'twentythirteen' ), + 'slug' => 'light-brown', + 'color' => '#eadaa6', + ), + array( + 'name' => __( 'Beige', 'twentythirteen' ), + 'slug' => 'beige', + 'color' => '#e8e5ce', + ), + array( + 'name' => __( 'Off-white', 'twentythirteen' ), + 'slug' => 'off-white', + 'color' => '#f7f5e7', + ), + ) + ); + + // Adds RSS feed links to <head> for posts and comments. + add_theme_support( 'automatic-feed-links' ); + + /* + * Switches default core markup for search form, comment form, + * and comments to output valid HTML5. + */ + add_theme_support( + 'html5', + array( + 'search-form', + 'comment-form', + 'comment-list', + 'gallery', + 'caption', + 'script', + 'style', + 'navigation-widgets', + ) + ); + + /* + * This theme supports all available post formats by default. + * See https://wordpress.org/support/article/post-formats/ + */ + add_theme_support( + 'post-formats', + array( + 'aside', + 'audio', + 'chat', + 'gallery', + 'image', + 'link', + 'quote', + 'status', + 'video', + ) + ); + + // This theme uses wp_nav_menu() in one location. + register_nav_menu( 'primary', __( 'Navigation Menu', 'twentythirteen' ) ); + + /* + * This theme uses a custom image size for featured images, displayed on + * "standard" posts and pages. + */ + add_theme_support( 'post-thumbnails' ); + set_post_thumbnail_size( 604, 270, true ); + + // This theme uses its own gallery styles. + add_filter( 'use_default_gallery_style', '__return_false' ); + + // Indicate widget sidebars can use selective refresh in the Customizer. + add_theme_support( 'customize-selective-refresh-widgets' ); +} +add_action( 'after_setup_theme', 'twentythirteen_setup' ); + +/** + * Return the Google font stylesheet URL, if available. + * + * The use of Source Sans Pro and Bitter by default is localized. For languages + * that use characters not supported by the font, the font can be disabled. + * + * @since Twenty Thirteen 1.0 + * + * @return string Font stylesheet or empty string if disabled. + */ +function twentythirteen_fonts_url() { + $fonts_url = ''; + + /* + * translators: If there are characters in your language that are not supported + * by Source Sans Pro, translate this to 'off'. Do not translate into your own language. + */ + $source_sans_pro = _x( 'on', 'Source Sans Pro font: on or off', 'twentythirteen' ); + + /* + * translators: If there are characters in your language that are not supported + * by Bitter, translate this to 'off'. Do not translate into your own language. + */ + $bitter = _x( 'on', 'Bitter font: on or off', 'twentythirteen' ); + + if ( 'off' !== $source_sans_pro || 'off' !== $bitter ) { + $font_families = array(); + + if ( 'off' !== $source_sans_pro ) { + $font_families[] = 'Source Sans Pro:300,400,700,300italic,400italic,700italic'; + } + + if ( 'off' !== $bitter ) { + $font_families[] = 'Bitter:400,700'; + } + + $query_args = array( + 'family' => urlencode( implode( '|', $font_families ) ), + 'subset' => urlencode( 'latin,latin-ext' ), + 'display' => urlencode( 'fallback' ), + ); + $fonts_url = add_query_arg( $query_args, '' ); + } + +/*AI fix - tolto google font */ + + return $fonts_url; +} + +/** + * Enqueue scripts and styles for the front end. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_scripts_styles() { + /* + * Adds JavaScript to pages with the comment form to support + * sites with threaded comments (when in use). + */ + if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { + wp_enqueue_script( 'comment-reply' ); + } + + // Adds Masonry to handle vertical alignment of footer widgets. + if ( is_active_sidebar( 'sidebar-1' ) ) { + wp_enqueue_script( 'jquery-masonry' ); + } + + // Loads JavaScript file with functionality specific to Twenty Thirteen. + wp_enqueue_script( 'twentythirteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20171218', true ); + + // Add Source Sans Pro and Bitter fonts, used in the main stylesheet. + wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null ); + + // Add Genericons font, used in the main stylesheet. + wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.0.3' ); + + // Loads our main stylesheet. + wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '20201208' ); + + // Theme block stylesheet. + wp_enqueue_style( 'twentythirteen-block-style', get_template_directory_uri() . '/css/blocks.css', array( 'twentythirteen-style' ), '20190102' ); + + // Loads the Internet Explorer specific stylesheet. + wp_enqueue_style( 'twentythirteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentythirteen-style' ), '20150214' ); + wp_style_add_data( 'twentythirteen-ie', 'conditional', 'lt IE 9' ); +} +add_action( 'wp_enqueue_scripts', 'twentythirteen_scripts_styles' ); + +/** + * Add preconnect for Google Fonts. + * + * @since Twenty Thirteen 2.1 + * + * @param array $urls URLs to print for resource hints. + * @param string $relation_type The relation type the URLs are printed. + * @return array URLs to print for resource hints. + */ +/* AI fix google fonts */ +/* +function twentythirteen_resource_hints( $urls, $relation_type ) { + if ( wp_style_is( 'twentythirteen-fonts', 'queue' ) && 'preconnect' === $relation_type ) { + if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '>=' ) ) { + $urls[] = array( + 'href' => '', + 'crossorigin', + ); + } else { + $urls[] = ''; + /* AI fix google fonts */ + } + } + + return $urls; +} +add_filter( 'wp_resource_hints', 'twentythirteen_resource_hints', 10, 2 ); +*/ + +/** + * Enqueue styles for the block-based editor. + * + * @since Twenty Thirteen 2.5 + */ +function twentythirteen_block_editor_styles() { + // Block styles. + wp_enqueue_style( 'twentythirteen-block-editor-style', get_template_directory_uri() . '/css/editor-blocks.css', array(), '20201208' ); + // Add custom fonts. + wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null ); +} +add_action( 'enqueue_block_editor_assets', 'twentythirteen_block_editor_styles' ); + +/** + * Filter the page title. + * + * Creates a nicely formatted and more specific title element text for output + * in head of document, based on current view. + * + * @since Twenty Thirteen 1.0 + * + * @param string $title Default title text for current view. + * @param string $sep Optional separator. + * @return string The filtered title. + */ +function twentythirteen_wp_title( $title, $sep ) { + global $paged, $page; + + if ( is_feed() ) { + return $title; + } + + // Add the site name. + $title .= get_bloginfo( 'name', 'display' ); + + // Add the site description for the home/front page. + $site_description = get_bloginfo( 'description', 'display' ); + if ( $site_description && ( is_home() || is_front_page() ) ) { + $title = "$title $sep $site_description"; + } + + // Add a page number if necessary. + if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) { + /* translators: %s: Page number. */ + $title = "$title $sep " . sprintf( __( 'Page %s', 'twentythirteen' ), max( $paged, $page ) ); + } + + return $title; +} +add_filter( 'wp_title', 'twentythirteen_wp_title', 10, 2 ); + +/** + * Register two widget areas. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_widgets_init() { + register_sidebar( + array( + 'name' => __( 'Main Widget Area', 'twentythirteen' ), + 'id' => 'sidebar-1', + 'description' => __( 'Appears in the footer section of the site.', 'twentythirteen' ), + 'before_widget' => '<aside id="%1$s" class="widget %2$s">', + 'after_widget' => '</aside>', + 'before_title' => '<h3 class="widget-title">', + 'after_title' => '</h3>', + ) + ); + + register_sidebar( + array( + 'name' => __( 'Secondary Widget Area', 'twentythirteen' ), + 'id' => 'sidebar-2', + 'description' => __( 'Appears on posts and pages in the sidebar.', 'twentythirteen' ), + 'before_widget' => '<aside id="%1$s" class="widget %2$s">', + 'after_widget' => '</aside>', + 'before_title' => '<h3 class="widget-title">', + 'after_title' => '</h3>', + ) + ); +} +add_action( 'widgets_init', 'twentythirteen_widgets_init' ); + +if ( ! function_exists( 'twentythirteen_paging_nav' ) ) : + /** + * Display navigation to next/previous set of posts when applicable. + * + * @since Twenty Thirteen 1.0 + */ + function twentythirteen_paging_nav() { + global $wp_query; + + // Don't print empty markup if there's only one page. + if ( $wp_query->max_num_pages < 2 ) { + return; + } + ?> + <nav class="navigation paging-navigation" role="navigation"> + <h1 class="screen-reader-text"><?php _e( 'Posts navigation', 'twentythirteen' ); ?></h1> + <div class="nav-links"> + + <?php if ( get_next_posts_link() ) : ?> + <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentythirteen' ) ); ?></div> + <?php endif; ?> + + <?php if ( get_previous_posts_link() ) : ?> + <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentythirteen' ) ); ?></div> + <?php endif; ?> + + </div><!-- .nav-links --> + </nav><!-- .navigation --> + <?php + } +endif; + +if ( ! function_exists( 'twentythirteen_post_nav' ) ) : + /** + * Display navigation to next/previous post when applicable. + * + * @since Twenty Thirteen 1.0 + */ + function twentythirteen_post_nav() { + global $post; + + // Don't print empty markup if there's nowhere to navigate. + $previous = ( is_attachment() ) ? get_post( $post->post_parent ) : get_adjacent_post( false, '', true ); + $next = get_adjacent_post( false, '', false ); + + if ( ! $next && ! $previous ) { + return; + } + ?> + <nav class="navigation post-navigation" role="navigation"> + <h1 class="screen-reader-text"><?php _e( 'Post navigation', 'twentythirteen' ); ?></h1> + <div class="nav-links"> + + <?php previous_post_link( '%link', _x( '<span class="meta-nav">←</span> %title', 'Previous post link', 'twentythirteen' ) ); ?> + <?php next_post_link( '%link', _x( '%title <span class="meta-nav">→</span>', 'Next post link', 'twentythirteen' ) ); ?> + + </div><!-- .nav-links --> + </nav><!-- .navigation --> + <?php + } +endif; + +if ( ! function_exists( 'twentythirteen_entry_meta' ) ) : + /** + * Print HTML with meta information for current post: categories, tags, permalink, author, and date. + * + * Create your own twentythirteen_entry_meta() to override in a child theme. + * + * @since Twenty Thirteen 1.0 + */ + function twentythirteen_entry_meta() { + if ( is_sticky() && is_home() && ! is_paged() ) { + echo '<span class="featured-post">' . esc_html__( 'Sticky', 'twentythirteen' ) . '</span>'; + } + + if ( ! has_post_format( 'link' ) && 'post' === get_post_type() ) { + twentythirteen_entry_date(); + } + + /* translators: Used between list items, there is a space after the comma. */ + $categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) ); + if ( $categories_list ) { + echo '<span class="categories-links">' . $categories_list . '</span>'; + } + + /* translators: Used between list items, there is a space after the comma. */ + $tags_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) ); + if ( $tags_list && ! is_wp_error( $tags_list ) ) { + echo '<span class="tags-links">' . $tags_list . '</span>'; + } + + // Post author. + if ( 'post' === get_post_type() ) { + printf( + '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>', + esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), + /* translators: %s: Author display name. */ + esc_attr( sprintf( __( 'View all posts by %s', 'twentythirteen' ), get_the_author() ) ), + get_the_author() + ); + } + } +endif; + +if ( ! function_exists( 'twentythirteen_entry_date' ) ) : + /** + * Print HTML with date information for current post. + * + * Create your own twentythirteen_entry_date() to override in a child theme. + * + * @since Twenty Thirteen 1.0 + * + * @param bool $echo (optional) Whether to echo the date. Default true. + * @return string The HTML-formatted post date. + */ + function twentythirteen_entry_date( $echo = true ) { + if ( has_post_format( array( 'chat', 'status' ) ) ) { + /* translators: 1: Post format name, 2: Date. */ + $format_prefix = _x( '%1$s on %2$s', '1: post format name. 2: date', 'twentythirteen' ); + } else { + $format_prefix = '%2$s'; + } + + $date = sprintf( + '<span class="date"><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a></span>', + esc_url( get_permalink() ), + /* translators: %s: Post title. */ + esc_attr( sprintf( __( 'Permalink to %s', 'twentythirteen' ), the_title_attribute( 'echo=0' ) ) ), + esc_attr( get_the_date( 'c' ) ), + esc_html( sprintf( $format_prefix, get_post_format_string( get_post_format() ), get_the_date() ) ) + ); + + if ( $echo ) { + echo $date; + } + + return $date; + } +endif; + +if ( ! function_exists( 'twentythirteen_the_attached_image' ) ) : + /** + * Print the attached image with a link to the next attached image. + * + * @since Twenty Thirteen 1.0 + */ + function twentythirteen_the_attached_image() { + /** + * Filters the image attachment size to use. + * + * @since Twenty thirteen 1.0 + * + * @param array $size { + * @type int The attachment height in pixels. + * @type int The attachment width in pixels. + * } + */ + $attachment_size = apply_filters( 'twentythirteen_attachment_size', array( 724, 724 ) ); + $next_attachment_url = wp_get_attachment_url(); + $post = get_post(); + + /* + * Grab the IDs of all the image attachments in a gallery so we can get the URL + * of the next adjacent image in a gallery, or the first image (if we're + * looking at the last image in a gallery), or, in a gallery of one, just the + * link to that image file. + */ + $attachment_ids = get_posts( + array( + 'post_parent' => $post->post_parent, + 'fields' => 'ids', + 'numberposts' => -1, + 'post_status' => 'inherit', + 'post_type' => 'attachment', + 'post_mime_type' => 'image', + 'order' => 'ASC', + 'orderby' => 'menu_order ID', + ) + ); + + // If there is more than 1 attachment in a gallery... + if ( count( $attachment_ids ) > 1 ) { + foreach ( $attachment_ids as $idx => $attachment_id ) { + if ( $attachment_id == $post->ID ) { + $next_id = $attachment_ids[ ( $idx + 1 ) % count( $attachment_ids ) ]; + break; + } + } + + if ( $next_id ) { + // ...get the URL of the next image attachment. + $next_attachment_url = get_attachment_link( $next_id ); + } else { + // ...or get the URL of the first image attachment. + $next_attachment_url = get_attachment_link( reset( $attachment_ids ) ); + } + } + + printf( + '<a href="%1$s" title="%2$s" rel="attachment">%3$s</a>', + esc_url( $next_attachment_url ), + the_title_attribute( array( 'echo' => false ) ), + wp_get_attachment_image( $post->ID, $attachment_size ) + ); + } +endif; + +/** + * Return the post URL. + * + * @uses get_url_in_content() to get the URL in the post meta (if it exists) or + * the first link found in the post content. + * + * Falls back to the post permalink if no URL is found in the post. + * + * @since Twenty Thirteen 1.0 + * + * @return string The Link format URL. + */ +function twentythirteen_get_link_url() { + $content = get_the_content(); + $has_url = get_url_in_content( $content ); + + return ( $has_url ) ? $has_url : apply_filters( 'the_permalink', get_permalink() ); +} + +if ( ! function_exists( 'twentythirteen_excerpt_more' ) && ! is_admin() ) : + /** + * Replaces "[...]" (appended to automatically generated excerpts) with ... + * and a Continue reading link. + * + * @since Twenty Thirteen 1.4 + * + * @param string $more Default Read More excerpt link. + * @return string Filtered Read More excerpt link. + */ + function twentythirteen_excerpt_more( $more ) { + $link = sprintf( + '<a href="%1$s" class="more-link">%2$s</a>', + esc_url( get_permalink( get_the_ID() ) ), + /* translators: %s: Post title. */ + sprintf( __( 'Continue reading %s <span class="meta-nav">→</span>', 'twentythirteen' ), '<span class="screen-reader-text">' . get_the_title( get_the_ID() ) . '</span>' ) + ); + return ' … ' . $link; + } + add_filter( 'excerpt_more', 'twentythirteen_excerpt_more' ); +endif; + +/** + * Extend the default WordPress body classes. + * + * Adds body classes to denote: + * 1. Single or multiple authors. + * 2. Active widgets in the sidebar to change the layout and spacing. + * 3. When avatars are disabled in discussion settings. + * + * @since Twenty Thirteen 1.0 + * + * @param array $classes A list of existing body class values. + * @return array The filtered body class list. + */ +function twentythirteen_body_class( $classes ) { + if ( ! is_multi_author() ) { + $classes[] = 'single-author'; + } + + if ( is_active_sidebar( 'sidebar-2' ) && ! is_attachment() && ! is_404() ) { + $classes[] = 'sidebar'; + } + + if ( ! get_option( 'show_avatars' ) ) { + $classes[] = 'no-avatars'; + } + + return $classes; +} +add_filter( 'body_class', 'twentythirteen_body_class' ); + +/** + * Adjust content_width value for video post formats and attachment templates. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_content_width() { + global $content_width; + + if ( is_attachment() ) { + $content_width = 724; + } elseif ( has_post_format( 'audio' ) ) { + $content_width = 484; + } +} +add_action( 'template_redirect', 'twentythirteen_content_width' ); + +/** + * Add postMessage support for site title and description for the Customizer. + * + * @since Twenty Thirteen 1.0 + * + * @param WP_Customize_Manager $wp_customize Customizer object. + */ +function twentythirteen_customize_register( $wp_customize ) { + $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; + $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; + $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; + + if ( isset( $wp_customize->selective_refresh ) ) { + $wp_customize->selective_refresh->add_partial( + 'blogname', + array( + 'selector' => '.site-title', + 'container_inclusive' => false, + 'render_callback' => 'twentythirteen_customize_partial_blogname', + ) + ); + $wp_customize->selective_refresh->add_partial( + 'blogdescription', + array( + 'selector' => '.site-description', + 'container_inclusive' => false, + 'render_callback' => 'twentythirteen_customize_partial_blogdescription', + ) + ); + } +} +add_action( 'customize_register', 'twentythirteen_customize_register' ); + +/** + * Render the site title for the selective refresh partial. + * + * @since Twenty Thirteen 1.9 + * @see twentythirteen_customize_register() + * + * @return void + */ +function twentythirteen_customize_partial_blogname() { + bloginfo( 'name' ); +} + +/** + * Render the site tagline for the selective refresh partial. + * + * @since Twenty Thirteen 1.9 + * @see twentythirteen_customize_register() + * + * @return void + */ +function twentythirteen_customize_partial_blogdescription() { + bloginfo( 'description' ); +} + +/** + * Enqueue Javascript postMessage handlers for the Customizer. + * + * Binds JavaScript handlers to make the Customizer preview + * reload changes asynchronously. + * + * @since Twenty Thirteen 1.0 + */ +function twentythirteen_customize_preview_js() { + wp_enqueue_script( 'twentythirteen-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20141120', true ); +} +add_action( 'customize_preview_init', 'twentythirteen_customize_preview_js' ); + +/** + * Modifies tag cloud widget arguments to display all tags in the same font size + * and use list format for better accessibility. + * + * @since Twenty Thirteen 2.3 + * + * @param array $args Arguments for tag cloud widget. + * @return array The filtered arguments for tag cloud widget. + */ +function twentythirteen_widget_tag_cloud_args( $args ) { + $args['largest'] = 22; + $args['smallest'] = 8; + $args['unit'] = 'pt'; + $args['format'] = 'list'; + + return $args; +} +add_filter( 'widget_tag_cloud_args', 'twentythirteen_widget_tag_cloud_args' ); + +/** + * Prevents `author-bio.php` partial template from interfering with rendering + * an author archive of a user with the `bio` username. + * + * @since Twenty Thirteen 3.0 + * + * @param string $template Template file. + * @return string Replacement template file. + */ +function twentythirteen_author_bio_template( $template ) { + if ( is_author() ) { + $author = get_queried_object(); + if ( $author instanceof WP_User && 'bio' === $author->user_nicename ) { + // Use author templates if exist, fall back to template hierarchy otherwise. + return locate_template( array( "author-{$author->ID}.php", 'author.php' ) ); + } + } + + return $template; +} +add_filter( 'author_template', 'twentythirteen_author_bio_template' ); + +if ( ! function_exists( 'wp_body_open' ) ) : + /** + * Fire the wp_body_open action. + * + * Added for backward compatibility to support pre-5.2.0 WordPress versions. + * + * @since Twenty Thirteen 2.8 + */ + function wp_body_open() { + /** + * Triggered after the opening <body> tag. + * + * @since Twenty Thirteen 2.8 + */ + do_action( 'wp_body_open' ); + } +endif; diff --git a/wp-content/themes/twentytwelve/functions.php b/wp-content/themes/twentytwelve/functions.php index 8228b837243b7d6fb294172e9978246ddd5f6884..ca85a51fbfd3ed6d45514e35ff804b317cae357e 100644 --- a/wp-content/themes/twentytwelve/functions.php +++ b/wp-content/themes/twentytwelve/functions.php @@ -1,723 +1,699 @@ -<?php -/** - * Twenty Twelve functions and definitions - * - * Sets up the theme and provides some helper functions, which are used - * in the theme as custom template tags. Others are attached to action and - * filter hooks in WordPress to change core functionality. - * - * When using a child theme you can override certain functions (those wrapped - * in a function_exists() call) by defining them first in your child theme's - * functions.php file. The child theme's functions.php file is included before - * the parent theme's file, so the child theme functions would be used. - * - * @link https://developer.wordpress.org/themes/basics/theme-functions/ - * @link https://developer.wordpress.org/themes/advanced-topics/child-themes/ - * - * Functions that are not pluggable (not wrapped in function_exists()) are instead attached - * to a filter or action hook. - * - * For more information on hooks, actions, and filters, @link https://developer.wordpress.org/plugins/ - * - * @package WordPress - * @subpackage Twenty_Twelve - * @since Twenty Twelve 1.0 - */ - -// Set up the content width value based on the theme's design and stylesheet. -if ( ! isset( $content_width ) ) { - $content_width = 625; -} - -/** - * Twenty Twelve setup. - * - * Sets up theme defaults and registers the various WordPress features that - * Twenty Twelve supports. - * - * @uses load_theme_textdomain() For translation/localization support. - * @uses add_editor_style() To add a Visual Editor stylesheet. - * @uses add_theme_support() To add support for post thumbnails, automatic feed links, - * custom background, and post formats. - * @uses register_nav_menu() To add support for navigation menus. - * @uses set_post_thumbnail_size() To set a custom post thumbnail size. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_setup() { - /* - * Makes Twenty Twelve available for translation. - * - * Translations can be filed at WordPress.org. See: https://translate.wordpress.org/projects/wp-themes/twentytwelve - * If you're building a theme based on Twenty Twelve, use a find and replace - * to change 'twentytwelve' to the name of your theme in all the template files. - */ - load_theme_textdomain( 'twentytwelve' ); - - // This theme styles the visual editor with editor-style.css to match the theme style. - add_editor_style(); - - // Load regular editor styles into the new block-based editor. - add_theme_support( 'editor-styles' ); - - // Load default block styles. - add_theme_support( 'wp-block-styles' ); - - // Add support for responsive embeds. - add_theme_support( 'responsive-embeds' ); - - // Add support for custom color scheme. - add_theme_support( - 'editor-color-palette', - array( - array( - 'name' => __( 'Blue', 'twentytwelve' ), - 'slug' => 'blue', - 'color' => '#21759b', - ), - array( - 'name' => __( 'Dark Gray', 'twentytwelve' ), - 'slug' => 'dark-gray', - 'color' => '#444', - ), - array( - 'name' => __( 'Medium Gray', 'twentytwelve' ), - 'slug' => 'medium-gray', - 'color' => '#9f9f9f', - ), - array( - 'name' => __( 'Light Gray', 'twentytwelve' ), - 'slug' => 'light-gray', - 'color' => '#e6e6e6', - ), - array( - 'name' => __( 'White', 'twentytwelve' ), - 'slug' => 'white', - 'color' => '#fff', - ), - ) - ); - - // Adds RSS feed links to <head> for posts and comments. - add_theme_support( 'automatic-feed-links' ); - - // This theme supports a variety of post formats. - add_theme_support( 'post-formats', array( 'aside', 'image', 'link', 'quote', 'status' ) ); - - // This theme uses wp_nav_menu() in one location. - register_nav_menu( 'primary', __( 'Primary Menu', 'twentytwelve' ) ); - - /* - * This theme supports custom background color and image, - * and here we also set up the default background color. - */ - add_theme_support( - 'custom-background', - array( - 'default-color' => 'e6e6e6', - ) - ); - - // This theme uses a custom image size for featured images, displayed on "standard" posts. - add_theme_support( 'post-thumbnails' ); - set_post_thumbnail_size( 624, 9999 ); // Unlimited height, soft crop. - - // Indicate widget sidebars can use selective refresh in the Customizer. - add_theme_support( 'customize-selective-refresh-widgets' ); -} -add_action( 'after_setup_theme', 'twentytwelve_setup' ); - -/** - * Add support for a custom header image. - */ -require get_template_directory() . '/inc/custom-header.php'; - -/** - * Return the Google font stylesheet URL if available. - * - * The use of Open Sans by default is localized. For languages that use - * characters not supported by the font, the font can be disabled. - * - * @since Twenty Twelve 1.2 - * - * @return string Font stylesheet or empty string if disabled. - */ -function twentytwelve_get_font_url() { - $font_url = ''; - - /* - * translators: If there are characters in your language that are not supported - * by Open Sans, translate this to 'off'. Do not translate into your own language. - */ - /* if ( 'off' !== _x( 'on', 'Open Sans font: on or off', 'twentytwelve' ) ) { - $subsets = 'latin,latin-ext';*/ - - /* - * translators: To add an additional Open Sans character subset specific to your language, - * translate this to 'greek', 'cyrillic' or 'vietnamese'. Do not translate into your own language. - */ - /*$subset = _x( 'no-subset', 'Open Sans font: add new subset (greek, cyrillic, vietnamese)', 'twentytwelve' ); - - if ( 'cyrillic' == $subset ) { - $subsets .= ',cyrillic,cyrillic-ext'; - } elseif ( 'greek' == $subset ) { - $subsets .= ',greek,greek-ext'; - } elseif ( 'vietnamese' == $subset ) { - $subsets .= ',vietnamese'; - } - - $query_args = array( - 'family' => urlencode( 'Open Sans:400italic,700italic,400,700' ), - 'subset' => urlencode( $subsets ), - 'display' => urlencode( 'fallback' ), - ); - $font_url = add_query_arg( $query_args, '' ); - }*/ -/* AI fix - REMOVED GoogleApis*/ - - return $font_url; -} - -/** - * Enqueue scripts and styles for front end. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_scripts_styles() { - global $wp_styles; - - /* - * Adds JavaScript to pages with the comment form to support - * sites with threaded comments (when in use). - */ - if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { - wp_enqueue_script( 'comment-reply' ); - } - - // Adds JavaScript for handling the navigation menu hide-and-show behavior. - wp_enqueue_script( 'twentytwelve-navigation', get_template_directory_uri() . '/js/navigation.js', array( 'jquery' ), '20141205', true ); - - $font_url = twentytwelve_get_font_url(); - if ( ! empty( $font_url ) ) { - wp_enqueue_style( 'twentytwelve-fonts', esc_url_raw( $font_url ), array(), null ); - } - - // Loads our main stylesheet. - wp_enqueue_style( 'twentytwelve-style', get_stylesheet_uri(), array(), '20190507' ); - - // Theme block stylesheet. - wp_enqueue_style( 'twentytwelve-block-style', get_template_directory_uri() . '/css/blocks.css', array( 'twentytwelve-style' ), '20190406' ); - - // Loads the Internet Explorer specific stylesheet. - wp_enqueue_style( 'twentytwelve-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentytwelve-style' ), '20150214' ); - $wp_styles->add_data( 'twentytwelve-ie', 'conditional', 'lt IE 9' ); -} -add_action( 'wp_enqueue_scripts', 'twentytwelve_scripts_styles' ); - -/** - * Enqueue styles for the block-based editor. - * - * @since Twenty Twelve 2.6 - */ -function twentytwelve_block_editor_styles() { - // Block styles. - wp_enqueue_style( 'twentytwelve-block-editor-style', get_template_directory_uri() . '/css/editor-blocks.css', array(), '20190406' ); - // Add custom fonts. - wp_enqueue_style( 'twentytwelve-fonts', twentytwelve_get_font_url(), array(), null ); -} -add_action( 'enqueue_block_editor_assets', 'twentytwelve_block_editor_styles' ); - -/** - * Add preconnect for Google Fonts. - * - * @since Twenty Twelve 2.2 - * - * @param array $urls URLs to print for resource hints. - * @param string $relation_type The relation type the URLs are printed. - * @return array URLs to print for resource hints. - */ -function twentytwelve_resource_hints( $urls, $relation_type ) { - if ( wp_style_is( 'twentytwelve-fonts', 'queue' ) && 'preconnect' === $relation_type ) { - if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '>=' ) ) { - $urls[] = array( - 'href' => '', - 'crossorigin', - ); - } else { - $urls[] = ''; - /*AI fix - font google*/ - } - } - - return $urls; -} -add_filter( 'wp_resource_hints', 'twentytwelve_resource_hints', 10, 2 ); - -/** - * Filter TinyMCE CSS path to include Google Fonts. - * - * Adds additional stylesheets to the TinyMCE editor if needed. - * - * @uses twentytwelve_get_font_url() To get the Google Font stylesheet URL. - * - * @since Twenty Twelve 1.2 - * - * @param string $mce_css CSS path to load in TinyMCE. - * @return string Filtered CSS path. - */ -function twentytwelve_mce_css( $mce_css ) { - $font_url = twentytwelve_get_font_url(); - - if ( empty( $font_url ) ) { - return $mce_css; - } - - if ( ! empty( $mce_css ) ) { - $mce_css .= ','; - } - - $mce_css .= esc_url_raw( str_replace( ',', '%2C', $font_url ) ); - - return $mce_css; -} -add_filter( 'mce_css', 'twentytwelve_mce_css' ); - -/** - * Filter the page title. - * - * Creates a nicely formatted and more specific title element text - * for output in head of document, based on current view. - * - * @since Twenty Twelve 1.0 - * - * @param string $title Default title text for current view. - * @param string $sep Optional separator. - * @return string Filtered title. - */ -function twentytwelve_wp_title( $title, $sep ) { - global $paged, $page; - - if ( is_feed() ) { - return $title; - } - - // Add the site name. - $title .= get_bloginfo( 'name', 'display' ); - - // Add the site description for the home/front page. - $site_description = get_bloginfo( 'description', 'display' ); - if ( $site_description && ( is_home() || is_front_page() ) ) { - $title = "$title $sep $site_description"; - } - - // Add a page number if necessary. - if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) { - /* translators: %s: Page number. */ - $title = "$title $sep " . sprintf( __( 'Page %s', 'twentytwelve' ), max( $paged, $page ) ); - } - - return $title; -} -add_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 ); - -/** - * Filter the page menu arguments. - * - * Makes our wp_nav_menu() fallback -- wp_page_menu() -- show a home link. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_page_menu_args( $args ) { - if ( ! isset( $args['show_home'] ) ) { - $args['show_home'] = true; - } - return $args; -} -add_filter( 'wp_page_menu_args', 'twentytwelve_page_menu_args' ); - -/** - * Register sidebars. - * - * Registers our main widget area and the front page widget areas. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_widgets_init() { - register_sidebar( - array( - 'name' => __( 'Main Sidebar', 'twentytwelve' ), - 'id' => 'sidebar-1', - 'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ), - 'before_widget' => '<aside id="%1$s" class="widget %2$s">', - 'after_widget' => '</aside>', - 'before_title' => '<h3 class="widget-title">', - 'after_title' => '</h3>', - ) - ); - - register_sidebar( - array( - 'name' => __( 'First Front Page Widget Area', 'twentytwelve' ), - 'id' => 'sidebar-2', - 'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ), - 'before_widget' => '<aside id="%1$s" class="widget %2$s">', - 'after_widget' => '</aside>', - 'before_title' => '<h3 class="widget-title">', - 'after_title' => '</h3>', - ) - ); - - register_sidebar( - array( - 'name' => __( 'Second Front Page Widget Area', 'twentytwelve' ), - 'id' => 'sidebar-3', - 'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ), - 'before_widget' => '<aside id="%1$s" class="widget %2$s">', - 'after_widget' => '</aside>', - 'before_title' => '<h3 class="widget-title">', - 'after_title' => '</h3>', - ) - ); -} -add_action( 'widgets_init', 'twentytwelve_widgets_init' ); - -if ( ! function_exists( 'twentytwelve_content_nav' ) ) : - /** - * Displays navigation to next/previous pages when applicable. - * - * @since Twenty Twelve 1.0 - */ - function twentytwelve_content_nav( $html_id ) { - global $wp_query; - - if ( $wp_query->max_num_pages > 1 ) : ?> - <nav id="<?php echo esc_attr( $html_id ); ?>" class="navigation" role="navigation"> - <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3> - <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentytwelve' ) ); ?></div> - <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentytwelve' ) ); ?></div> - </nav><!-- .navigation --> - <?php - endif; - } -endif; - -if ( ! function_exists( 'twentytwelve_comment' ) ) : - /** - * Template for comments and pingbacks. - * - * To override this walker in a child theme without modifying the comments template - * simply create your own twentytwelve_comment(), and that function will be used instead. - * - * Used as a callback by wp_list_comments() for displaying the comments. - * - * @since Twenty Twelve 1.0 - */ - function twentytwelve_comment( $comment, $args, $depth ) { - $GLOBALS['comment'] = $comment; - switch ( $comment->comment_type ) : - case 'pingback': - case 'trackback': - // Display trackbacks differently than normal comments. - ?> - <li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>"> - <p><?php _e( 'Pingback:', 'twentytwelve' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( '(Edit)', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?></p> - <?php - break; - default: - // Proceed with normal comments. - global $post; - ?> - <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>"> - <article id="comment-<?php comment_ID(); ?>" class="comment"> - <header class="comment-meta comment-author vcard"> - <?php - echo get_avatar( $comment, 44 ); - printf( - '<cite><b class="fn">%1$s</b> %2$s</cite>', - get_comment_author_link(), - // If current post author is also comment author, make it known visually. - ( $comment->user_id === $post->post_author ) ? '<span>' . __( 'Post author', 'twentytwelve' ) . '</span>' : '' - ); - printf( - '<a href="%1$s"><time datetime="%2$s">%3$s</time></a>', - esc_url( get_comment_link( $comment->comment_ID ) ), - get_comment_time( 'c' ), - /* translators: 1: Date, 2: Time. */ - sprintf( __( '%1$s at %2$s', 'twentytwelve' ), get_comment_date(), get_comment_time() ) - ); - ?> - </header><!-- .comment-meta --> - - <?php - $commenter = wp_get_current_commenter(); - if ( $commenter['comment_author_email'] ) { - $moderation_note = __( 'Your comment is awaiting moderation.', 'twentytwelve' ); - } else { - $moderation_note = __( 'Your comment is awaiting moderation. This is a preview, your comment will be visible after it has been approved.', 'twentytwelve' ); - } - ?> - - <?php if ( '0' == $comment->comment_approved ) : ?> - <p class="comment-awaiting-moderation"><?php echo $moderation_note; ?></p> - <?php endif; ?> - - <section class="comment-content comment"> - <?php comment_text(); ?> - <?php edit_comment_link( __( 'Edit', 'twentytwelve' ), '<p class="edit-link">', '</p>' ); ?> - </section><!-- .comment-content --> - - <div class="reply"> - <?php - comment_reply_link( - array_merge( - $args, - array( - 'reply_text' => __( 'Reply', 'twentytwelve' ), - 'after' => ' <span>↓</span>', - 'depth' => $depth, - 'max_depth' => $args['max_depth'], - ) - ) - ); - ?> - </div><!-- .reply --> - </article><!-- #comment-## --> - <?php - break; - endswitch; // End comment_type check. - } -endif; - -if ( ! function_exists( 'twentytwelve_entry_meta' ) ) : - /** - * Set up post entry meta. - * - * Prints HTML with meta information for current post: categories, tags, permalink, author, and date. - * - * Create your own twentytwelve_entry_meta() to override in a child theme. - * - * @since Twenty Twelve 1.0 - */ - function twentytwelve_entry_meta() { - /* translators: Used between list items, there is a space after the comma. */ - $categories_list = get_the_category_list( __( ', ', 'twentytwelve' ) ); - - /* translators: Used between list items, there is a space after the comma. */ - $tag_list = get_the_tag_list( '', __( ', ', 'twentytwelve' ) ); - - $date = sprintf( - '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a>', - esc_url( get_permalink() ), - esc_attr( get_the_time() ), - esc_attr( get_the_date( 'c' ) ), - esc_html( get_the_date() ) - ); - - $author = sprintf( - '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>', - esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), - /* translators: %s: Author display name. */ - esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ), - get_the_author() - ); - - if ( $tags_list && ! is_wp_error( $tags_list ) ) { - /* translators: 1: Category name, 2: Tag name, 3: Date, 4: Author display name. */ - $utility_text = __( 'This entry was posted in %1$s and tagged %2$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); - } elseif ( $categories_list ) { - /* translators: 1: Category name, 3: Date, 4: Author display name. */ - $utility_text = __( 'This entry was posted in %1$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); - } else { - /* translators: 3: Date, 4: Author display name. */ - $utility_text = __( 'This entry was posted on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); - } - - printf( - $utility_text, - $categories_list, - $tag_list, - $date, - $author - ); - } -endif; - -/** - * Extend the default WordPress body classes. - * - * Extends the default WordPress body class to denote: - * 1. Using a full-width layout, when no active widgets in the sidebar - * or full-width template. - * 2. Front Page template: thumbnail in use and number of sidebars for - * widget areas. - * 3. White or empty background color to change the layout and spacing. - * 4. Custom fonts enabled. - * 5. Single or multiple authors. - * - * @since Twenty Twelve 1.0 - * - * @param array $classes Existing class values. - * @return array Filtered class values. - */ -function twentytwelve_body_class( $classes ) { - $background_color = get_background_color(); - $background_image = get_background_image(); - - if ( ! is_active_sidebar( 'sidebar-1' ) || is_page_template( 'page-templates/full-width.php' ) ) { - $classes[] = 'full-width'; - } - - if ( is_page_template( 'page-templates/front-page.php' ) ) { - $classes[] = 'template-front-page'; - if ( has_post_thumbnail() ) { - $classes[] = 'has-post-thumbnail'; - } - if ( is_active_sidebar( 'sidebar-2' ) && is_active_sidebar( 'sidebar-3' ) ) { - $classes[] = 'two-sidebars'; - } - } - - if ( empty( $background_image ) ) { - if ( empty( $background_color ) ) { - $classes[] = 'custom-background-empty'; - } elseif ( in_array( $background_color, array( 'fff', 'ffffff' ) ) ) { - $classes[] = 'custom-background-white'; - } - } - - // Enable custom font class only if the font CSS is queued to load. - if ( wp_style_is( 'twentytwelve-fonts', 'queue' ) ) { - $classes[] = 'custom-font-enabled'; - } - - if ( ! is_multi_author() ) { - $classes[] = 'single-author'; - } - - return $classes; -} -add_filter( 'body_class', 'twentytwelve_body_class' ); - -/** - * Adjust content width in certain contexts. - * - * Adjusts content_width value for full-width and single image attachment - * templates, and when there are no active widgets in the sidebar. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_content_width() { - if ( is_page_template( 'page-templates/full-width.php' ) || is_attachment() || ! is_active_sidebar( 'sidebar-1' ) ) { - global $content_width; - $content_width = 960; - } -} -add_action( 'template_redirect', 'twentytwelve_content_width' ); - -/** - * Register postMessage support. - * - * Add postMessage support for site title and description for the Customizer. - * - * @since Twenty Twelve 1.0 - * - * @param WP_Customize_Manager $wp_customize Customizer object. - */ -function twentytwelve_customize_register( $wp_customize ) { - $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; - $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; - $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; - - if ( isset( $wp_customize->selective_refresh ) ) { - $wp_customize->selective_refresh->add_partial( - 'blogname', - array( - 'selector' => '.site-title > a', - 'container_inclusive' => false, - 'render_callback' => 'twentytwelve_customize_partial_blogname', - ) - ); - $wp_customize->selective_refresh->add_partial( - 'blogdescription', - array( - 'selector' => '.site-description', - 'container_inclusive' => false, - 'render_callback' => 'twentytwelve_customize_partial_blogdescription', - ) - ); - } -} -add_action( 'customize_register', 'twentytwelve_customize_register' ); - -/** - * Render the site title for the selective refresh partial. - * - * @since Twenty Twelve 2.0 - * @see twentytwelve_customize_register() - * - * @return void - */ -function twentytwelve_customize_partial_blogname() { - bloginfo( 'name' ); -} - -/** - * Render the site tagline for the selective refresh partial. - * - * @since Twenty Twelve 2.0 - * @see twentytwelve_customize_register() - * - * @return void - */ -function twentytwelve_customize_partial_blogdescription() { - bloginfo( 'description' ); -} - -/** - * Enqueue Javascript postMessage handlers for the Customizer. - * - * Binds JS handlers to make the Customizer preview reload changes asynchronously. - * - * @since Twenty Twelve 1.0 - */ -function twentytwelve_customize_preview_js() { - wp_enqueue_script( 'twentytwelve-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20141120', true ); -} -add_action( 'customize_preview_init', 'twentytwelve_customize_preview_js' ); - -/** - * Modifies tag cloud widget arguments to display all tags in the same font size - * and use list format for better accessibility. - * - * @since Twenty Twelve 2.4 - * - * @param array $args Arguments for tag cloud widget. - * @return array The filtered arguments for tag cloud widget. - */ -function twentytwelve_widget_tag_cloud_args( $args ) { - $args['largest'] = 22; - $args['smallest'] = 8; - $args['unit'] = 'pt'; - $args['format'] = 'list'; - - return $args; -} -add_filter( 'widget_tag_cloud_args', 'twentytwelve_widget_tag_cloud_args' ); - -if ( ! function_exists( 'wp_body_open' ) ) : - /** - * Fire the wp_body_open action. - * - * Added for backward compatibility to support pre-5.2.0 WordPress versions. - * - * @since Twenty Twelve 3.0 - */ - function wp_body_open() { - /** - * Triggered after the opening <body> tag. - * - * @since Twenty Twelve 3.0 - */ - do_action( 'wp_body_open' ); - } -endif; +<?php +/** + * Twenty Twelve functions and definitions + * + * Sets up the theme and provides some helper functions, which are used + * in the theme as custom template tags. Others are attached to action and + * filter hooks in WordPress to change core functionality. + * + * When using a child theme you can override certain functions (those wrapped + * in a function_exists() call) by defining them first in your child theme's + * functions.php file. The child theme's functions.php file is included before + * the parent theme's file, so the child theme functions would be used. + * + * @link https://developer.wordpress.org/themes/basics/theme-functions/ + * @link https://developer.wordpress.org/themes/advanced-topics/child-themes/ + * + * Functions that are not pluggable (not wrapped in function_exists()) are instead attached + * to a filter or action hook. + * + * For more information on hooks, actions, and filters, @link https://developer.wordpress.org/plugins/ + * + * @package WordPress + * @subpackage Twenty_Twelve + * @since Twenty Twelve 1.0 + */ + +// Set up the content width value based on the theme's design and stylesheet. +if ( ! isset( $content_width ) ) { + $content_width = 625; +} + +/** + * Twenty Twelve setup. + * + * Sets up theme defaults and registers the various WordPress features that + * Twenty Twelve supports. + * + * @uses load_theme_textdomain() For translation/localization support. + * @uses add_editor_style() To add a Visual Editor stylesheet. + * @uses add_theme_support() To add support for post thumbnails, automatic feed links, + * custom background, and post formats. + * @uses register_nav_menu() To add support for navigation menus. + * @uses set_post_thumbnail_size() To set a custom post thumbnail size. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_setup() { + /* + * Makes Twenty Twelve available for translation. + * + * Translations can be filed at WordPress.org. See: https://translate.wordpress.org/projects/wp-themes/twentytwelve + * If you're building a theme based on Twenty Twelve, use a find and replace + * to change 'twentytwelve' to the name of your theme in all the template files. + */ + load_theme_textdomain( 'twentytwelve' ); + + // This theme styles the visual editor with editor-style.css to match the theme style. + add_editor_style(); + + // Load regular editor styles into the new block-based editor. + add_theme_support( 'editor-styles' ); + + // Load default block styles. + add_theme_support( 'wp-block-styles' ); + + // Add support for responsive embeds. + add_theme_support( 'responsive-embeds' ); + + // Add support for custom color scheme. + add_theme_support( + 'editor-color-palette', + array( + array( + 'name' => __( 'Blue', 'twentytwelve' ), + 'slug' => 'blue', + 'color' => '#21759b', + ), + array( + 'name' => __( 'Dark Gray', 'twentytwelve' ), + 'slug' => 'dark-gray', + 'color' => '#444', + ), + array( + 'name' => __( 'Medium Gray', 'twentytwelve' ), + 'slug' => 'medium-gray', + 'color' => '#9f9f9f', + ), + array( + 'name' => __( 'Light Gray', 'twentytwelve' ), + 'slug' => 'light-gray', + 'color' => '#e6e6e6', + ), + array( + 'name' => __( 'White', 'twentytwelve' ), + 'slug' => 'white', + 'color' => '#fff', + ), + ) + ); + + // Adds RSS feed links to <head> for posts and comments. + add_theme_support( 'automatic-feed-links' ); + + // This theme supports a variety of post formats. + add_theme_support( 'post-formats', array( 'aside', 'image', 'link', 'quote', 'status' ) ); + + // This theme uses wp_nav_menu() in one location. + register_nav_menu( 'primary', __( 'Primary Menu', 'twentytwelve' ) ); + + /* + * This theme supports custom background color and image, + * and here we also set up the default background color. + */ + add_theme_support( + 'custom-background', + array( + 'default-color' => 'e6e6e6', + ) + ); + + // This theme uses a custom image size for featured images, displayed on "standard" posts. + add_theme_support( 'post-thumbnails' ); + set_post_thumbnail_size( 624, 9999 ); // Unlimited height, soft crop. + + // Indicate widget sidebars can use selective refresh in the Customizer. + add_theme_support( 'customize-selective-refresh-widgets' ); +} +add_action( 'after_setup_theme', 'twentytwelve_setup' ); + +/** + * Add support for a custom header image. + */ +require get_template_directory() . '/inc/custom-header.php'; + +/** + * Return the Google font stylesheet URL if available. + * + * The use of Open Sans by default is localized. For languages that use + * characters not supported by the font, the font can be disabled. + * + * @since Twenty Twelve 1.2 + * + * @return string Font stylesheet or empty string if disabled. + */ +function twentytwelve_get_font_url() { + $font_url = ''; + + /* AI fix - REMOVED GoogleApis*/ + + return $font_url; +} + +/** + * Enqueue scripts and styles for front end. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_scripts_styles() { + global $wp_styles; + + /* + * Adds JavaScript to pages with the comment form to support + * sites with threaded comments (when in use). + */ + if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { + wp_enqueue_script( 'comment-reply' ); + } + + // Adds JavaScript for handling the navigation menu hide-and-show behavior. + wp_enqueue_script( 'twentytwelve-navigation', get_template_directory_uri() . '/js/navigation.js', array( 'jquery' ), '20141205', true ); + + $font_url = twentytwelve_get_font_url(); + if ( ! empty( $font_url ) ) { + wp_enqueue_style( 'twentytwelve-fonts', esc_url_raw( $font_url ), array(), null ); + } + + // Loads our main stylesheet. + wp_enqueue_style( 'twentytwelve-style', get_stylesheet_uri(), array(), '20190507' ); + + // Theme block stylesheet. + wp_enqueue_style( 'twentytwelve-block-style', get_template_directory_uri() . '/css/blocks.css', array( 'twentytwelve-style' ), '20190406' ); + + // Loads the Internet Explorer specific stylesheet. + wp_enqueue_style( 'twentytwelve-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentytwelve-style' ), '20150214' ); + $wp_styles->add_data( 'twentytwelve-ie', 'conditional', 'lt IE 9' ); +} +add_action( 'wp_enqueue_scripts', 'twentytwelve_scripts_styles' ); + +/** + * Enqueue styles for the block-based editor. + * + * @since Twenty Twelve 2.6 + */ +function twentytwelve_block_editor_styles() { + // Block styles. + wp_enqueue_style( 'twentytwelve-block-editor-style', get_template_directory_uri() . '/css/editor-blocks.css', array(), '20190406' ); + // Add custom fonts. + wp_enqueue_style( 'twentytwelve-fonts', twentytwelve_get_font_url(), array(), null ); +} +add_action( 'enqueue_block_editor_assets', 'twentytwelve_block_editor_styles' ); + +/** + * Add preconnect for Google Fonts. + * + * @since Twenty Twelve 2.2 + * + * @param array $urls URLs to print for resource hints. + * @param string $relation_type The relation type the URLs are printed. + * @return array URLs to print for resource hints. + */ +/* AI removed google font*/ +/* +function twentytwelve_resource_hints( $urls, $relation_type ) { + if ( wp_style_is( 'twentytwelve-fonts', 'queue' ) && 'preconnect' === $relation_type ) { + if ( version_compare( $GLOBALS['wp_version'], '4.7-alpha', '>=' ) ) { + $urls[] = array( + 'href' => '', + 'crossorigin', + ); + } else { + $urls[] = ''; + /*AI fix - font google*/ + } + } + + return $urls; +} +add_filter( 'wp_resource_hints', 'twentytwelve_resource_hints', 10, 2 ); +*/ + +/** + * Filter TinyMCE CSS path to include Google Fonts. + * + * Adds additional stylesheets to the TinyMCE editor if needed. + * + * @uses twentytwelve_get_font_url() To get the Google Font stylesheet URL. + * + * @since Twenty Twelve 1.2 + * + * @param string $mce_css CSS path to load in TinyMCE. + * @return string Filtered CSS path. + */ +function twentytwelve_mce_css( $mce_css ) { + $font_url = twentytwelve_get_font_url(); + + if ( empty( $font_url ) ) { + return $mce_css; + } + + if ( ! empty( $mce_css ) ) { + $mce_css .= ','; + } + + $mce_css .= esc_url_raw( str_replace( ',', '%2C', $font_url ) ); + + return $mce_css; +} +add_filter( 'mce_css', 'twentytwelve_mce_css' ); + +/** + * Filter the page title. + * + * Creates a nicely formatted and more specific title element text + * for output in head of document, based on current view. + * + * @since Twenty Twelve 1.0 + * + * @param string $title Default title text for current view. + * @param string $sep Optional separator. + * @return string Filtered title. + */ +function twentytwelve_wp_title( $title, $sep ) { + global $paged, $page; + + if ( is_feed() ) { + return $title; + } + + // Add the site name. + $title .= get_bloginfo( 'name', 'display' ); + + // Add the site description for the home/front page. + $site_description = get_bloginfo( 'description', 'display' ); + if ( $site_description && ( is_home() || is_front_page() ) ) { + $title = "$title $sep $site_description"; + } + + // Add a page number if necessary. + if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) { + /* translators: %s: Page number. */ + $title = "$title $sep " . sprintf( __( 'Page %s', 'twentytwelve' ), max( $paged, $page ) ); + } + + return $title; +} +add_filter( 'wp_title', 'twentytwelve_wp_title', 10, 2 ); + +/** + * Filter the page menu arguments. + * + * Makes our wp_nav_menu() fallback -- wp_page_menu() -- show a home link. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_page_menu_args( $args ) { + if ( ! isset( $args['show_home'] ) ) { + $args['show_home'] = true; + } + return $args; +} +add_filter( 'wp_page_menu_args', 'twentytwelve_page_menu_args' ); + +/** + * Register sidebars. + * + * Registers our main widget area and the front page widget areas. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_widgets_init() { + register_sidebar( + array( + 'name' => __( 'Main Sidebar', 'twentytwelve' ), + 'id' => 'sidebar-1', + 'description' => __( 'Appears on posts and pages except the optional Front Page template, which has its own widgets', 'twentytwelve' ), + 'before_widget' => '<aside id="%1$s" class="widget %2$s">', + 'after_widget' => '</aside>', + 'before_title' => '<h3 class="widget-title">', + 'after_title' => '</h3>', + ) + ); + + register_sidebar( + array( + 'name' => __( 'First Front Page Widget Area', 'twentytwelve' ), + 'id' => 'sidebar-2', + 'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ), + 'before_widget' => '<aside id="%1$s" class="widget %2$s">', + 'after_widget' => '</aside>', + 'before_title' => '<h3 class="widget-title">', + 'after_title' => '</h3>', + ) + ); + + register_sidebar( + array( + 'name' => __( 'Second Front Page Widget Area', 'twentytwelve' ), + 'id' => 'sidebar-3', + 'description' => __( 'Appears when using the optional Front Page template with a page set as Static Front Page', 'twentytwelve' ), + 'before_widget' => '<aside id="%1$s" class="widget %2$s">', + 'after_widget' => '</aside>', + 'before_title' => '<h3 class="widget-title">', + 'after_title' => '</h3>', + ) + ); +} +add_action( 'widgets_init', 'twentytwelve_widgets_init' ); + +if ( ! function_exists( 'twentytwelve_content_nav' ) ) : + /** + * Displays navigation to next/previous pages when applicable. + * + * @since Twenty Twelve 1.0 + */ + function twentytwelve_content_nav( $html_id ) { + global $wp_query; + + if ( $wp_query->max_num_pages > 1 ) : ?> + <nav id="<?php echo esc_attr( $html_id ); ?>" class="navigation" role="navigation"> + <h3 class="assistive-text"><?php _e( 'Post navigation', 'twentytwelve' ); ?></h3> + <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'twentytwelve' ) ); ?></div> + <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'twentytwelve' ) ); ?></div> + </nav><!-- .navigation --> + <?php + endif; + } +endif; + +if ( ! function_exists( 'twentytwelve_comment' ) ) : + /** + * Template for comments and pingbacks. + * + * To override this walker in a child theme without modifying the comments template + * simply create your own twentytwelve_comment(), and that function will be used instead. + * + * Used as a callback by wp_list_comments() for displaying the comments. + * + * @since Twenty Twelve 1.0 + */ + function twentytwelve_comment( $comment, $args, $depth ) { + $GLOBALS['comment'] = $comment; + switch ( $comment->comment_type ) : + case 'pingback': + case 'trackback': + // Display trackbacks differently than normal comments. + ?> + <li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>"> + <p><?php _e( 'Pingback:', 'twentytwelve' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( '(Edit)', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?></p> + <?php + break; + default: + // Proceed with normal comments. + global $post; + ?> + <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>"> + <article id="comment-<?php comment_ID(); ?>" class="comment"> + <header class="comment-meta comment-author vcard"> + <?php + echo get_avatar( $comment, 44 ); + printf( + '<cite><b class="fn">%1$s</b> %2$s</cite>', + get_comment_author_link(), + // If current post author is also comment author, make it known visually. + ( $comment->user_id === $post->post_author ) ? '<span>' . __( 'Post author', 'twentytwelve' ) . '</span>' : '' + ); + printf( + '<a href="%1$s"><time datetime="%2$s">%3$s</time></a>', + esc_url( get_comment_link( $comment->comment_ID ) ), + get_comment_time( 'c' ), + /* translators: 1: Date, 2: Time. */ + sprintf( __( '%1$s at %2$s', 'twentytwelve' ), get_comment_date(), get_comment_time() ) + ); + ?> + </header><!-- .comment-meta --> + + <?php + $commenter = wp_get_current_commenter(); + if ( $commenter['comment_author_email'] ) { + $moderation_note = __( 'Your comment is awaiting moderation.', 'twentytwelve' ); + } else { + $moderation_note = __( 'Your comment is awaiting moderation. This is a preview, your comment will be visible after it has been approved.', 'twentytwelve' ); + } + ?> + + <?php if ( '0' == $comment->comment_approved ) : ?> + <p class="comment-awaiting-moderation"><?php echo $moderation_note; ?></p> + <?php endif; ?> + + <section class="comment-content comment"> + <?php comment_text(); ?> + <?php edit_comment_link( __( 'Edit', 'twentytwelve' ), '<p class="edit-link">', '</p>' ); ?> + </section><!-- .comment-content --> + + <div class="reply"> + <?php + comment_reply_link( + array_merge( + $args, + array( + 'reply_text' => __( 'Reply', 'twentytwelve' ), + 'after' => ' <span>↓</span>', + 'depth' => $depth, + 'max_depth' => $args['max_depth'], + ) + ) + ); + ?> + </div><!-- .reply --> + </article><!-- #comment-## --> + <?php + break; + endswitch; // End comment_type check. + } +endif; + +if ( ! function_exists( 'twentytwelve_entry_meta' ) ) : + /** + * Set up post entry meta. + * + * Prints HTML with meta information for current post: categories, tags, permalink, author, and date. + * + * Create your own twentytwelve_entry_meta() to override in a child theme. + * + * @since Twenty Twelve 1.0 + */ + function twentytwelve_entry_meta() { + /* translators: Used between list items, there is a space after the comma. */ + $categories_list = get_the_category_list( __( ', ', 'twentytwelve' ) ); + + /* translators: Used between list items, there is a space after the comma. */ + $tag_list = get_the_tag_list( '', __( ', ', 'twentytwelve' ) ); + + $date = sprintf( + '<a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a>', + esc_url( get_permalink() ), + esc_attr( get_the_time() ), + esc_attr( get_the_date( 'c' ) ), + esc_html( get_the_date() ) + ); + + $author = sprintf( + '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>', + esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ), + /* translators: %s: Author display name. */ + esc_attr( sprintf( __( 'View all posts by %s', 'twentytwelve' ), get_the_author() ) ), + get_the_author() + ); + + // Translators: 1 is category, 2 is tag, 3 is the date and 4 is the author's name. + if ( $tag_list ) { + /* translators: 1: Category name, 2: Tag name, 3: Date, 4: Author display name. */ + $utility_text = __( 'This entry was posted in %1$s and tagged %2$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); + } elseif ( $categories_list ) { + /* translators: 1: Category name, 3: Date, 4: Author display name. */ + $utility_text = __( 'This entry was posted in %1$s on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); + } else { + /* translators: 3: Date, 4: Author display name. */ + $utility_text = __( 'This entry was posted on %3$s<span class="by-author"> by %4$s</span>.', 'twentytwelve' ); + } + + printf( + $utility_text, + $categories_list, + $tag_list, + $date, + $author + ); + } +endif; + +/** + * Extend the default WordPress body classes. + * + * Extends the default WordPress body class to denote: + * 1. Using a full-width layout, when no active widgets in the sidebar + * or full-width template. + * 2. Front Page template: thumbnail in use and number of sidebars for + * widget areas. + * 3. White or empty background color to change the layout and spacing. + * 4. Custom fonts enabled. + * 5. Single or multiple authors. + * + * @since Twenty Twelve 1.0 + * + * @param array $classes Existing class values. + * @return array Filtered class values. + */ +function twentytwelve_body_class( $classes ) { + $background_color = get_background_color(); + $background_image = get_background_image(); + + if ( ! is_active_sidebar( 'sidebar-1' ) || is_page_template( 'page-templates/full-width.php' ) ) { + $classes[] = 'full-width'; + } + + if ( is_page_template( 'page-templates/front-page.php' ) ) { + $classes[] = 'template-front-page'; + if ( has_post_thumbnail() ) { + $classes[] = 'has-post-thumbnail'; + } + if ( is_active_sidebar( 'sidebar-2' ) && is_active_sidebar( 'sidebar-3' ) ) { + $classes[] = 'two-sidebars'; + } + } + + if ( empty( $background_image ) ) { + if ( empty( $background_color ) ) { + $classes[] = 'custom-background-empty'; + } elseif ( in_array( $background_color, array( 'fff', 'ffffff' ) ) ) { + $classes[] = 'custom-background-white'; + } + } + + // Enable custom font class only if the font CSS is queued to load. + if ( wp_style_is( 'twentytwelve-fonts', 'queue' ) ) { + $classes[] = 'custom-font-enabled'; + } + + if ( ! is_multi_author() ) { + $classes[] = 'single-author'; + } + + return $classes; +} +add_filter( 'body_class', 'twentytwelve_body_class' ); + +/** + * Adjust content width in certain contexts. + * + * Adjusts content_width value for full-width and single image attachment + * templates, and when there are no active widgets in the sidebar. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_content_width() { + if ( is_page_template( 'page-templates/full-width.php' ) || is_attachment() || ! is_active_sidebar( 'sidebar-1' ) ) { + global $content_width; + $content_width = 960; + } +} +add_action( 'template_redirect', 'twentytwelve_content_width' ); + +/** + * Register postMessage support. + * + * Add postMessage support for site title and description for the Customizer. + * + * @since Twenty Twelve 1.0 + * + * @param WP_Customize_Manager $wp_customize Customizer object. + */ +function twentytwelve_customize_register( $wp_customize ) { + $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; + $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; + $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage'; + + if ( isset( $wp_customize->selective_refresh ) ) { + $wp_customize->selective_refresh->add_partial( + 'blogname', + array( + 'selector' => '.site-title > a', + 'container_inclusive' => false, + 'render_callback' => 'twentytwelve_customize_partial_blogname', + ) + ); + $wp_customize->selective_refresh->add_partial( + 'blogdescription', + array( + 'selector' => '.site-description', + 'container_inclusive' => false, + 'render_callback' => 'twentytwelve_customize_partial_blogdescription', + ) + ); + } +} +add_action( 'customize_register', 'twentytwelve_customize_register' ); + +/** + * Render the site title for the selective refresh partial. + * + * @since Twenty Twelve 2.0 + * @see twentytwelve_customize_register() + * + * @return void + */ +function twentytwelve_customize_partial_blogname() { + bloginfo( 'name' ); +} + +/** + * Render the site tagline for the selective refresh partial. + * + * @since Twenty Twelve 2.0 + * @see twentytwelve_customize_register() + * + * @return void + */ +function twentytwelve_customize_partial_blogdescription() { + bloginfo( 'description' ); +} + +/** + * Enqueue Javascript postMessage handlers for the Customizer. + * + * Binds JS handlers to make the Customizer preview reload changes asynchronously. + * + * @since Twenty Twelve 1.0 + */ +function twentytwelve_customize_preview_js() { + wp_enqueue_script( 'twentytwelve-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20141120', true ); +} +add_action( 'customize_preview_init', 'twentytwelve_customize_preview_js' ); + +/** + * Modifies tag cloud widget arguments to display all tags in the same font size + * and use list format for better accessibility. + * + * @since Twenty Twelve 2.4 + * + * @param array $args Arguments for tag cloud widget. + * @return array The filtered arguments for tag cloud widget. + */ +function twentytwelve_widget_tag_cloud_args( $args ) { + $args['largest'] = 22; + $args['smallest'] = 8; + $args['unit'] = 'pt'; + $args['format'] = 'list'; + + return $args; +} +add_filter( 'widget_tag_cloud_args', 'twentytwelve_widget_tag_cloud_args' ); + +if ( ! function_exists( 'wp_body_open' ) ) : + /** + * Fire the wp_body_open action. + * + * Added for backwards compatibility to support pre 5.2.0 WordPress versions. + * + * @since Twenty Twelve 3.0 + */ + function wp_body_open() { + /** + * Triggered after the opening <body> tag. + * + * @since Twenty Twelve 3.0 + */ + do_action( 'wp_body_open' ); + } +endif;