OwlCyberSecurity - MANAGER
Edit File: common-functions.php
<?php /** * Inspiro Lite: Common functions * * @package Inspiro * @subpackage Inspiro_Lite * @since Inspiro 1.0.0 */ /** * Get assets url depending on constant SCRIPT_DEBUG. * If value of this constant is `true` then theme will load unminified assets * * @since 1.0.0 * * @param string $filename The file name. * @param string $filetype The file type [css|js]. * @param string $folder The folder name. * @return string The full assets url. */ function inspiro_get_assets_uri( $filename, $filetype, $folder = 'assets/' ) { $assets_uri = ''; // Directory and Extension. $file_prefix = ( SCRIPT_DEBUG ) ? '' : '.min'; $dir_name = ( SCRIPT_DEBUG ) ? 'unminified' : 'minified'; $file_rtl = ( is_rtl() ) ? '-rtl' : ''; $css_uri = INSPIRO_THEME_URI . $folder . 'css/' . $dir_name . '/'; $js_uri = INSPIRO_THEME_URI . $folder . 'js/' . $dir_name . '/'; if ( 'css' === $filetype ) { $assets_uri = $css_uri . $filename . $file_rtl . $file_prefix . '.' . $filetype; } elseif ( 'js' === $filetype ) { $assets_uri = $js_uri . $filename . $file_prefix . '.' . $filetype; } return $assets_uri; } /** * Add preconnect for Google Fonts. * * @since Inspiro 1.0.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 inspiro_resource_hints( $urls, $relation_type ) { if ( wp_style_is( 'inspiro-fonts', 'queue' ) && 'preconnect' === $relation_type ) { $urls[] = array( 'href' => 'https://fonts.gstatic.com', 'crossorigin', ); } return $urls; } add_filter( 'wp_resource_hints', 'inspiro_resource_hints', 10, 2 ); /** * Register widget area. * * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar */ function inspiro_widgets_init() { register_sidebar( array( 'name' => __( 'Sidebar', 'inspiro' ), 'id' => 'sidebar', 'description' => __( 'Main sidebar that is displayed on the right and can be toggled by clicking on the menu icon.', 'inspiro' ), 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '<div class="clear"></div></div>', 'before_title' => '<h3 class="title">', 'after_title' => '</h3>', ) ); register_sidebar( array( 'name' => __( 'Blog Sidebar', 'inspiro' ), 'id' => 'blog-sidebar', 'description' => __( 'Add widgets here to appear in your sidebar on blog posts and archive pages.', 'inspiro' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h2 class="title">', 'after_title' => '</h2>', ) ); register_sidebar( array( 'name' => __( 'Footer 1', 'inspiro' ), 'id' => 'footer_1', 'description' => __( 'Add widgets here to appear in your footer.', 'inspiro' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h2 class="title">', 'after_title' => '</h2>', ) ); register_sidebar( array( 'name' => __( 'Footer 2', 'inspiro' ), 'id' => 'footer_2', 'description' => __( 'Add widgets here to appear in your footer.', 'inspiro' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h2 class="title">', 'after_title' => '</h2>', ) ); register_sidebar( array( 'name' => __( 'Footer 3', 'inspiro' ), 'id' => 'footer_3', 'description' => __( 'Add widgets here to appear in your footer.', 'inspiro' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h2 class="title">', 'after_title' => '</h2>', ) ); register_sidebar( array( 'name' => __( 'Footer 4', 'inspiro' ), 'id' => 'footer_4', 'description' => __( 'Add widgets here to appear in your footer.', 'inspiro' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h2 class="title">', 'after_title' => '</h2>', ) ); register_sidebar( array( 'name' => __( 'Header Social Icons', 'inspiro' ), 'id' => 'header_social', 'description' => __( 'Widget area in the header. Install the "Social Icons Widget by WPZOOM" plugin and add the widget here.', 'inspiro' ), 'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget' => '</div>', 'before_title' => '<h3 class="title"><span>', 'after_title' => '</span></h3>', ) ); register_sidebar( array( 'name' => __( 'Footer Instagram Bar', 'inspiro' ), 'id' => 'footer_instagram_section', 'description' => __( 'Widget area for "Instagram widget by WPZOOM".', 'inspiro' ), 'before_widget' => '<section class="widget %2$s" id="%1$s">', 'after_widget' => '<div class="clear"></div></section>', 'before_title' => '<h3 class="title">', 'after_title' => '</h3>', ) ); } add_action( 'widgets_init', 'inspiro_widgets_init' ); /** * Replaces "[...]" (appended to automatically generated excerpts) with ... and * a 'Read more' link. * * @since Inspiro 1.0.0 * * @param string $link Link to single post/page. * @return string 'Read more' link prepended with an ellipsis. */ function inspiro_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( __( 'Read more<span class="screen-reader-text"> "%s"</span>', 'inspiro' ), get_the_title( get_the_ID() ) ) ); return ' … ' . $link; } add_filter( 'excerpt_more', 'inspiro_excerpt_more' ); /** * Filters the `sizes` value in the header image markup. * * @since Inspiro 1.0.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 inspiro_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', 'inspiro_header_image_tag', 10, 3 ); /** * Add custom image sizes attribute to enhance responsive image functionality * for post thumbnails. * * @since Inspiro 1.0.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 inspiro_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', 'inspiro_post_thumbnail_sizes_attr', 10, 3 ); /** * Modifies tag cloud widget arguments to display all tags in the same font size * and use list format for better accessibility. * * @since Inspiro 1.0.0 * * @param array $args Arguments for tag cloud widget. * @return array The filtered arguments for tag cloud widget. */ function inspiro_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', 'inspiro_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 Inspiro 1.0.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 inspiro_unique_id( $prefix = '' ) { static $id_counter = 0; if ( function_exists( 'wp_unique_id' ) ) { return wp_unique_id( $prefix ); } return $prefix . (string) ++$id_counter; } /** * Show custom logo or blog title and description (backward compatibility) */ function inspiro_custom_logo() { has_custom_logo() ? the_custom_logo() : printf( '<a href="%1$s" title="%2$s" class="custom-logo-text">%3$s</a>', esc_url( home_url() ), esc_html( get_bloginfo( 'description' ) ), esc_html( inspiro_get_theme_mod( 'custom_logo_text' ) ) ); } /** * Displays the sidebar after the openning <body> tag. */ function display_sidebar_body_open() { get_sidebar(); } add_action( 'wp_body_open', 'display_sidebar_body_open' ); if ( ! function_exists( 'inspiro_comment' ) ) { /** * Custom Comments Template * * @param string $comment Comment text. * @param array $args Comment args. * @param boolean $depth Comment depth. * @return void */ function inspiro_comment( $comment, $args, $depth ) { $GLOBALS['comment'] = $comment; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited switch ( $comment->comment_type ) : case '': case 'comment': ?> <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>"> <div id="comment-<?php comment_ID(); ?>"> <div class="comment-author vcard"> <?php echo get_avatar( $comment, 50 ); ?> <?php printf( '<cite class="fn">%s</cite>', get_comment_author_link() ); ?> <div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>"> <?php /* translators: %1$s: Comment date %2$s: Comment time */ printf( __( '%1$s @ %2$s', 'inspiro' ), get_comment_date(), get_comment_time() ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> </a> <?php comment_reply_link( array_merge( $args, array( 'depth' => $depth, 'max_depth' => $args['max_depth'], 'reply_text' => __( 'Reply', 'inspiro' ), 'before' => ' · ', ) ) ); ?> <?php edit_comment_link( __( 'Edit', 'inspiro' ), ' · ' ); ?> </div> <!-- .comment-meta .commentmetadata --> </div> <!-- .comment-author .vcard --> <?php if ( '0' === $comment->comment_approved ) : ?> <em class="comment-awaiting-moderation"><?php esc_html_e( 'Your comment is awaiting moderation.', 'inspiro' ); ?></em> <br/> <?php endif; ?> <div class="comment-body"><?php comment_text(); ?></div> </div><!-- #comment-<?php comment_ID(); ?> --> <?php break; case 'pingback': case 'trackback': ?> <li class="post pingback"> <p><?php esc_html_e( 'Pingback:', 'inspiro' ); ?><?php comment_author_link(); ?><?php edit_comment_link( __( '(Edit)', 'inspiro' ), ' ' ); ?></p> <?php break; endswitch; } } /** * WooCommerce compatibility. */ if ( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) { add_theme_support( 'woocommerce' ); add_theme_support( 'wc-product-gallery-zoom' ); add_theme_support( 'wc-product-gallery-lightbox' ); add_theme_support( 'wc-product-gallery-slider' ); } if ( ! function_exists( 'inspiro_get_prop' ) ) : /** * Get a specific property of an array without needing to check if that property exists. * * Provide a default value if you want to return a specific value if the property is not set. * * @since 1.3.0 * @access public * @author Gravity Forms - Easiest Tool to Create Advanced Forms for Your WordPress-Powered Website. * @link https://www.gravityforms.com/ * * @param array $array Array from which the property's value should be retrieved. * @param string $prop Name of the property to be retrieved. * @param string $default Optional. Value that should be returned if the property is not set or empty. Defaults to null. * * @return null|string|mixed The value */ function inspiro_get_prop( $array, $prop, $default = null ) { if ( ! is_array( $array ) && ! ( is_object( $array ) && $array instanceof ArrayAccess ) ) { return $default; } if ( ( isset( $array[ $prop ] ) && false === $array[ $prop ] ) ) { return false; } if ( isset( $array[ $prop ] ) ) { $value = $array[ $prop ]; } else { $value = ''; } return empty( $value ) && null !== $default ? $default : $value; } endif; if( ! function_exists( 'inspiro_get_page_by_title' ) ) { function inspiro_get_page_by_title( $page_title ) { $posts = get_posts( array( 'post_type' => 'page', 'title' => $page_title, 'post_status' => 'all', 'numberposts' => 1, 'update_post_term_cache' => false, 'update_post_meta_cache' => false, 'orderby' => 'post_date ID', 'order' => 'ASC', ) ); if ( ! empty( $posts ) ) { $page_got_by_title = $posts[0]; } else { $page_got_by_title = null; } return $page_got_by_title; } }