tag in the document head, and expect WordPress to * provide it for us. */ add_theme_support( 'title-tag' ); /* * 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' ); // This theme uses wp_nav_menu() in one location. register_nav_menus( array( 'menu-1' => esc_html__( 'Primary', 'analog' ), 'menu-2' => esc_html__( 'Secondary (no hierarchical entries)', 'analog' ) ) ); /* * Switch 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', ) ); // Set up the WordPress core custom background feature. add_theme_support( 'custom-background', apply_filters( 'analog_custom_background_args', array( 'default-color' => '8BC5DD', 'default-image' => '', ) ) ); // Add theme support for selective refresh for widgets. add_theme_support( 'customize-selective-refresh-widgets' ); /** * Add support for core custom logo. * * @link https://codex.wordpress.org/Theme_Logo */ add_theme_support( 'custom-logo', array( 'height' => 120, 'width' => 300, 'flex-width' => true, 'flex-height' => false, ) ); // responsive embeds add_theme_support( "responsive-embeds" ); // align wide add_theme_support( "align-wide" ); // block styles add_theme_support( "wp-block-styles" ); // refresh widgets add_theme_support( 'customize-selective-refresh-widgets' ); /** * Add editor style * * @link https://developer.wordpress.org/reference/functions/add_editor_style/ */ add_theme_support( 'editor-styles' ); add_editor_style( trailingslashit( get_template_directory_uri() ) . 'css/editor-style.css' ); /** * Add Custom font to editor style */ $selected_font = get_theme_mod( 'analog_typography_choices', 'ibm_plex_mono' ); $fonts = analog_fonts(); $font = sanitize_text_field( str_replace(" ", "+", $fonts[$selected_font] ) ); $font_url = str_replace( ',', '%2C', "//fonts.googleapis.com/css?family={$font}:400,400i,700,700i&display=swap" ); add_editor_style( $font_url ); } endif; add_action( 'after_setup_theme', 'analog_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 analog_content_width() { // This variable is intended to be overruled from themes. // Open WPCS issue: {@link https://github.com/WordPress-Coding-Standards/WordPress-Coding-Standards/issues/1043}. // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound $GLOBALS['content_width'] = apply_filters( 'analog_content_width', 640 ); } add_action( 'after_setup_theme', 'analog_content_width', 0 ); /** * Register widget area. * * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar */ function analog_widgets_init() { register_sidebar( array( 'name' => esc_html__( 'Sidebar', 'analog' ), 'id' => 'sidebar-1', 'description' => esc_html__( 'Add widgets here.', 'analog' ), 'before_widget' => '
', 'after_widget' => '
', 'before_title' => '

', 'after_title' => '

', ) ); } add_action( 'widgets_init', 'analog_widgets_init' ); /** * Normalize char size for tag cloud widget * * @var $args array * @return array */ function analog_set_tag_cloud_font_size($args) { // normalize size $args['smallest'] = 14; /* Set the smallest size to 14px */ $args['largest'] = 14; /* set the largest size to 14px */ return $args; } add_filter('widget_tag_cloud_args','analog_set_tag_cloud_font_size'); /** * Get font styles * * @return array */ function analog_get_font_styles() { $font_sw = analog_font_styles(); $capture = array(); foreach( $font_sw as $k => $v ) { $r = (bool) get_theme_mod( 'analog_sw_' . $k ); if( $r === true ) { $capture[] = $k; } } if( empty( $capture ) ) { $capture = ['400','400i','700','700i']; } return $capture; } /** * Enqueue scripts and styles. * * @return void */ function analog_scripts() { // load fontello wp_enqueue_style('analog-fontello', get_template_directory_uri() . '/assets/fontello/css/fontello.css' ); $font_styles = implode(',', analog_get_font_styles() ); // append font $selected_font = get_theme_mod( 'analog_typography_choices', 'ibm_plex_mono' ); if( $selected_font !== 'system_ui' ) { $fonts = analog_fonts(); $font = sanitize_text_field( str_replace(" ", "+", $fonts[$selected_font] ) ); $tag = sanitize_title( $fonts[$selected_font] ); $url = esc_url( "https://fonts.googleapis.com/css?family={$font}:{$font_styles}&display=swap" ); wp_enqueue_style( "analog-{$tag}", "{$url}"); } // get main style wp_enqueue_style( 'analog-style', get_stylesheet_uri() ); // css for device wp_enqueue_style( 'analog-device', get_template_directory_uri() . '/css/device.css' ); wp_enqueue_script( 'analog-menu-nav', get_template_directory_uri() . '/js/menu-nav.js', array('jquery'), '1.0', true ); wp_enqueue_script( 'analog-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20151215', true ); // thread comments if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } } add_action( 'wp_enqueue_scripts', 'analog_scripts' ); /** * Add inline css rules for AnaLog theme * * @return void */ function analog_inline_css() { // an empty array to transport css rules $analog_css_rules = array(); // add typography $selected_font = get_theme_mod( 'analog_typography_choices', 'ibm_plex_mono' ); $fonts = analog_fonts(); if( $selected_font !== 'system_ui' ) { $font = sanitize_text_field( $fonts[$selected_font] ); $fs = ''; $analog_css_rules[] = "body { font-family: \"{$font}\";{$fs} }"; } // font size $font_size = (string) get_theme_mod( 'analog_fontsize_choices', 'normal' ); if( $font_size !== 'normal') { switch( $font_size ) { case 'small': $size = "16px"; break; case 'big': $size = "20px"; break; } $analog_css_rules[] = "body { font-size: {$size}; }"; } // colors $analog_colors = analog_colors(); foreach( $analog_colors as $k => $v ) { $value = sanitize_hex_color( get_theme_mod( $k, $v['default'] ) ); $target = sanitize_text_field( $v['target'] ); $css = sanitize_text_field( $v['css'] ); $analog_css_rules[] = $target . ' {' . $css . ':' . $value . ';}'; if( $k === 'analog_content_link_color' ) { $hover = str_replace(' a', ' a:hover', $target ); $value = '#000; border-bottom: 1px dotted #000001;'; $analog_css_rules[] = $hover . ' {' . $css . ':' . $value . '}'; } } /** * Semi-transparent background */ if( !empty( $analog_css_rules ) ) { $analog_css_rules_string = implode( PHP_EOL, $analog_css_rules ); echo ''; } } add_action('wp_head', 'analog_inline_css', 9999 ); /** * Add inline js rules for AnaLog theme * * @return void */ function analog_inline_js() { if( (bool) get_theme_mod( 'analog_ico_link_enable', 0 ) === true ) { $default_exclude = analog_icon_links_target_not(); $target_exclude = trim( get_theme_mod('analog_ico_link_not', $default_exclude ) ); $only_external = get_theme_mod('analog_ico_link_ext', 0 ); ?> post_parent > 0 ) return true; return false; } /** * Filter html to allow only and html tag * * @return string */ function analog_html_filter( $value ) { return wp_kses( $value, array('strong' => array(), 'em' => array() ) ); } /** * Custom template tags for this theme. */ require get_template_directory() . '/inc/template-tags.php'; /** * Functions which enhance the theme by hooking into WordPress. */ require get_template_directory() . '/inc/template-functions.php'; /** * Customizer additions. */ require get_template_directory() . '/inc/customizer.php'; /** * Load Jetpack compatibility file. */ if ( defined( 'JETPACK__VERSION' ) ) { require get_template_directory() . '/inc/jetpack.php'; }