Current Path : /home/church/public_html/mekhimalachi.org/wp-content/themes/mekhimalachi/inc/ |
Current File : /home/church/public_html/mekhimalachi.org/wp-content/themes/mekhimalachi/inc/helpers.php |
<?php /** * This file includes helper functions used throughout the theme. * * @package OceanWP WordPress theme */ /*-------------------------------------------------------------------------------*/ /* [ Table of contents ] /*-------------------------------------------------------------------------------* # General # Top Bar # Header # Page Header # Blog # Footer # WooCommerce # Other /*-------------------------------------------------------------------------------*/ /* [ General ] /*-------------------------------------------------------------------------------*/ if ( ! function_exists( 'oceanwp_html_classes' ) ) { /** * Adds classes to the html tag * * @since 1.0.0 */ function oceanwp_html_classes() { // Setup classes array. $classes = array(); // Main class. $classes[] = 'html'; // Set keys equal to vals. $classes = array_combine( $classes, $classes ); // Apply filters for child theming. $classes = apply_filters( 'ocean_html_classes', $classes ); // Turn classes into space seperated string. $classes = implode( ' ', $classes ); // Return classes. return $classes; } } if ( ! function_exists( 'oceanwp_body_classes' ) ) { /** * Adds classes to the body tag * * @param obj $classes body class. * @since 1.0.0 */ function oceanwp_body_classes( $classes ) { // Vars. $post_layout = oceanwp_post_layout(); $layout_style = get_theme_mod( 'ocean_main_layout_style', 'wide' ); $post_id = oceanwp_post_id(); $mobile_style = oceanwp_mobile_menu_style(); // RTL. if ( is_rtl() ) { $classes[] = 'rtl'; } // Main class. $classes[] = 'oceanwp-theme'; // Mobile menu style. $classes[] = $mobile_style . '-mobile'; // If video header. if ( function_exists( 'has_header_video' ) && has_header_video() ) { $classes[] = 'has-header-video'; } // Boxed layout. if ( 'boxed' == $layout_style ) { $classes[] = 'boxed-layout'; if ( get_theme_mod( 'ocean_boxed_dropdshadow', true ) ) { $classes[] = 'wrap-boxshadow'; } } // Separate layout. if ( 'separate' == $layout_style ) { $classes[] = 'separate-layout'; } // If separate style nad blog page. if ( 'separate' == $layout_style && ( is_home() || is_category() || is_tag() || is_date() || is_author() ) ) { $classes[] = 'separate-blog'; } // If is not custom header created with Elementor Pro 2.0. if ( ! function_exists( 'elementor_location_exits' ) || ! elementor_location_exits( 'header', true ) ) { // Top menu header style to control the responsive. if ( 'top' == oceanwp_header_style() ) { $classes[] = 'top-header-style'; } // Medium header style to control the responsive. if ( 'medium' == oceanwp_header_style() ) { $classes[] = 'medium-header-style'; } // Vertical header style. if ( 'vertical' == oceanwp_header_style() ) { // Vertical header style to control the wrap margin left. $classes[] = 'vertical-header-style'; // Header position. $position = get_theme_mod( 'ocean_vertical_header_position', 'left-header' ); $position = $position ? $position : 'left-header'; $classes[] = $position; // If default collapse. $vh_collapse_width = get_theme_mod( 'ocean_vertical_header_collapse_width', '1280' ); if ( empty( $vh_collapse_width ) || '1280' == $vh_collapse_width ) { $classes[] = 'default-collapse'; } } // Add transparent class for header styles. if ( 'transparent' == oceanwp_header_style() || ( 'full_screen' == oceanwp_header_style() && true == get_theme_mod( 'ocean_full_screen_header_transparent', false ) ) || ( 'center' == oceanwp_header_style() && true == get_theme_mod( 'ocean_center_header_transparent', false ) ) || ( 'medium' == oceanwp_header_style() && true == get_theme_mod( 'ocean_medium_header_transparent', false ) ) ) { $classes[] = 'has-transparent-header'; } // Add transparent class for the vertical header style. if ( 'vertical' == oceanwp_header_style() && true == get_theme_mod( 'ocean_vertical_header_transparent', false ) ) { $classes[] = 'has-vh-transparent'; } // If vertical header closed. if ( 'vertical' == oceanwp_header_style() && true == get_theme_mod( 'ocean_vertical_header_closed', false ) ) { $classes[] = 'vh-closed'; } } // If no header border bottom. if ( true != get_theme_mod( 'ocean_has_header_border_bottom', true ) ) { $classes[] = 'no-header-border'; } // If no custom mobile breakpoint. if ( '959' == get_theme_mod( 'ocean_mobile_menu_breakpoints', '959' ) ) { $classes[] = 'default-breakpoint'; } // Sidebar enabled. if ( 'left-sidebar' == $post_layout || 'right-sidebar' == $post_layout || 'both-sidebars' == $post_layout ) { $classes[] = 'has-sidebar'; } // Mobile sidebar order. if ( 'sidebar-content' == oceanwp_sidebar_order() ) { $classes[] = 'sidebar-content'; } // Content layout. if ( $post_layout ) { $classes[] = 'content-'. $post_layout; } // If full width and has content width. if ( 'full-width' == $post_layout && '0' != get_theme_mod( 'ocean_blog_single_content_width', '700' ) ) { $classes[] = 'content-max-width'; } // Both sidebars layout style. if ( 'both-sidebars' == $post_layout ) { $classes[] = oceanwp_both_sidebars_style(); } // Single Post cagegories. if ( is_singular( 'post' ) ) { $cats = get_the_category( $post_id ); foreach ( $cats as $cat ) { $classes[] = 'post-in-category-' . $cat->category_nicename; } } // If landing page template. if ( is_page_template( 'templates/landing.php' ) ) { $classes[] = 'landing-page'; } // Topbar. if ( oceanwp_display_topbar() ) { $classes[] = 'has-topbar'; } // Title with Background Image. if ( 'background-image' == oceanwp_page_header_style() ) { $classes[] = 'page-with-background-title'; } // Disabled header. if ( ! oceanwp_has_page_header() ) { $classes[] = 'page-header-disabled'; } // Breadcrumbs. if ( oceanwp_has_breadcrumbs() ) { $classes[] = 'has-breadcrumbs'; } // If blog grid style. if ( 'grid-entry' == get_theme_mod( 'ocean_blog_style', 'large-entry' ) ) { $classes[] = 'has-blog-grid'; } // Fixed footer. if ( 'on' == get_theme_mod( 'ocean_fixed_footer', 'off' ) ) { $classes[] = 'has-fixed-footer'; } // Parallax footer. if ( 'on' == get_theme_mod( 'ocean_parallax_footer', 'off' ) ) { $classes[] = 'has-parallax-footer'; } // Pagination. $pagination_align = get_theme_mod( 'ocean_pagination_align', 'right' ); if ( 'right' != $pagination_align ) { $classes[] = 'pagination-' . $pagination_align; } // If WooCommerce is active. if ( OCEANWP_WOOCOMMERCE_ACTIVE ) { // If grid/list buttons. if ( get_theme_mod( 'ocean_woo_grid_list', true ) ) { $classes[] = 'has-grid-list'; } // Tabs position. $woo_tabs = get_theme_mod( 'ocean_woo_product_meta_tabs_position', 'center' ); if ( oceanwp_is_woo_single() && 'center' != $woo_tabs ) { $classes[] = 'woo-' . $woo_tabs . '-tabs'; } // If shop conditional. if ( true === get_theme_mod( 'ocean_shop_conditional', false ) ) { $classes[] = 'has-woo-shop-conditional'; // If shop conditional message. if ( 'yes' === get_theme_mod( 'ocean_shop_cond_msg', 'yes' ) ) { // If My Account page linked to conditional message. if ( true === get_theme_mod( 'ocean_shop_add_myaccount_link', false ) ) { $classes[] = 'has-woo-shop-cond-msg-myaccount'; } else { $classes[] = 'has-woo-shop-cond-msg'; } } } // If has disabled image and product archive links. if ( true === get_theme_mod( 'ocean_shop_woo_disable_links', false ) ) { // If disable image and links conditional. if ( 'yes' === get_theme_mod( 'ocean_shop_woo_disable_links_cond', 'no' ) ) { $classes[] = 'has-woo-shop-links-disabled-cond'; } else { $classes[] = 'has-woo-shop-links-disabled-all'; } } // If has sinlge product conditional. if ( true === get_theme_mod( 'ocean_woo_single_conditional', false ) ) { $classes[] = 'has-woo-single-conditional'; // If single conditional message. if ( 'yes' === get_theme_mod( 'ocean_woo_single_cond_msg', 'yes' ) ) { // If My Account page linked to conditional message. if ( true === get_theme_mod( 'ocean_single_add_myaccount_link', false ) ) { $classes[] = 'has-woo-single-cond-msg-myaccount'; } else { $classes[] = 'has-woo-single-cond-msg'; } } } } // Return classes. return $classes; } add_filter( 'body_class', 'oceanwp_body_classes' ); } /** * Backward compatibility * * @since 1.8.3 */ if ( ! function_exists( 'wp_body_open' ) ) { /** * Shim for wp_body_open, ensuring backward compatibility with versions of WordPress older than 5.2. */ function wp_body_open() { do_action( 'wp_body_open' ); } } if ( ! function_exists( 'oceanwp_post_id' ) ) { /** * Store current post ID * * @since 1.0.0 */ function oceanwp_post_id() { // Default value. $id = ''; // If singular get_the_ID. if ( is_singular() ) { $id = get_the_ID(); } // Get ID of WooCommerce product archive. elseif ( OCEANWP_WOOCOMMERCE_ACTIVE && is_shop() ) { $shop_id = wc_get_page_id( 'shop' ); if ( isset( $shop_id ) ) { $id = $shop_id; } } // Posts page. elseif ( is_home() && $page_for_posts = get_option( 'page_for_posts' ) ) { $id = $page_for_posts; } // Apply filters. $id = apply_filters( 'ocean_post_id', $id ); // Sanitize. $id = $id ? $id : ''; // Return ID. return $id; } } /** * Get unique ID * * Based on the TwentyTwenty theme unique ID method: inc\template-tags.php * * @since 1.7.9 */ if ( ! function_exists( 'oceanwp_unique_id' ) ) { function oceanwp_unique_id( $prefix = '' ) { static $id_counter = 0; if ( function_exists( 'wp_unique_id' ) ) { return wp_unique_id( $prefix ); } return $prefix . (string) ++$id_counter; } } /** * Returns correct post layout * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_post_layout' ) ) { function oceanwp_post_layout() { // Define variables $class = 'right-sidebar'; $meta = get_post_meta( oceanwp_post_id(), 'ocean_post_layout', true ); // Check meta first to override and return (prevents filters from overriding meta) if ( $meta ) { return $meta; } // Singular Page if ( is_page() ) { // Landing template if ( is_page_template( 'templates/landing.php' ) ) { $class = 'full-width'; } // Attachment elseif ( is_attachment() ) { $class = 'full-width'; } // All other pages else { $class = get_theme_mod( 'ocean_page_single_layout', 'right-sidebar' ); } } // Home elseif ( is_home() || is_category() || is_tag() || is_date() || is_author() ) { $class = get_theme_mod( 'ocean_blog_archives_layout', 'right-sidebar' ); } // Singular Post elseif ( is_singular( 'post' ) ) { $class = get_theme_mod( 'ocean_blog_single_layout', 'right-sidebar' ); } // Library and Elementor template elseif ( is_singular( 'oceanwp_library' ) || is_singular( 'elementor_library' ) ) { $class = 'full-width'; } // Search elseif ( is_search() ) { $class = get_theme_mod( 'ocean_search_layout', 'right-sidebar' ); } // 404 page elseif ( is_404() ) { $class = get_theme_mod( 'ocean_error_page_layout', 'full-width' ); } // All else else { $class = 'right-sidebar'; } // Class should never be empty if ( empty( $class ) ) { $class = 'right-sidebar'; } // Apply filters and return return apply_filters( 'ocean_post_layout_class', $class ); } } /** * Returns correct both sidebars style layout * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_both_sidebars_style' ) ) { function oceanwp_both_sidebars_style() { // Meta $meta = get_post_meta( oceanwp_post_id(), 'ocean_both_sidebars_style', true ); // Check meta first to override and return (prevents filters from overriding meta) if ( $meta ) { return $meta; } // Singular Page if ( is_page() ) { $class = get_theme_mod( 'ocean_page_single_both_sidebars_style', 'scs-style' ); } // Home elseif ( is_home() || is_category() || is_tag() || is_date() || is_author() ) { $class = get_theme_mod( 'ocean_blog_archives_both_sidebars_style', 'scs-style' ); } // Singular Post elseif ( is_singular( 'post' ) ) { $class = get_theme_mod( 'ocean_blog_single_both_sidebars_style', 'scs-style' ); } // Search elseif ( is_search() ) { $class = get_theme_mod( 'ocean_search_both_sidebars_style', 'scs-style' ); } // All else else { $class = 'scs-style'; } // Class should never be empty if ( empty( $class ) ) { $class = 'scs-style'; } // Apply filters and return return apply_filters( 'ocean_both_sidebars_style', $class ); } } /** * Mobile sidebar order * * @since 1.6 */ if ( ! function_exists( 'oceanwp_sidebar_order' ) ) { function oceanwp_sidebar_order() { // Define variables $order = 'content-sidebar'; /*$meta = get_post_meta( oceanwp_post_id(), 'ocean_post_layout', true ); // Check meta first to override and return (prevents filters from overriding meta) if ( $meta ) { return $meta; }*/ // Singular Page if ( is_page() ) { $order = get_theme_mod( 'ocean_page_single_sidebar_order', 'content-sidebar' ); } // Home elseif ( is_home() || is_category() || is_tag() || is_date() || is_author() ) { $order = get_theme_mod( 'ocean_blog_archives_sidebar_order', 'content-sidebar' ); } // Singular Post elseif ( is_singular( 'post' ) ) { $order = get_theme_mod( 'ocean_single_post_sidebar_order', 'content-sidebar' ); } // Search elseif ( is_search() ) { $order = get_theme_mod( 'ocean_search_sidebar_order', 'content-sidebar' ); } // All else else { $order = 'content-sidebar'; } // The order should never be empty if ( empty( $order ) ) { $order = 'content-sidebar'; } // Apply filters and return return apply_filters( 'ocean_sidebar_order', $order ); } } /** * Get the sidebar * * @since 1.4.0 */ if ( ! function_exists( 'oceanwp_display_sidebar' ) ) { function oceanwp_display_sidebar() { // Retunr if full width or full screen if ( in_array( oceanwp_post_layout(), array( 'full-screen', 'full-width' ) ) ) { return; } // Add the second sidebar if ( 'both-sidebars' == oceanwp_post_layout() ) { get_sidebar( 'left' ); } // Add the default sidebar get_sidebar(); } } /** * Returns the sidebar * * @since 1.6 */ if ( ! function_exists( 'oceanwp_sidebar_action' ) ) { function oceanwp_sidebar_action() { if ( 'sidebar-content' == oceanwp_sidebar_order() && 'both-sidebars' != oceanwp_post_layout() ) { $action = 'ocean_before_primary'; } else { $action = 'ocean_after_primary'; } add_action( $action, 'oceanwp_display_sidebar' ); } add_action( 'wp', 'oceanwp_sidebar_action', 20 ); } /** * Returns the correct sidebar ID * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_get_sidebar' ) ) { function oceanwp_get_sidebar( $sidebar = 'sidebar' ) { // Search if ( is_search() && true == get_theme_mod( 'ocean_search_custom_sidebar', true ) ) { $sidebar = 'search_sidebar'; } // Add filter for tweaking the sidebar display via child theme's $sidebar = apply_filters( 'ocean_get_sidebar', $sidebar ); // Never show empty sidebar if ( ! is_active_sidebar( $sidebar ) ) { $sidebar = 'sidebar'; } // Return the correct sidebar return $sidebar; } } /** * Returns the correct second sidebar ID * * @since 1.4.0 */ if ( ! function_exists( 'oceanwp_get_second_sidebar' ) ) { function oceanwp_get_second_sidebar( $sidebar = 'sidebar-2' ) { // Add filter for tweaking the left sidebar display via child theme's $sidebar = apply_filters( 'ocean_get_second_sidebar', $sidebar ); // Never show empty sidebar if ( ! is_active_sidebar( $sidebar ) ) { $sidebar = 'sidebar-2'; } // Return the correct sidebar return $sidebar; } } /** * Returns the correct classname for any specific column grid * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_grid_class' ) ) { function oceanwp_grid_class( $col = '4' ) { return esc_attr( apply_filters( 'ocean_grid_class', 'span_1_of_'. $col ) ); } } /** * Removes the scheme of the passed URL to fit the current page. * * @since 1.1.1 */ if ( ! function_exists( 'oceanwp_correct_url_scheme' ) ) { function oceanwp_correct_url_scheme( $url ) { $url = str_replace( 'http://', '//', str_replace( 'https://', '//', $url ) ); return $url; } } /** * Gets the attachment ID from the url * * @since 1.1.1 */ if ( ! function_exists( 'oceanwp_get_attachment_id_from_url' ) ) { function oceanwp_get_attachment_id_from_url( $attachment_url = '' ) { global $wpdb; $attachment_id = false; if ( '' == $attachment_url || ! is_string( $attachment_url ) ) { return ''; } $upload_dir_paths = wp_upload_dir(); $upload_dir_paths_baseurl = $upload_dir_paths['baseurl']; if ( substr( $attachment_url, 0, 2 ) == '//' ) { $upload_dir_paths_baseurl = oceanwp_correct_url_scheme( $upload_dir_paths_baseurl ); } // Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image. if ( false !== strpos( $attachment_url, $upload_dir_paths_baseurl ) ) { // If this is the URL of an auto-generated thumbnail, get the URL of the original image. $attachment_url = preg_replace( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif|tiff|svg)$)/i', '', $attachment_url ); // Remove the upload path base directory from the attachment URL. $attachment_url = str_replace( $upload_dir_paths_baseurl . '/', '', $attachment_url ); // Run a custom database query to get the attachment ID from the modified attachment URL. $attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url ) ); $attachment_id = apply_filters( 'wpml_object_id', $attachment_id, 'attachment' ); } return $attachment_id; } } /** * Gets the most important attachment data from the url * * @since 1.1.1 */ if ( ! function_exists( 'oceanwp_get_attachment_data_from_url' ) ) { function oceanwp_get_attachment_data_from_url( $attachment_url = '' ) { if ( '' == $attachment_url ) { return false; } $attachment_data['url'] = preg_replace( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i', '', $attachment_url ); $attachment_data['id'] = oceanwp_get_attachment_id_from_url( $attachment_data['url'] ); if ( ! $attachment_data['id'] ) { return false; } preg_match( '/\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i', $attachment_url, $matches ); if ( count( $matches ) > 0 ) { $dimensions = explode( 'x', $matches[0] ); $attachment_data['width'] = $dimensions[0]; $attachment_data['height'] = $dimensions[1]; } else { $attachment_src = wp_get_attachment_image_src( $attachment_data['id'], 'full' ); $attachment_data['width'] = $attachment_src[1]; $attachment_data['height'] = $attachment_src[2]; } $attachment_data['alt'] = get_post_field( '_wp_attachment_image_alt', $attachment_data['id'] ); $attachment_data['caption'] = get_post_field( 'post_excerpt', $attachment_data['id'] ); $attachment_data['title'] = get_post_field( 'post_title', $attachment_data['id'] ); return $attachment_data; } } /*-------------------------------------------------------------------------------*/ /* [ Top Bar ] /*-------------------------------------------------------------------------------*/ /** * Display top bar * * @since 1.1.2 */ if ( ! function_exists( 'oceanwp_display_topbar' ) ) { function oceanwp_display_topbar() { // Return true by default $return = true; // Return false if disabled via Customizer if ( true != get_theme_mod( 'ocean_top_bar', true ) ) { $return = false; } // Apply filters and return return apply_filters( 'ocean_display_top_bar', $return ); } } /** * Top bar template * I make a function to be able to remove it for the Beaver Themer plugin * * @since 1.2.5 */ if ( ! function_exists( 'oceanwp_top_bar_template' ) ) { function oceanwp_top_bar_template() { // Return if no top bar if ( ! oceanwp_display_topbar() ) { return; } get_template_part( 'partials/topbar/layout' ); } add_action( 'ocean_top_bar', 'oceanwp_top_bar_template' ); } /** * Add classes to the top bar wrap * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_topbar_classes' ) ) { function oceanwp_topbar_classes() { // Setup classes array $classes = array(); // Clearfix class $classes[] = 'clr'; // Visibility $visibility = get_theme_mod( 'ocean_top_bar_visibility', 'all-devices' ); if ( 'all-devices' != $visibility ) { $classes[] = $visibility; } // Set keys equal to vals $classes = array_combine( $classes, $classes ); // Apply filters for child theming $classes = apply_filters( 'ocean_topbar_classes', $classes ); // Turn classes into space seperated string $classes = implode( ' ', $classes ); // return classes return $classes; } } /** * Topbar style * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_top_bar_style' ) ) { function oceanwp_top_bar_style() { $style = get_theme_mod( 'ocean_top_bar_style' ); $style = $style ? $style : 'one'; return apply_filters( 'ocean_top_bar_style', $style ); } } /** * Topbar Content classes * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_topbar_content_classes' ) ) { function oceanwp_topbar_content_classes() { // Define classes $classes = array( 'clr' ); // Check for content if ( get_theme_mod( 'ocean_top_bar_content' ) ) { $classes[] = 'has-content'; } // Get topbar style $style = oceanwp_top_bar_style(); // Top bar style if ( 'one' == $style ) { $classes[] = 'top-bar-left'; } elseif ( 'two' == $style ) { $classes[] = 'top-bar-right'; } elseif ( 'three' == $style ) { $classes[] = 'top-bar-centered'; } // Apply filters for child theming $classes = apply_filters( 'ocean_top_bar_classes', $classes ); // Turn classes array into space seperated string $classes = implode( ' ', $classes ); // Return classes return esc_attr( $classes ); } } /*-------------------------------------------------------------------------------*/ /* [ Header ] /*-------------------------------------------------------------------------------*/ /** * Display header * * @since 1.1.2 */ if ( ! function_exists( 'oceanwp_display_header' ) ) { function oceanwp_display_header() { // Return true by default $return = true; // Apply filters and return return apply_filters( 'ocean_display_header', $return ); } } /** * Header template * I make a function to be able to remove it for the Beaver Themer plugin * * @since 1.2.5 */ if ( ! function_exists( 'oceanwp_header_template' ) ) { function oceanwp_header_template() { // Return if no header if ( ! oceanwp_display_header() ) { return; } get_template_part( 'partials/header/layout' ); } add_action( 'ocean_header', 'oceanwp_header_template' ); } /** * Header style * * @since 1.1.2 */ if ( ! function_exists( 'oceanwp_header_style' ) ) { function oceanwp_header_style() { // Get style from customizer setting $style = get_theme_mod( 'ocean_header_style', 'minimal' ); // Sanitize style to make sure it isn't empty $style = $style ? $style : 'minimal'; // Apply filters and return return apply_filters( 'ocean_header_style', $style ); } } /** * Custom header style template * * @since 1.4.0 */ if ( ! function_exists( 'oceanwp_custom_header_template' ) ) { function oceanwp_custom_header_template() { // Get template from customizer setting $template = get_theme_mod( 'ocean_header_template' ); // Apply filters and return return apply_filters( 'ocean_custom_header_template', $template ); } } /** * Add classes to the header wrap * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_header_classes' ) ) { function oceanwp_header_classes() { // Header style $header_style = oceanwp_header_style(); // Setup classes array $classes = array(); // If is not custom header created with Elementor Pro 2.0 if ( ! function_exists( 'elementor_location_exits' ) || ! elementor_location_exits( 'header', true ) ) { // Add header style class $classes[] = $header_style . '-header'; // Add transparent class for header styles if ( ( 'full_screen' == $header_style && true == get_theme_mod( 'ocean_full_screen_header_transparent', false ) ) || ( 'center' == $header_style && true == get_theme_mod( 'ocean_center_header_transparent', false ) ) || ( 'medium' == $header_style && true == get_theme_mod( 'ocean_medium_header_transparent', false ) ) || ( 'vertical' == $header_style && true == get_theme_mod( 'ocean_vertical_header_transparent', false ) ) ) { $classes[] = 'is-transparent'; } // Search overlay if ( 'overlay' == oceanwp_menu_search_style() ) { $classes[] = 'search-overlay'; } // Add class if social menu is enabled to remove the negative right on the navigation if ( true == get_theme_mod( 'ocean_menu_social', false ) ) { $classes[] = 'has-social'; } // Menu position if ( 'minimal' == $header_style || 'transparent' == $header_style ) { if ( 'left-menu' == get_theme_mod( 'ocean_menu_position', 'right-menu' ) ) { $classes[] = 'left-menu'; } elseif ( 'center-menu' == get_theme_mod( 'ocean_menu_position', 'right-menu' ) ) { $classes[] = 'center-menu'; } } // Medium header style menu hidden if ( 'medium' == $header_style && true == get_theme_mod( 'ocean_medium_header_hidden_menu', true ) && true != get_theme_mod( 'ocean_medium_header_stick_menu', false ) ) { // Add hidden menu class $classes[] = 'hidden-menu'; } // Vertical header style if ( 'vertical' == $header_style ) { // Header shadow if ( true == get_theme_mod( 'ocean_vertical_header_shadow', true ) ) { $classes[] = 'has-shadow'; } // Logo position $logo_position = get_theme_mod( 'ocean_vertical_header_logo_position', 'center-logo' ); $logo_position = $logo_position ? $logo_position : 'vh-center-logo'; $classes[] = 'vh-'. $logo_position; } // If the search header replace if ( 'header_replace' == oceanwp_menu_search_style() ) { $classes[] = 'header-replace'; } // If has header media if ( has_header_image() ) { $classes[] = 'has-header-media'; } // Mobile elements positionning if ( ( 'medium' != $header_style && 'vertical' != $header_style && 'top' != $header_style ) && 'one' != get_theme_mod( 'ocean_mobile_elements_positioning', 'one' ) ) { $classes[] = 'center-logo'; } } // If menu links effect $link_effect = get_theme_mod( 'ocean_menu_links_effect', 'no' ); if ( 'no' != $link_effect ) { $classes[] = 'effect-' . $link_effect; } // Clearfix class $classes[] = 'clr'; // Set keys equal to vals $classes = array_combine( $classes, $classes ); // Apply filters for child theming $classes = apply_filters( 'ocean_header_classes', $classes ); // Turn classes into space seperated string $classes = implode( ' ', $classes ); // return classes return $classes; } } /** * Add classes to the top header style wrap * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_top_header_classes' ) ) { function oceanwp_top_header_classes() { // Header style $header_style = oceanwp_header_style(); // Return if is not the top header style if ( 'top' != $header_style ) { return; } // Setup classes array $classes = array(); // Add classes $classes[] = 'header-top'; // Clearfix class $classes[] = 'clr'; // Set keys equal to vals $classes = array_combine( $classes, $classes ); // Apply filters for child theming $classes = apply_filters( 'ocean_top_header_classes', $classes ); // Turn classes into space seperated string $classes = implode( ' ', $classes ); // return classes return $classes; } } /** * Returns custom logo setting * * @since 1.1.2 */ if ( ! function_exists( 'oceanwp_header_logo_setting' ) ) { function oceanwp_header_logo_setting() { // Get setting $setting = get_theme_mod( 'custom_logo' ); // Return setting return apply_filters( 'ocean_custom_logo', $setting ); } } /** * Returns retina logo setting * * @since 1.1.2 */ if ( ! function_exists( 'oceanwp_header_retina_logo_setting' ) ) { function oceanwp_header_retina_logo_setting() { // Get setting $setting = get_theme_mod( 'ocean_retina_logo' ); // Return setting return apply_filters( 'ocean_retina_logo', $setting ); } } /** * Add srcset for retina header logo * * @since 1.1.1 */ if ( ! function_exists( 'oceanwp_header_retina_logo' ) ) { function oceanwp_header_retina_logo( $attr, $attachment, $size ) { $attr['srcset'] = ''; // Get logo $custom_logo = oceanwp_header_logo_setting(); // Get retina logo $retina_logo = oceanwp_header_retina_logo_setting(); if ( $custom_logo && $retina_logo ) { $cutom_logo_src = wp_get_attachment_image_src( $custom_logo , 'full' ); $cutom_logo_url = $cutom_logo_src[0]; $attr['srcset'] = $cutom_logo_url . ' 1x, ' . $retina_logo . ' 2x'; // Remove the size attr unset( $attr['sizes'] ); } // Return attr return $attr; } } /** * Returns full screen header logo * * @since 1.0.4 */ if ( ! function_exists( 'oceanwp_header_full_screen_logo' ) ) { function oceanwp_header_full_screen_logo() { // Return false if disabled if ( 'full_screen' != oceanwp_header_style() ) { return false; } $html = ''; // Get logo $logo_url = get_theme_mod( 'ocean_full_screen_header_logo' ); $retina_url = get_theme_mod( 'ocean_full_screen_header_retina_logo' ); $srcset = ''; // Logo data $logo_data = array( 'url' => '', 'width' => '', 'height' => '', 'alt' => '', ); if ( $logo_url ) { // Logo url $logo_data['url'] = $logo_url; // Logo data $logo_attachment_data = oceanwp_get_attachment_data_from_url( $logo_url ); // Get logo data if ( $logo_attachment_data ) { $logo_data['width'] = $logo_attachment_data['width']; $logo_data['height'] = $logo_attachment_data['height']; $logo_data['alt'] = $logo_attachment_data['alt']; } // Add srcset attr if ( $retina_url ) { $srcset = $logo_url . ' 1x, ' . $retina_url . ' 2x'; $srcset = 'srcset="'. $srcset .'"'; } // Output image $html = sprintf( '<a href="%1$s" class="full-screen-logo-link" rel="home"'. oceanwp_get_schema_markup( 'url' ) .'><img src="%2$s" class="full-screen-logo" width="%3$s" height="%4$s" alt="%5$s" %6$s /></a>', esc_url( home_url( '/' ) ), esc_url( $logo_data['url'] ), esc_attr( $logo_data['width'] ), esc_attr( $logo_data['height'] ), esc_attr( $logo_data['alt'] ), $srcset ); } // Return logo return apply_filters( 'ocean_full_screen_header_logo', $html ); } } /** * Echo full_screen header logo * * @since 1.1.1 */ if ( ! function_exists( 'oceanwp_custom_full_screen_logo' ) ) { function oceanwp_custom_full_screen_logo() { echo oceanwp_header_full_screen_logo(); } } /** * Returns responsive header logo * * @since 1.4.0 */ if ( ! function_exists( 'oceanwp_header_responsive_logo' ) ) { function oceanwp_header_responsive_logo() { $html = ''; // Get logo $logo_url = get_theme_mod( 'ocean_responsive_logo' ); // Logo data $logo_data = array( 'url' => '', 'width' => '', 'height' => '', 'alt' => '', ); if ( $logo_url ) { // Logo url $logo_data['url'] = $logo_url; // Logo data $logo_attachment_data = oceanwp_get_attachment_data_from_url( $logo_url ); // Get logo data if ( $logo_attachment_data ) { $logo_data['width'] = $logo_attachment_data['width']; $logo_data['height'] = $logo_attachment_data['height']; $logo_data['alt'] = $logo_attachment_data['alt']; } // Output image $html = sprintf( '<a href="%1$s" class="responsive-logo-link" rel="home"'. oceanwp_get_schema_markup( 'url' ) .'><img src="%2$s" class="responsive-logo" width="%3$s" height="%4$s" alt="%5$s" /></a>', esc_url( home_url( '/' ) ), esc_url( $logo_data['url'] ), esc_attr( $logo_data['width'] ), esc_attr( $logo_data['height'] ), esc_attr( $logo_data['alt'] ) ); } // Return logo return apply_filters( 'ocean_responsive_logo', $html ); } } /** * Echo responsive header logo * * @since 1.4.0 */ if ( ! function_exists( 'oceanwp_custom_responsive_logo' ) ) { function oceanwp_custom_responsive_logo() { echo wp_kses_post( oceanwp_header_responsive_logo() ); } } /** * Returns social sharing template part */ if ( ! function_exists( 'oceanwp_medium_header_elements' ) ) { function oceanwp_medium_header_elements() { // Default array $array = array( 'searchfrom', 'logo', 'social' ); // Get array from Customizer $array = get_theme_mod( 'ocean_medium_header_top_header_elements', $array ); // Turn into array if string if ( $array && ! is_array( $array ) ) { $array = explode( ',', $array ); } // Apply filters for easy modification $array = apply_filters( 'ocean_medium_header_elements_filter', $array ); // Return array return $array; } } /** * Display content after header * * @since 1.5.0 */ if ( ! function_exists( 'oceanwp_display_after_header_content' ) ) { function oceanwp_display_after_header_content() { // Header style $style = oceanwp_header_style(); // Return false by default $return = false; // Get after header content $content = get_theme_mod( 'ocean_after_header_content' ); $content = oceanwp_tm_translation( 'ocean_after_header_content', $content ); // Display header content if ( ( 'minimal' == $style || 'transparent' == $style ) && $content || ( 'minimal' == $style || 'transparent' == $style ) && is_customize_preview() ) { $return = true; ?> <div class="after-header-content"> <div class="after-header-content-inner"> <?php // Display top bar content echo do_shortcode( $content ); ?> </div> </div> <?php } // Apply filters and return return apply_filters( 'ocean_display_after_header_content', $return ); } add_action( 'ocean_before_nav', 'oceanwp_display_after_header_content', 999 ); } /** * Display navigation * * @since 1.5.0 */ if ( ! function_exists( 'oceanwp_display_navigation' ) ) { function oceanwp_display_navigation() { // Return true by default $return = true; // Apply filters and return return apply_filters( 'ocean_display_navigation', $return ); } } /** * Custom nav template * * @since 1.4.7 */ if ( ! function_exists( 'oceanwp_custom_nav_template' ) ) { function oceanwp_custom_nav_template() { // Get template from customizer setting $template = get_theme_mod( 'ocean_custom_nav_template' ); // Apply filters and return return apply_filters( 'ocean_custom_nav_template', $template ); } } /** * Returns header template content * * @since 1.4.7 */ if ( ! function_exists( 'oceanwp_nav_template_content' ) ) { function oceanwp_nav_template_content() { // Get the template ID $content = oceanwp_custom_nav_template(); // Get template content if ( ! empty( $content ) ) { $template = get_post( $content ); if ( $template && ! is_wp_error( $template ) ) { $content = $template->post_content; } } // Apply filters and return content return apply_filters( 'oceanwp_nav_template_content', $content ); } } /** * Returns correct menu classes * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_header_menu_classes' ) ) { function oceanwp_header_menu_classes( $return ) { // Header style $header_style = oceanwp_header_style(); // Medium header style menu position $menu_position = get_theme_mod( 'ocean_medium_header_menu_position', 'center-menu' ); // Define classes array $classes = array(); // Return wrapper classes if ( 'wrapper' == $return ) { // Add special class if the dropdown top border option in the admin is disabled if ( true != get_theme_mod( 'ocean_menu_dropdown_top_border', true ) ) { $classes[] = 'no-top-border'; } // Add clearfix $classes[] = 'clr'; // If medium header style and menu position if ( 'medium' == $header_style && $menu_position ) { $classes[] = $menu_position; } // Set keys equal to vals $classes = array_combine( $classes, $classes ); // Apply filters $classes = apply_filters( 'ocean_header_menu_wrap_classes', $classes ); } // Inner Classes elseif ( 'inner' == $return ) { // Core $classes[] = 'navigation'; $classes[] = 'main-navigation'; $classes[] = 'clr'; // Set keys equal to vals $classes = array_combine( $classes, $classes ); // Apply filters $classes = apply_filters( 'ocean_header_menu_classes', $classes ); } // Return if ( is_array( $classes ) ) { return implode( ' ', $classes ); } else { return $return; } } } /** * Returns custom menu * * @since 1.1.2 */ if ( ! function_exists( 'oceanwp_header_custom_menu' ) ) { function oceanwp_header_custom_menu() { $menu = ''; return apply_filters( 'ocean_custom_menu', $menu ); } } /** * Header logo classes * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_header_logo_classes' ) ) { function oceanwp_header_logo_classes() { // Define classes array $classes = array( 'clr' ); // If responsive logo if ( '' != get_theme_mod( 'ocean_responsive_logo' ) ) { $classes[] = 'has-responsive-logo'; } // Get custom full screen logo if ( 'full_screen' == oceanwp_header_style() && oceanwp_header_full_screen_logo() ) { $classes[] = 'has-full-screen-logo'; } // Apply filters for child theming $classes = apply_filters( 'ocean_header_logo_classes', $classes ); // Turn classes into space seperated string $classes = implode( ' ', $classes ); // Return classes return $classes; } } /** * Returns menu search style * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_menu_search_style' ) ) { function oceanwp_menu_search_style() { // Get search style from Customizer $style = get_theme_mod( 'ocean_menu_search_style', 'drop_down' ); // Apply filters for advanced edits $style = apply_filters( 'ocean_menu_search_style', $style ); // Sanitize output so it's not empty and return $style = $style ? $style : 'drop_down'; // Return style return $style; } } /** * Adds the search icon to the menu items * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_add_search_to_menu' ) ) { function oceanwp_add_search_to_menu( $items, $args ) { // Only used on main menu if ( 'main_menu' != $args->theme_location ) { return $items; } // Get search style $search_style = oceanwp_menu_search_style(); $header_style = oceanwp_header_style(); // Return if disabled if ( ! $search_style || 'disabled' == $search_style || 'top' == $header_style || 'vertical' == $header_style ) { return $items; } // Get correct search icon class if ( 'drop_down' == $search_style ) { $class = ' search-dropdown-toggle'; } elseif ( 'header_replace' == $search_style ) { $class = ' search-header-replace-toggle'; } elseif ( 'overlay' == $search_style ) { $class = ' search-overlay-toggle'; } else { $class = ''; } // Add search item to menu $items .= '<li class="search-toggle-li" ' . apply_filters( 'oceanwp_attrs_nav_search_bar', '' ) . '>'; if ( 'full_screen' == $header_style ) { $items .= '<form method="get" action="'. esc_url( home_url( '/' ) ) .'" class="header-searchform">'; $items .= '<input type="search" name="s" value="" autocomplete="off" />'; // If the headerSearchForm script is not disable if ( OCEAN_EXTRA_ACTIVE && class_exists( 'Ocean_Extra_Scripts_Panel' ) && Ocean_Extra_Scripts_Panel::get_setting( 'oe_headerSearchForm_script' ) ) { $items .= '<label>'. esc_html__( 'Type your search', 'oceanwp' ) .'<span><i></i><i></i><i></i></span></label>'; } if( !function_exists('is_plugin_active') ) { include_once( ABSPATH . 'wp-admin/includes/plugin.php' ); } if ( is_plugin_active( 'sitepress-multilingual-cms/sitepress.php' ) ){ $my_current_lang = apply_filters( 'wpml_current_language', NULL ); if( ! empty($my_current_lang) ){ $items .= '<input type="hidden" name="lang" value="'. $my_current_lang .'"/>'; } } $items .= '</form>'; } else { // Get theme icons. $theme_icons = oceanwp_theme_icons(); $icon_t = oceanwp_theme_icon_class(); $items .= '<a href="javascript:void(0)" class="site-search-toggle'. $class .'" aria-label="'. esc_attr( 'Search website', 'oceanwp' ) .'">'; $items .= '<span class="' . $theme_icons[ 'search' ][ $icon_t ] . '" aria-hidden="true"></span>'; $items .= '</a>'; } $items .= '</li>'; // Return nav $items. return $items; } add_filter( 'wp_nav_menu_items', 'oceanwp_add_search_to_menu', 11, 2 ); } /** * Outputs the search for the top header style * * @since 1.0.2 */ if ( ! function_exists( 'oceanwp_top_header_search' ) ) { function oceanwp_top_header_search() { // Get header & search style $search_style = oceanwp_menu_search_style(); // Return if disabled if ( 'top' != oceanwp_header_style() || ! $search_style || 'disabled' == $search_style ) { return; } // Get correct search icon class if ( 'drop_down' == $search_style ) { $class = ' search-dropdown-toggle'; } elseif ( 'header_replace' == $search_style ) { $class = ' search-header-replace-toggle'; } elseif ( 'overlay' == $search_style ) { $class = ' search-overlay-toggle'; } else { $class = ''; } // Get theme icons. $theme_icons = oceanwp_theme_icons(); $icon_t = oceanwp_theme_icon_class(); // Add search item to menu. echo '<div id="search-toggle">'; echo '<a href="javascript:void(0)" class="site-search-toggle'. esc_attr( $class ) .'" aria-label="'. esc_attr__( 'Search website', 'oceanwp' ) .'">'; echo '<span class="' . $theme_icons[ 'search' ][ $icon_t ] . '" aria-hidden="true"></span>'; echo '</a>'; echo '</div>'; } } /** * Returns header search style * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_menu_cart_style' ) ) { function oceanwp_menu_cart_style() { // Return if WooCommerce isn't enabled or icon is disabled if ( ! OCEANWP_WOOCOMMERCE_ACTIVE || 'disabled' == get_theme_mod( 'ocean_woo_menu_icon_visibility', 'default' ) || 'disabled_desktop' == get_theme_mod( 'ocean_woo_menu_icon_visibility', 'default' ) || 'disabled' == get_theme_mod( 'ocean_woo_menu_icon_display', 'icon_count' ) ) { return; } // Get Menu Icon Style $style = get_theme_mod( 'ocean_woo_menu_icon_style', 'drop_down' ); // Return click style for these pages if ( is_cart() || is_checkout() ) { $style = 'custom_link'; } // Apply filters for advanced edits $style = apply_filters( 'ocean_menu_cart_style', $style ); // Sanitize output so it's not empty if ( 'drop_down' == $style || ! $style ) { $style = 'drop_down'; } // Return style return $style; } } /** * Mobile menu style * * @since 1.3.0 */ if ( ! function_exists( 'oceanwp_mobile_menu_style' ) ) { function oceanwp_mobile_menu_style() { // Get style from customizer setting $style = get_theme_mod( 'ocean_mobile_menu_style', 'dropdown' ); // Sanitize style to make sure it isn't empty $style = $style ? $style : 'dropdown'; // Apply filters and return return apply_filters( 'ocean_mobile_menu_style', $style ); } } /*-------------------------------------------------------------------------------*/ /* [ Page Header ] /*-------------------------------------------------------------------------------*/ /** * Page header template * I make a function to be able to remove it for the Beaver Themer plugin * * @since 1.2.5 */ if ( ! function_exists( 'oceanwp_page_header_template' ) ) { function oceanwp_page_header_template() { get_template_part( 'partials/page-header' ); } add_action( 'ocean_page_header', 'oceanwp_page_header_template' ); } /** * Checks if the page header is enabled * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_has_page_header' ) ) { function oceanwp_has_page_header() { // Define vars $return = true; $style = oceanwp_page_header_style(); // Check if page header style is set to hidden if ( 'hidden' == $style || is_page_template( 'templates/landing.php' ) ) { $return = false; } // Apply filters and return return apply_filters( 'ocean_display_page_header', $return ); } } /** * Checks if the page header heading is enabled * * @since 1.4.0 */ if ( ! function_exists( 'oceanwp_has_page_header_heading' ) ) { function oceanwp_has_page_header_heading() { // Define vars $return = true; // Apply filters and return return apply_filters( 'ocean_display_page_header_heading', $return ); } } /** * Returns page header style * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_page_header_style' ) ) { function oceanwp_page_header_style() { // Get default page header style defined in Customizer. $style = get_theme_mod( 'ocean_page_header_style' ); // If featured image in page header. if ( true == get_theme_mod( 'ocean_blog_single_featured_image_title', false ) && is_singular( 'post' ) && has_post_thumbnail() ) { $style = 'background-image'; } // Sanitize data. $style = ( 'default' == $style ) ? '' : $style; // Apply filters and return. return apply_filters( 'ocean_page_header_style', $style ); } } /** * Return the title * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_title' ) ) { function oceanwp_title() { // Default title is null $title = NULL; // Get post ID $post_id = oceanwp_post_id(); // Homepage - display blog description if not a static page if ( is_front_page() && ! is_singular( 'page' ) ) { if ( get_bloginfo( 'description' ) ) { $title = get_bloginfo( 'description' ); } else { $title = esc_html__( 'Recent Posts', 'oceanwp' ); } // Homepage posts page } elseif ( is_home() && ! is_singular( 'page' ) ) { $title = get_the_title( get_option( 'page_for_posts', true ) ); } // Search needs to go before archives elseif ( is_search() ) { global $wp_query; $title = '<span id="search-results-count">'. $wp_query->found_posts .'</span> '. esc_html__( 'Search Results Found', 'oceanwp' ); } // Archives elseif ( is_archive() ) { // Author if ( is_author() ) { $title = get_the_archive_title(); } // Post Type archive title elseif ( is_post_type_archive() ) { $title = post_type_archive_title( '', false ); } // Daily archive title elseif ( is_day() ) { $title = sprintf( esc_html__( 'Daily Archives: %s', 'oceanwp' ), get_the_date() ); } // Monthly archive title elseif ( is_month() ) { $title = sprintf( esc_html__( 'Monthly Archives: %s', 'oceanwp' ), get_the_date( esc_html_x( 'F Y', 'Page title monthly archives date format', 'oceanwp' ) ) ); } // Yearly archive title elseif ( is_year() ) { $title = sprintf( esc_html__( 'Yearly Archives: %s', 'oceanwp' ), get_the_date( esc_html_x( 'Y', 'Page title yearly archives date format', 'oceanwp' ) ) ); } // Categories/Tags/Other else { // Get term title $title = single_term_title( '', false ); // Fix for plugins that are archives but use pages if ( ! $title ) { global $post; $title = get_the_title( $post_id ); } } } // End is archive check // 404 Page elseif ( is_404() ) { $title = esc_html__( '404: Page Not Found', 'oceanwp' ); } // Fix for WooCommerce My Accounts pages elseif( function_exists('is_wc_endpoint_url') && is_wc_endpoint_url() ) { $endpoint = WC()->query->get_current_endpoint(); $endpoint_title = WC()->query->get_endpoint_title( $endpoint ); $title = $endpoint_title ? $endpoint_title : $title; } // Anything else with a post_id defined elseif ( $post_id ) { // Single Pages if ( is_singular( 'page' ) || is_singular( 'attachment' ) ) { $title = get_the_title( $post_id ); } // Single blog posts elseif ( is_singular( 'post' ) ) { if ( 'post-title' == get_theme_mod( 'ocean_blog_single_page_header_title', 'blog' ) ) { $title = get_the_title(); } else { $title = esc_html__( 'Blog', 'oceanwp' ); } } // Other posts else { $title = get_the_title( $post_id ); } } // Last check if title is empty $title = $title ? $title : get_the_title(); // Apply filters and return title return apply_filters( 'ocean_title', $title ); } } /** * Returns page subheading * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_get_page_subheading' ) ) { function oceanwp_get_page_subheading() { // Subheading is NULL by default $subheading = NULL; // Search if ( is_search() ) { $subheading = esc_html__( 'You searched for:', 'oceanwp' ) .' "'. esc_html( get_search_query( false ) ) .'"'; } // Author elseif ( is_author() ) { $subheading = esc_html__( 'This author has written', 'oceanwp' ) .' '. get_the_author_posts() .' '. esc_html__( 'articles', 'oceanwp' ); } // Archives elseif ( is_post_type_archive() ) { $subheading = get_the_archive_description(); } // Apply filters and return return apply_filters( 'ocean_post_subheading', $subheading ); } } /** * Get taxonomy description * * @since 1.5.27 */ if ( ! function_exists( 'oceanwp_get_tax_description' ) ) { function oceanwp_get_tax_description() { // Subheading is NULL by default $desc = NULL; // All other Taxonomies if ( is_category() || is_tag() ) { $desc = term_description(); } // Apply filters and return return apply_filters( 'ocean_tax_description', $desc ); } } /** * Add taxonomy description * * @since 1.5.27 */ if ( ! function_exists( 'oceanwp_tax_description' ) ) { function oceanwp_tax_description() { if ( $desc = oceanwp_get_tax_description() ) : ?> <div class="clr tax-desc"> <?php echo do_shortcode( $desc ); ?> </div> <?php endif; } add_action( 'ocean_before_content_inner', 'oceanwp_tax_description' ); } /** * Display breadcrumbs * * @since 1.1.2 */ if ( ! function_exists( 'oceanwp_has_breadcrumbs' ) ) { function oceanwp_has_breadcrumbs() { // Return true by default $return = true; // Return false if disabled via Customizer if ( true != get_theme_mod( 'ocean_breadcrumbs', true ) ) { $return = false; } // Apply filters and return return apply_filters( 'ocean_display_breadcrumbs', $return ); } } /** * Outputs Custom CSS for the page title * * @since 1.0.4 */ if ( ! function_exists( 'oceanwp_page_header_overlay' ) ) { function oceanwp_page_header_overlay() { // Define return $return = ''; // Only needed for the background-image style so return otherwise if ( 'background-image' != oceanwp_page_header_style() ) { return; } // Return overlay element $return = '<span class="background-image-page-header-overlay"></span>'; // Apply filters for child theming $return = apply_filters( 'ocean_page_header_overlay', $return ); // Return echo wp_kses_post( $return ); } } /** * Outputs Custom CSS for the page title overlay * Place this function before the page header css so the solid color setting works * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_page_header_overlay_css' ) ) { function oceanwp_page_header_overlay_css( $output ) { // Only needed for the background-image style so return otherwise if ( 'background-image' != oceanwp_page_header_style() ) { return; } // Global vars $opacity = get_theme_mod( 'ocean_page_header_bg_image_overlay_opacity', '0.5' ); $overlay_color = get_theme_mod( 'ocean_page_header_bg_image_overlay_color', '#000000' ); if ( true == get_theme_mod( 'ocean_blog_single_featured_image_title', false ) && is_singular( 'post' ) ) { $opacity = get_theme_mod( 'ocean_blog_single_title_bg_image_overlay_opacity', '0.5' ); $overlay_color = get_theme_mod( 'ocean_blog_single_title_bg_image_overlay_color', '#000000' ); } $opacity = $opacity ? $opacity : '0.5'; $opacity = apply_filters( 'ocean_post_title_bg_overlay', $opacity ); $overlay_color = $overlay_color ? $overlay_color : '#000000'; $overlay_color = apply_filters( 'ocean_post_title_bg_overlay_color', $overlay_color ); // Define css var $css = ''; // Get page header overlayopacity if ( ! empty( $opacity ) && '0.5' != $opacity ) { $css .= 'opacity:'. $opacity .';'; } // Get page header overlay color if ( ! empty( $overlay_color ) && '#000000' != $overlay_color ) { $css .= 'background-color:'. $overlay_color .';'; } // Return CSS if ( ! empty( $css ) ) { $output .= '.background-image-page-header-overlay{'. $css .'}'; } // Return output css return $output; } add_filter( 'ocean_head_css', 'oceanwp_page_header_overlay_css' ); } /** * Outputs Custom CSS for the page title * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_page_header_css' ) ) { function oceanwp_page_header_css( $output ) { // Return output if page header is disabled if ( ! oceanwp_has_page_header() ) { return $output; } // Define var $css = ''; // Customize background color $bg_color = get_theme_mod( 'ocean_page_header_background', '#f5f5f5' ); $bg_color = $bg_color ? $bg_color : '#f5f5f5'; $bg_color = apply_filters( 'ocean_post_title_background_color', $bg_color ); if ( ! empty( $bg_color ) && '#f5f5f5' != $bg_color ) { $css .='background-color: '. $bg_color .';'; } // Background image Style if ( oceanwp_page_header_style() == 'background-image' ) { // Add background image $bg_img = get_theme_mod( 'ocean_page_header_bg_image' ); if ( true == get_theme_mod( 'ocean_blog_single_featured_image_title', false ) && is_singular( 'post' ) && has_post_thumbnail() ) { $bg_img = get_the_post_thumbnail_url(); } // Put the filter before generating the image url $bg_img = apply_filters( 'ocean_page_header_background_image', $bg_img ); // Generate image URL if using ID if ( is_numeric( $bg_img ) ) { $bg_img = wp_get_attachment_image_src( $bg_img, 'full' ); $bg_img = $bg_img[0]; } $bg_img = $bg_img ? $bg_img : null; $bg_img = $bg_img; // Immage attrs $bg_img_position = get_theme_mod( 'ocean_page_header_bg_image_position', 'top center' ); $bg_img_attachment = get_theme_mod( 'ocean_page_header_bg_image_attachment', 'initial' ); $bg_img_repeat = get_theme_mod( 'ocean_page_header_bg_image_repeat', 'no-repeat' ); $bg_img_size = get_theme_mod( 'ocean_page_header_bg_image_size', 'cover' ); // If image attrs from single post section if ( true == get_theme_mod( 'ocean_blog_single_featured_image_title', false ) && is_singular( 'post' ) ) { $bg_img_position = get_theme_mod( 'ocean_blog_single_title_bg_image_position', 'top center' ); $bg_img_attachment = get_theme_mod( 'ocean_blog_single_title_bg_image_attachment', 'initial' ); $bg_img_repeat = get_theme_mod( 'ocean_blog_single_title_bg_image_repeat', 'no-repeat' ); $bg_img_size = get_theme_mod( 'ocean_blog_single_title_bg_image_size', 'cover' ); } $bg_img_position = $bg_img_position ? $bg_img_position : 'top center'; $bg_img_position = apply_filters( 'ocean_post_title_bg_image_position', $bg_img_position ); $bg_img_attachment = $bg_img_attachment ? $bg_img_attachment : 'initial'; $bg_img_attachment = apply_filters( 'ocean_post_title_bg_image_attachment', $bg_img_attachment ); $bg_img_repeat = $bg_img_repeat ? $bg_img_repeat : 'no-repeat'; $bg_img_repeat = apply_filters( 'ocean_post_title_bg_image_repeat', $bg_img_repeat ); $bg_img_size = $bg_img_size ? $bg_img_size : 'cover'; $bg_img_size = apply_filters( 'ocean_post_title_bg_image_size', $bg_img_size ); if ( $bg_img ) { // Add css for background image $css .= 'background-image: url( '. $bg_img .' ) !important;'; // Background position if ( ! empty( $bg_img_position ) && 'top center' != $bg_img_position && 'initial' != $bg_img_position ) { $css .= 'background-position:'. $bg_img_position .';'; } // Background attachment if ( ! empty( $bg_img_attachment ) && 'initial' != $bg_img_attachment ) { $css .= 'background-attachment:'. $bg_img_attachment .';'; } // Background repeat if ( ! empty( $bg_img_repeat ) && 'no-repeat' != $bg_img_repeat && 'initial' != $bg_img_repeat ) { $css .= 'background-repeat:'. $bg_img_repeat .';'; } // Background size if ( ! empty( $bg_img_size ) && 'cover' != $bg_img_size && 'initial' != $bg_img_size ) { $css .= 'background-size:'. $bg_img_size .';'; } } // Custom height $title_height = get_theme_mod( 'ocean_page_header_bg_image_height', '400' ); if ( true == get_theme_mod( 'ocean_blog_single_featured_image_title', false ) && is_singular( 'post' ) ) { $title_height = get_theme_mod( 'ocean_blog_single_title_bg_image_height', '400' ); } $title_height = $title_height ? $title_height : '400'; $title_height = apply_filters( 'ocean_post_title_height', $title_height ); if ( ! empty( $title_height ) && '400' != $title_height ) { $css .= 'height:'. $title_height .'px;'; } } // Apply all css to the page-header class if ( ! empty( $css ) ) { $css = '.page-header { '. $css .' }'; } // If css var isn't empty add to custom css output if ( ! empty( $css ) ) { $output .= $css; } // Return output return $output; } add_filter( 'ocean_head_css', 'oceanwp_page_header_css' ); } /*-------------------------------------------------------------------------------*/ /* [ Blog ] /*-------------------------------------------------------------------------------*/ /** * Adds post classes * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_blog_wrap_classes' ) ) { function oceanwp_blog_wrap_classes( $classes = NULL ) { // Return custom class if set if ( $classes ) { return $classes; } // Admin defaults $style = oceanwp_blog_entry_style(); $classes = array( 'entries', 'clr' ); // Isotope classes if ( $style == 'grid-entry' ) { $classes[] = 'oceanwp-row'; if ( 'masonry' == oceanwp_blog_grid_style() ) { $classes[] = 'blog-masonry-grid'; } else { if ( 'infinite_scroll' == oceanwp_blog_pagination_style() ) { $classes[] = 'blog-masonry-grid'; } else { $classes[] = 'blog-grid'; } } } // Equal heights if ( oceanwp_blog_entry_equal_heights() ) { $classes[] = 'blog-equal-heights'; } // Infinite scroll class if ( 'infinite_scroll' == oceanwp_blog_pagination_style() ) { $classes[] = 'infinite-scroll-wrap'; } // Add filter for child theming $classes = apply_filters( 'ocean_blog_wrap_classes', $classes ); // Turn classes into space seperated string if ( is_array( $classes ) ) { $classes = implode( ' ', $classes ); } // Echo classes echo esc_attr( $classes ); } } /** * Adds entry classes * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_post_entry_classes' ) ) { function oceanwp_post_entry_classes() { // Define classes array $classes = array(); // Entry Style $entry_style = oceanwp_blog_entry_style(); // Core classes $classes[] = 'blog-entry'; $classes[] = 'clr'; // Masonry classes if ( 'masonry' == oceanwp_blog_grid_style() ) { $classes[] = 'isotope-entry'; } // Add columns for grid style entries if ( $entry_style == 'grid-entry' ) { $classes[] = 'col'; $classes[] = oceanwp_grid_class( oceanwp_blog_entry_columns() ); // Counter global $oceanwp_count; if ( $oceanwp_count ) { $classes[] = 'col-'. $oceanwp_count; } } // No Featured Image Class, don't add if oembed or self hosted meta are defined if ( ! has_post_thumbnail() && '' == get_post_meta( get_the_ID(), 'ocean_post_self_hosted_shortcode', true ) && '' == get_post_meta( get_the_ID(), 'ocean_post_oembed', true ) ) { $classes[] = 'no-featured-image'; } // Infinite scroll class if ( 'infinite_scroll' == oceanwp_blog_pagination_style() ) { $classes[] = 'item-entry'; } // Blog entry style $classes[] = $entry_style; // Apply filters to entry post class for child theming $classes = apply_filters( 'ocean_blog_entry_classes', $classes ); // Rturn classes array return $classes; } } /** * Returns correct style for the blog entry based on the customizer * * @since 1.0.4 */ if ( ! function_exists( 'oceanwp_blog_entry_style' ) ) { function oceanwp_blog_entry_style() { // Get default style from Customizer $style = get_theme_mod( 'ocean_blog_style', 'large-entry' ); // Sanitize $style = $style ? $style : 'large-entry'; // Apply filters for child theming $style = apply_filters( 'ocean_blog_entry_style', $style ); // Return style return $style; } } /** * Returns correct images size * * @since 1.0.4 */ if ( ! function_exists( 'oceanwp_blog_entry_images_size' ) ) { function oceanwp_blog_entry_images_size() { // Get default size from Customizer $size = get_theme_mod( 'ocean_blog_grid_images_size', 'medium' ); // Sanitize $size = $size ? $size : 'medium'; // Apply filters for child theming $size = apply_filters( 'ocean_blog_entry_images_size', $size ); // Return size return $size; } } /** * Returns the grid style * * @since 1.0.4 */ if ( ! function_exists( 'oceanwp_blog_grid_style' ) ) { function oceanwp_blog_grid_style() { // Get default style from Customizer $style = get_theme_mod( 'ocean_blog_grid_style', 'fit-rows' ); // Sanitize $style = $style ? $style : 'fit-rows'; // Apply filters for child theming $style = apply_filters( 'ocean_blog_grid_style', $style ); // Return style return $style; } } /** * Checks if it's a fit-rows style grid * * @since 1.0.4 */ if ( ! function_exists( 'oceanwp_blog_fit_rows' ) ) { function oceanwp_blog_fit_rows() { // Return false by default $return = false; // Get current blog style if ( 'grid-entry' == oceanwp_blog_entry_style() ) { $return = true; } else { $return = false; } // Apply filters for child theming $return = apply_filters( 'ocean_blog_fit_rows', $return ); // Return bool return $return; } } /** * Checks if the blog entries should have equal heights * * @since 1.0.4 */ if ( ! function_exists( 'oceanwp_blog_entry_equal_heights' ) ) { function oceanwp_blog_entry_equal_heights() { if ( ! get_theme_mod( 'ocean_blog_grid_equal_heights', false ) ) { return false; } $entry_style = oceanwp_blog_entry_style(); if ( 'grid-entry' == $entry_style && 'masonry' != oceanwp_blog_grid_style() ) { return true; } } } /** * Returns correct columns for the blog entries * * @since 1.0.4 */ if ( ! function_exists( 'oceanwp_blog_entry_columns' ) ) { function oceanwp_blog_entry_columns() { // Get columns from customizer setting $columns = get_theme_mod( 'ocean_blog_grid_columns', '2' ); // Sanitize $columns = $columns ? $columns : '2'; // Apply filters for child theming $columns = apply_filters( 'ocean_blog_entry_columns', $columns ); // Return columns return $columns; } } /** * Check if the post has a gallery * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_post_has_gallery' ) ) { function oceanwp_post_has_gallery( $post_id = '' ) { $post_id = $post_id ? $post_id : get_the_ID(); if ( get_post_meta( $post_id, 'ocean_gallery_id', true ) ) { return true; } } } /** * Retrieve attachment IDs * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_get_gallery_ids' ) ) { function oceanwp_get_gallery_ids( $post_id = '' ) { $post_id = $post_id ? $post_id : get_the_ID(); $attachment_ids = get_post_meta( $post_id, 'ocean_gallery_id', true ); if ( $attachment_ids ) { return $attachment_ids; } } } /** * Retrieve attachment data * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_get_attachment' ) ) { function oceanwp_get_attachment( $id ) { $attachment = get_post( $id ); return array( 'alt' => get_post_meta( $attachment->ID, '_wp_attachment_image_alt', true ), 'caption' => $attachment->post_excerpt, 'description' => $attachment->post_content, 'href' => get_permalink( $attachment->ID ), 'src' => $attachment->guid, 'title' => $attachment->post_title, ); } } /** * Return gallery count * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_gallery_count' ) ) { function oceanwp_gallery_count() { $ids = oceanwp_get_gallery_ids(); return count( $ids ); } } /** * Check if lightbox is enabled * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_gallery_is_lightbox_enabled' ) ) { function oceanwp_gallery_is_lightbox_enabled() { if ( 'on' == get_post_meta( get_the_ID(), 'ocean_gallery_link_images', true ) ) { return true; } } } /** * Returns post media * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_get_post_media' ) ) { function oceanwp_get_post_media( $post_id = '' ) { // Define video variable $video = ''; // Get correct ID $post_id = $post_id ? $post_id : get_the_ID(); // Embed if ( $meta = get_post_meta( $post_id, 'ocean_post_video_embed', true ) ) { $video = $meta; } // Check for self-hosted first elseif ( $meta = get_post_meta( $post_id, 'ocean_post_self_hosted_media', true ) ) { $video = $meta; } // Check for post oembed elseif ( $meta = get_post_meta( $post_id, 'ocean_post_oembed', true ) ) { $video = $meta; } // Apply filters for child theming $video = apply_filters( 'ocean_get_post_video', $video ); // Return data return $video; } } /** * Returns post video HTML * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_get_post_video_html' ) ) { function oceanwp_get_post_video_html( $video = '' ) { // Get video $video = $video ? $video : oceanwp_get_post_media(); // Return if video is empty if ( empty( $video ) ) { return; } // Check post format for standard post type if ( 'post' == get_post_type() && 'video' != get_post_format() ) { return; } // Get oembed code and return if ( ! is_wp_error( $oembed = wp_oembed_get( $video ) ) && $oembed ) { return '<div class="responsive-video-wrap">'. $oembed .'</div>'; } // Display using apply_filters if it's self-hosted else { $video = apply_filters( 'the_content', $video ); // Add responsive video wrap for youtube/vimeo embeds if ( strpos( $video, 'youtube' ) || strpos( $video, 'vimeo' ) ) { return '<div class="responsive-video-wrap">'. $video .'</div>'; } // Else return without responsive wrap else { return $video; } } } } /** * Returns post audio * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_get_post_audio_html' ) ) { function oceanwp_get_post_audio_html( $audio = '' ) { // Get audio $audio = $audio ? $audio : oceanwp_get_post_media(); // Return if audio is empty if ( empty( $audio ) ) { return; } // Check post format for standard post type if ( 'post' == get_post_type() && 'audio' != get_post_format() ) { return; } // Get oembed code and return if ( ! is_wp_error( $oembed = wp_oembed_get( $audio ) ) && $oembed ) { return '<div class="responsive-video-wrap">'. $oembed .'</div>'; } // Display using apply_filters if it's self-hosted else { $audio = apply_filters( 'the_content', $audio ); // Add responsive audio wrap for youtube/vimeo embeds if ( strpos( $audio, 'youtube' ) || strpos( $audio, 'vimeo' ) ) { return '<div class="responsive-video-wrap">'. $audio .'</div>'; } // Else return without responsive wrap else { return $audio; } } } } /** * Returns blog entry elements for the customizer * * @since 1.1.0 */ if ( ! function_exists( 'oceanwp_blog_entry_elements' ) ) { function oceanwp_blog_entry_elements() { // Default elements $elements = apply_filters( 'ocean_blog_entry_elements', array( 'featured_image' => esc_html__( 'Featured Image', 'oceanwp' ), 'title' => esc_html__( 'Title', 'oceanwp' ), 'meta' => esc_html__( 'Meta', 'oceanwp' ), 'content' => esc_html__( 'Content', 'oceanwp' ), 'read_more' => esc_html__( 'Read More', 'oceanwp' ), ) ); // Return elements return $elements; } } /** * Returns blog entry elements positioning * * @since 1.1.0 */ if ( ! function_exists( 'oceanwp_blog_entry_elements_positioning' ) ) { function oceanwp_blog_entry_elements_positioning() { // Default sections $sections = array( 'featured_image', 'title', 'meta', 'content', 'read_more' ); // Get sections from Customizer $sections = get_theme_mod( 'ocean_blog_entry_elements_positioning', $sections ); // Turn into array if string if ( $sections && ! is_array( $sections ) ) { $sections = explode( ',', $sections ); } // Apply filters for easy modification $sections = apply_filters( 'ocean_blog_entry_elements_positioning', $sections ); // Return sections return $sections; } } /** * Returns blog entry meta * * @since 1.0.5.1 */ if ( ! function_exists( 'oceanwp_blog_entry_meta' ) ) { function oceanwp_blog_entry_meta() { // Default sections $sections = array( 'author', 'date', 'categories', 'comments' ); // Get sections from Customizer $sections = get_theme_mod( 'ocean_blog_entry_meta', $sections ); // Turn into array if string if ( $sections && ! is_array( $sections ) ) { $sections = explode( ',', $sections ); } // Apply filters for easy modification $sections = apply_filters( 'ocean_blog_entry_meta', $sections ); // Return sections return $sections; } } /** * Returns blog single elements for the customizer * * @since 1.1.0 */ if ( ! function_exists( 'oceanwp_blog_single_elements' ) ) { function oceanwp_blog_single_elements() { // Default elements $elements = apply_filters( 'ocean_blog_single_elements', array( 'featured_image' => esc_html__( 'Featured Image', 'oceanwp' ), 'title' => esc_html__( 'Title', 'oceanwp' ), 'meta' => esc_html__( 'Meta', 'oceanwp' ), 'content' => esc_html__( 'Content', 'oceanwp' ), 'tags' => esc_html__( 'Tags', 'oceanwp' ), 'social_share' => esc_html__( 'Social Share', 'oceanwp' ), 'next_prev' => esc_html__( 'Next/Prev Links', 'oceanwp' ), 'author_box' => esc_html__( 'Author Box', 'oceanwp' ), 'related_posts' => esc_html__( 'Related Posts', 'oceanwp' ), 'single_comments' => esc_html__( 'Comments', 'oceanwp' ), ) ); // Return elements return $elements; } } /** * Returns blog single elements positioning * * @since 1.1.0 */ if ( ! function_exists( 'oceanwp_blog_single_elements_positioning' ) ) { function oceanwp_blog_single_elements_positioning() { // Default sections $sections = array( 'featured_image', 'title', 'meta', 'content', 'tags', 'social_share', 'next_prev', 'author_box', 'related_posts', 'single_comments' ); // Get sections from Customizer $sections = get_theme_mod( 'ocean_blog_single_elements_positioning', $sections ); // Turn into array if string if ( $sections && ! is_array( $sections ) ) { $sections = explode( ',', $sections ); } // Apply filters for easy modification $sections = apply_filters( 'ocean_blog_single_elements_positioning', $sections ); // Return sections return $sections; } } /** * Returns blog single meta * * @since 1.0.5.1 */ if ( ! function_exists( 'oceanwp_blog_single_meta' ) ) { function oceanwp_blog_single_meta() { // Default sections $sections = array( 'author', 'date', 'categories', 'comments' ); // Get sections from Customizer $sections = get_theme_mod( 'ocean_blog_single_meta', $sections ); // Turn into array if string if ( $sections && ! is_array( $sections ) ) { $sections = explode( ',', $sections ); } // Apply filters for easy modification $sections = apply_filters( 'ocean_blog_single_meta', $sections ); // Return sections return $sections; } } /** * Returns reading time * * @since 1.8.4 */ if ( ! function_exists( 'ocean_reading_time' ) ) { function ocean_reading_time() { global $post; $content = get_post_field( 'post_content', $post->ID ); $word_count = str_word_count( strip_tags( $content ) ); $reading_time = ceil( $word_count / 200 ); $reading_time = apply_filters( 'oceanwp_post_reading_time', $reading_time ); $owp_reading_time = printf( /* translators: 1: post reading time. */ esc_html__( '%1$s mins read', 'oceanwp' ), number_format_i18n( $reading_time ) ); } } /** * Comments and pingbacks * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_comment' ) ) { function oceanwp_comment( $comment, $args, $depth ) { switch ( $comment->comment_type ) : case 'pingback' : case 'trackback' : // Display trackbacks differently than normal comments. ?> <li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>"> <article id="comment-<?php comment_ID(); ?>" class="comment-container"> <p><?php esc_html_e( 'Pingback:', 'oceanwp' ); ?> <span <?php oceanwp_schema_markup( 'author_name' ); ?>><?php comment_author_link(); ?></span> <?php edit_comment_link( esc_html__( '(Edit)', 'oceanwp' ), '<span class="edit-link">', '</span>' ); ?></p> </article> <?php break; default : // Proceed with normal comments. global $post; ?> <li id="comment-<?php comment_ID(); ?>" class="comment-container"> <article <?php comment_class( 'comment-body' ); ?>> <?php echo get_avatar( $comment, apply_filters( 'ocean_comment_avatar_size', 150 ) ); ?> <div class="comment-content"> <div class="comment-author"> <span class="comment-link"><?php printf( esc_html__( '%s ', 'oceanwp' ), sprintf( '%s', get_comment_author_link() ) ); ?></span> <span class="comment-meta commentmetadata"> <?php if ( ! is_rtl() ) { ?> <span class="comment-date"><?php comment_date('j M Y'); ?></span> <?php } ?> <?php comment_reply_link( array_merge( $args, array( 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> <?php edit_comment_link(__( 'edit', 'oceanwp' )); ?> <?php if ( is_rtl() ) { ?> <span class="comment-date"><?php comment_date('j M Y'); ?></span> <?php } ?> </span> </div> <div class="clr"></div> <div class="comment-entry"> <?php if ( '0' == $comment->comment_approved ) : ?> <p class="comment-awaiting-moderation"><?php esc_html_e( 'Your comment is awaiting moderation.', 'oceanwp' ); ?></p> <?php endif; ?> <div class="comment-content"> <?php comment_text(); ?> </div> </div> </div> </article><!-- #comment-## --> <?php break; endswitch; // end comment_type check } } /** * Comment fields * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_modify_comment_form_fields' ) ) { function oceanwp_modify_comment_form_fields( $fields ) { $commenter = wp_get_current_commenter(); $req = get_option( 'require_name_email' ); // Labels. if ( $req ) { $comment_name = oceanwp_theme_strings( 'owp-string-comment-name-req', false, 'oceanwp' ); $comment_email = oceanwp_theme_strings( 'owp-string-comment-email-req', false, 'oceanwp' ); } else { $comment_name = oceanwp_theme_strings( 'owp-string-comment-name', false, 'oceanwp' ); $comment_email = oceanwp_theme_strings( 'owp-string-comment-email', false, 'oceanwp' ); } $comment_site = oceanwp_theme_strings( 'owp-string-comment-website', false, 'oceanwp' ); $fields['author'] = '<div class="comment-form-author"><label for="author" class="screen-reader-text">'. esc_html__( 'Enter your name or username to comment', 'oceanwp' ) . '</label><input type="text" name="author" id="author" value="'. esc_attr( $commenter['comment_author'] ) .'" placeholder="'. $comment_name .'" size="22" tabindex="0"'. ( $req ? ' aria-required="true"' : '' ) .' class="input-name" /></div>'; $fields['email'] = '<div class="comment-form-email"><label for="email" class="screen-reader-text">'. esc_html__( 'Enter your email address to comment', 'oceanwp' ) . '</label><input type="text" name="email" id="email" value="'. esc_attr( $commenter['comment_author_email'] ) .'" placeholder="'. $comment_email .'" size="22" tabindex="0"'. ( $req ? ' aria-required="true"' : '' ) .' class="input-email" /></div>'; $fields['url'] = '<div class="comment-form-url"><label for="url" class="screen-reader-text">'. esc_html__( 'Enter your website URL (optional)', 'oceanwp' ) . '</label><input type="text" name="url" id="url" value="'. esc_attr( $commenter['comment_author_url'] ) .'" placeholder="'. $comment_site .'" size="22" tabindex="0" class="input-website" /></div>'; return $fields; } add_filter( 'comment_form_default_fields', 'oceanwp_modify_comment_form_fields' ); } /** * Numbered Pagination * * @since 1.0.0 * @link https://codex.wordpress.org/Function_Reference/paginate_links */ if ( ! function_exists( 'oceanwp_pagination') ) { function oceanwp_pagination( $query = '', $echo = true ) { // Arrows with RTL support $prev_arrow = is_rtl() ? 'fa fa-angle-right' : 'fa fa-angle-left'; $next_arrow = is_rtl() ? 'fa fa-angle-left' : 'fa fa-angle-right'; // Get global $query if ( ! $query ) { global $wp_query; $query = $wp_query; } // Set vars $total = $query->max_num_pages; $big = 999999999; // Display pagination if total var is greater then 1 ( current query is paginated ) if ( $total > 1 ) { // Get current page if ( $current_page = get_query_var( 'paged' ) ) { $current_page = $current_page; } elseif ( $current_page = get_query_var( 'page' ) ) { $current_page = $current_page; } else { $current_page = 1; } // Get permalink structure if ( get_option( 'permalink_structure' ) ) { if ( is_page() ) { $format = 'page/%#%/'; } else { $format = '/%#%/'; } } else { $format = '&paged=%#%'; } $args = apply_filters( 'ocean_pagination_args', array( 'base' => str_replace( $big, '%#%', html_entity_decode( get_pagenum_link( $big ) ) ), 'format' => $format, 'current' => max( 1, $current_page ), 'total' => $total, 'mid_size' => 3, 'type' => 'list', 'prev_text' => '<span class="screen-reader-text">'. esc_attr__( 'Go to the previous page','oceanwp' ) .'</span><i class="'. $prev_arrow .'" aria-hidden="true"></i>', 'next_text' => '<span class="screen-reader-text">'. esc_attr__( 'Go to the next page','oceanwp' ) .'</span><i class="'. $next_arrow .'" aria-hidden="true"></i>', ) ); // Output pagination if ( $echo ) { echo '<div class="oceanwp-pagination clr">'. wp_kses_post( paginate_links( $args ) ) .'</div>'; } else { return '<div class="oceanwp-pagination clr">'. wp_kses_post( paginate_links( $args ) ) .'</div>'; } } } } /** * Next and previous pagination * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_pagejump' ) ) { function oceanwp_pagejump( $pages = '', $range = 4, $echo = true ) { // Vars global $wp_query; $output = ''; // Display next/previous pagination if ( $wp_query->max_num_pages > 1 ) { $output .= '<div class="page-jump clr">'; $output .= '<div class="alignleft newer-posts">'; $output .= get_previous_posts_link( '<span aria-hidden="true">←</span> '. esc_attr__( 'Newer Posts', 'oceanwp' ) ); $output .= '</div>'; $output .= '<div class="alignright older-posts">'; $output .= get_next_posts_link( esc_attr__( 'Older Posts', 'oceanwp' ) .' <span aria-hidden="true">→</span>' ); $output .= '</div>'; $output .= '</div>'; if ( $echo ) { echo wp_kses_post( $output ); } else { return $output; } } } } /** * Infinite Scroll Pagination * * @since 1.0.4 */ if ( ! function_exists( 'oceanwp_infinite_scroll' ) ) { function oceanwp_infinite_scroll( $type = 'standard' ) { // Load infinite scroll script wp_enqueue_script( 'infinitescroll' ); // Last text $last = get_theme_mod( 'ocean_blog_infinite_scroll_last_text' ); $last = oceanwp_tm_translation( 'ocean_blog_infinite_scroll_last_text', $last ); $last = $last ? $last: esc_html__( 'End of content', 'oceanwp' ); // Error text $error = get_theme_mod( 'ocean_blog_infinite_scroll_error_text' ); $error = oceanwp_tm_translation( 'ocean_blog_infinite_scroll_error_text', $error ); $error = $error ? $error: esc_html__( 'No more pages to load', 'oceanwp' ); // Output pagination HTML $output = ''; $output .= '<div class="scroller-status">'; $output .= '<div class="loader-ellips infinite-scroll-request">'; $output .= '<span class="loader-ellips__dot"></span>'; $output .= '<span class="loader-ellips__dot"></span>'; $output .= '<span class="loader-ellips__dot"></span>'; $output .= '<span class="loader-ellips__dot"></span>'; $output .= '</div>'; $output .= '<p class="scroller-status__message infinite-scroll-last">'. $last .'</p>'; $output .= '<p class="scroller-status__message infinite-scroll-error">'. $error .'</p>'; $output .= '</div>'; $output .= '<div class="infinite-scroll-nav clr">'; $output .= '<div class="alignleft newer-posts">'. get_previous_posts_link( '<span aria-hidden="true">←</span> '. esc_attr__( 'Newer Posts', 'oceanwp' ) ) .'</div>'; $output .= '<div class="alignright older-posts">'. get_next_posts_link( esc_attr__( 'Older Posts', 'oceanwp' ) .' <span aria-hidden="true">→</span>' ) .'</div>'; $output .= '</div>'; echo wp_kses_post( $output ); } } /** * Blog Pagination * Used to load the correct pagination function for blog archives * Execute the correct pagination function based on the theme settings * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_blog_pagination' ) ) { function oceanwp_blog_pagination() { // Admin Options $blog_style = get_theme_mod( 'ocean_blog_style', 'large-entry' ); $pagination_style = get_theme_mod( 'ocean_blog_pagination_style', 'standard' ); // Category based settings if ( is_category() ) { // Get taxonomy meta $term = get_query_var( 'cat' ); $term_data = get_option( 'category_'. $term ); $term_style = $term_pagination = ''; if ( isset( $term_data['oceanwp_term_style'] ) ) { $term_style = '' != $term_data['oceanwp_term_style'] ? $term_data['oceanwp_term_style'] .'' : $term_style; } if ( isset( $term_data['oceanwp_term_pagination'] ) ) { $term_pagination = '' != $term_data['oceanwp_term_pagination'] ? $term_data['oceanwp_term_pagination'] .'' : ''; } if ( $term_pagination ) { $pagination_style = $term_pagination; } } // Set default $type for infnite scroll if ( 'grid-entry' == $blog_style ) { $infinite_type = 'standard-grid'; } else { $infinite_type = 'standard'; } // Execute the correct pagination function if ( 'infinite_scroll' == $pagination_style ) { oceanwp_infinite_scroll( $infinite_type ); } else if ( $pagination_style == 'next_prev' ) { oceanwp_pagejump(); } else { oceanwp_pagination(); } } } /** * Returns the correct pagination style * * @since 1.0.4 */ if ( ! function_exists( 'oceanwp_blog_pagination_style' ) ) { function oceanwp_blog_pagination_style() { // Get default style from Customizer $style = get_theme_mod( 'ocean_blog_pagination_style', 'standard' ); // Apply filters for child theming $style = apply_filters( 'ocean_blog_pagination_style', $style ); // Return style return $style; } } /** * Get excerpt * * @since 1.5.6 */ if ( ! function_exists( 'oceanwp_excerpt' ) ) { function oceanwp_excerpt( $length = 30 ) { global $post; $output = ''; // Check for custom excerpt if ( isset( $post->ID ) && has_excerpt( $post->ID ) ) { $output = $post->post_excerpt; } // No custom excerpt elseif ( isset( $post->post_content ) ) { // Check for more tag and return content if it exists if ( strpos( $post->post_content, '<!--more-->' ) ) { $output = apply_filters( 'the_content', get_the_content() ); } // No more tag defined else { $output = wp_trim_words( strip_shortcodes( $post->post_content ), $length ); } } $output = apply_filters('oceanwp_excerpt', $output); return $output; } } /*-------------------------------------------------------------------------------*/ /* [ Footer ] /*-------------------------------------------------------------------------------*/ /** * Display footer widgets * * @since 1.1.2 */ if ( ! function_exists( 'oceanwp_display_footer_widgets' ) ) { function oceanwp_display_footer_widgets() { // Return true by default $return = true; // Return false if disabled via Customizer if ( true != get_theme_mod( 'ocean_footer_widgets', true ) ) { $return = false; } // Apply filters and return return apply_filters( 'ocean_display_footer_widgets', $return ); } } /** * Display footer bottom * * @since 1.1.2 */ if ( ! function_exists( 'oceanwp_display_footer_bottom' ) ) { function oceanwp_display_footer_bottom() { // Return true by default $return = true; // Return false if disabled via Customizer if ( true != get_theme_mod( 'ocean_footer_bottom', true ) ) { $return = false; } // Apply filters and return return apply_filters( 'ocean_display_footer_bottom', $return ); } } /** * Display scrool up button * * @since 1.5.0 */ if ( ! function_exists( 'oceanwp_display_scroll_up_button' ) ) { function oceanwp_display_scroll_up_button() { // Return true by default $return = true; // Return false if disabled via Customizer if ( true != get_theme_mod( 'ocean_scroll_top', true ) ) { $return = false; } // Apply filters and return return apply_filters( 'ocean_display_scroll_up_button', $return ); } } /** * Footer template * I make a function to be able to remove it for the Beaver Themer plugin * * @since 1.2.5 */ if ( ! function_exists( 'oceanwp_footer_template' ) ) { function oceanwp_footer_template() { if ( oceanwp_display_footer_widgets() || oceanwp_display_footer_bottom() ) { get_template_part( 'partials/footer/layout' ); } } add_action( 'ocean_footer', 'oceanwp_footer_template' ); } /** * Add classes to the footer wrap * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_footer_classes' ) ) { function oceanwp_footer_classes() { // Setup classes array $classes = array(); // Default class $classes[] = 'site-footer'; // Parallax footer if ( 'on' == get_theme_mod( 'ocean_parallax_footer', 'off' ) ) { $classes[] = 'parallax-footer'; } // Set keys equal to vals $classes = array_combine( $classes, $classes ); // Apply filters for child theming $classes = apply_filters( 'ocean_footer_classes', $classes ); // Turn classes into space seperated string $classes = implode( ' ', $classes ); // return classes return $classes; } } /*-------------------------------------------------------------------------------*/ /* [ WooCommerce ] /*-------------------------------------------------------------------------------*/ /** * Checks if on the WooCommerce shop page. * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_is_woo_shop' ) ) { function oceanwp_is_woo_shop() { if ( ! OCEANWP_WOOCOMMERCE_ACTIVE ) { return false; } elseif ( function_exists( 'is_shop' ) && is_shop() ) { return true; } } } /** * Checks if on a WooCommerce tax. * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_is_woo_tax' ) ) { function oceanwp_is_woo_tax() { if ( ! OCEANWP_WOOCOMMERCE_ACTIVE ) { return false; } elseif ( ! is_tax() ) { return false; } elseif ( function_exists( 'is_product_taxonomy' ) ) { if ( is_product_taxonomy() ) { return true; } } } } /** * Checks if on singular WooCommerce product post. * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_is_woo_single' ) ) { function oceanwp_is_woo_single() { if ( ! OCEANWP_WOOCOMMERCE_ACTIVE ) { return false; } elseif ( is_woocommerce() && is_singular( 'product' ) ) { return true; } } } /*-------------------------------------------------------------------------------*/ /* [ Other ] /*-------------------------------------------------------------------------------*/ /** * Theme Branding * * @since 1.4.0 */ if ( ! function_exists( 'oceanwp_theme_branding' ) ) { function oceanwp_theme_branding() { $return = esc_html__( 'OceanWP', 'oceanwp' ); // Return and apply filters for child theming return apply_filters( 'ocean_theme_branding', $return ); } } /** * Return padding/margin values for customizer * * @since 1.4.9 */ if ( ! function_exists( 'oceanwp_spacing_css' ) ) { function oceanwp_spacing_css( $top, $right, $bottom, $left ) { // Add px and 0 if no value $s_top = ( isset( $top ) && '' !== $top ) ? intval( $top ) . 'px ' : '0px '; $s_right = ( isset( $right ) && '' !== $right ) ? intval( $right ) . 'px ' : '0px '; $s_bottom = ( isset( $bottom ) && '' !== $bottom ) ? intval( $bottom ) . 'px ' : '0px '; $s_left = ( isset( $left ) && '' !== $left ) ? intval( $left ) . 'px' : '0px'; // Return one value if it is the same on every inputs if ( ( intval( $s_top ) === intval( $s_right ) ) && ( intval( $s_right ) === intval( $s_bottom ) ) && ( intval( $s_bottom ) === intval( $s_left ) ) ) { return $s_left; } // Return return $s_top . $s_right . $s_bottom . $s_left; } } /** * Translation support * * @since 1.3.7 */ if ( ! function_exists( 'oceanwp_hamburgers_styles' ) ) { function oceanwp_hamburgers_styles() { // Styles $style = array( 'default' => esc_html__( 'Default Icon', 'oceanwp' ), '3dx' => esc_html__( '3D X', 'oceanwp' ), '3dx-r' => esc_html__( '3D X Reverse', 'oceanwp' ), '3dy' => esc_html__( '3D Y', 'oceanwp' ), '3dy-r' => esc_html__( '3D Y Reverse', 'oceanwp' ), '3dxy' => esc_html__( '3D XY', 'oceanwp' ), '3dxy-r' => esc_html__( '3D XY Reverse', 'oceanwp' ), 'arrow' => esc_html__( 'Arrow', 'oceanwp' ), 'arrow-r' => esc_html__( 'Arrow Reverse', 'oceanwp' ), 'arrowalt' => esc_html__( 'Arrowalt', 'oceanwp' ), 'arrowalt-r' => esc_html__( 'Arrowalt Reverse', 'oceanwp' ), 'arrowturn' => esc_html__( 'Arrowturn', 'oceanwp' ), 'arrowturn-r' => esc_html__( 'Arrowturn Reverse', 'oceanwp' ), 'boring' => esc_html__( 'Boring', 'oceanwp' ), 'collapse' => esc_html__( 'Collapse', 'oceanwp' ), 'collapse-r' => esc_html__( 'Collapse Reverse', 'oceanwp' ), 'elastic' => esc_html__( 'Elastic', 'oceanwp' ), 'elastic-r' => esc_html__( 'Elastic Reverse', 'oceanwp' ), 'minus' => esc_html__( 'Minus', 'oceanwp' ), 'slider' => esc_html__( 'Slider', 'oceanwp' ), 'slider-r' => esc_html__( 'Slider Reverse', 'oceanwp' ), 'spin' => esc_html__( 'Spin', 'oceanwp' ), 'spin-r' => esc_html__( 'Spin Reverse', 'oceanwp' ), 'spring' => esc_html__( 'Spring', 'oceanwp' ), 'spring-r' => esc_html__( 'Spring Reverse', 'oceanwp' ), 'stand' => esc_html__( 'Stand', 'oceanwp' ), 'stand-r' => esc_html__( 'Stand Reverse', 'oceanwp' ), 'squeeze' => esc_html__( 'Squeeze', 'oceanwp' ), 'vortex' => esc_html__( 'Vortex', 'oceanwp' ), 'vortex-r' => esc_html__( 'Vortex Reverse', 'oceanwp' ), ); // Apply filters for child theming $style = apply_filters( 'ocean_hamburgers_styles', $style ); // Return return $style; } } /** * Translation support * * @since 1.1.4 */ if ( ! function_exists( 'oceanwp_tm_translation' ) ) { function oceanwp_tm_translation( $id, $val = '' ) { // Translate theme mod val if ( $val ) { // Polylang Translation if ( function_exists( 'pll__' ) && $id ) { $val = pll__( $val ); } // Return the value return $val; } } } /** * Register translation strings * * @since 1.1.4 */ if ( ! function_exists( 'oceanwp_register_tm_strings' ) ) { function oceanwp_register_tm_strings() { return apply_filters( 'ocean_register_tm_strings', array( 'ocean_top_bar_content' => '', 'ocean_after_header_content' => '', 'ocean_mobile_menu_text' => esc_html__( 'Menu', 'oceanwp' ), 'ocean_mobile_menu_close_text' => esc_html__( 'Close', 'oceanwp' ), 'ocean_mobile_menu_close_btn_text' => esc_html__( 'Close Menu', 'oceanwp' ), 'ocean_footer_copyright_text' => esc_html__( 'Copyright [oceanwp_date] - OceanWP Theme by Nick', 'oceanwp' ), 'ocean_woo_menu_icon_custom_link' => '', 'ocean_blog_infinite_scroll_last_text' => '', 'ocean_blog_infinite_scroll_error_text' => '', 'ocean_woo_off_canvas_filter_text' => esc_html__( 'Filter', 'oceanwp' ), 'ocean_woo_infinite_scroll_last_text' => '', 'ocean_woo_infinite_scroll_error_text' => '', ) ); } } /** * Returns array of Social Options * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_social_options' ) ) { function oceanwp_social_options() { return apply_filters( 'ocean_social_options', array( 'twitter' => array( 'label' => esc_html__( 'Twitter', 'oceanwp' ), 'icon_class' => 'fab fa-twitter', ), 'facebook' => array( 'label' => esc_html__( 'Facebook', 'oceanwp' ), 'icon_class' => 'fab fa-facebook', ), 'pinterest' => array( 'label' => esc_html__( 'Pinterest', 'oceanwp' ), 'icon_class' => 'fab fa-pinterest-p', ), 'dribbble' => array( 'label' => esc_html__( 'Dribbble', 'oceanwp' ), 'icon_class' => 'fab fa-dribbble', ), 'vk' => array( 'label' => esc_html__( 'VK', 'oceanwp' ), 'icon_class' => 'fab fa-vk', ), 'instagram' => array( 'label' => esc_html__( 'Instagram', 'oceanwp' ), 'icon_class' => 'fab fa-instagram', ), 'linkedin' => array( 'label' => esc_html__( 'LinkedIn', 'oceanwp' ), 'icon_class' => 'fab fa-linkedin', ), 'tumblr' => array( 'label' => esc_html__( 'Tumblr', 'oceanwp' ), 'icon_class' => 'fab fa-tumblr', ), 'github' => array( 'label' => esc_html__( 'Github', 'oceanwp' ), 'icon_class' => 'fab fa-github-alt', ), 'flickr' => array( 'label' => esc_html__( 'Flickr', 'oceanwp' ), 'icon_class' => 'fab fa-flickr', ), 'skype' => array( 'label' => esc_html__( 'Skype', 'oceanwp' ), 'icon_class' => 'fab fa-skype', ), 'youtube' => array( 'label' => esc_html__( 'Youtube', 'oceanwp' ), 'icon_class' => 'fab fa-youtube', ), 'vimeo' => array( 'label' => esc_html__( 'Vimeo', 'oceanwp' ), 'icon_class' => 'fab fa-vimeo-square', ), 'vine' => array( 'label' => esc_html__( 'Vine', 'oceanwp' ), 'icon_class' => 'fab fa-vine', ), 'xing' => array( 'label' => esc_html__( 'Xing', 'oceanwp' ), 'icon_class' => 'fab fa-xing', ), 'yelp' => array( 'label' => esc_html__( 'Yelp', 'oceanwp' ), 'icon_class' => 'fab fa-yelp', ), 'tripadvisor' => array( 'label' => esc_html__( 'Tripadvisor', 'oceanwp' ), 'icon_class' => 'fab fa-tripadvisor', ), 'rss' => array( 'label' => esc_html__( 'RSS', 'oceanwp' ), 'icon_class' => 'fa fa-rss', ), 'email' => array( 'label' => esc_html__( 'Email', 'oceanwp' ), 'icon_class' => 'fa fa-envelope', ), 'tiktok' => array( 'label' => esc_html__( 'TikTok', 'oceanwp' ), 'icon_class' => 'fab fa-tiktok' ), 'medium' => array( 'label' => esc_html__( 'Medium', 'oceanwp' ), 'icon_class' => 'fab fa-medium-m' ) ) ); } } /** * Grid Columns * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_grid_columns' ) ) { function oceanwp_grid_columns() { return apply_filters( 'ocean_grid_columns', array( '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', '7' => '7', ) ); } } /** * Minify CSS * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_minify_css' ) ) { function oceanwp_minify_css( $css = '' ) { // Return if no CSS if ( ! $css ) return; // Normalize whitespace $css = preg_replace( '/\s+/', ' ', $css ); // Remove ; before } $css = preg_replace( '/;(?=\s*})/', '', $css ); // Remove space after , : ; { } */ > $css = preg_replace( '/(,|:|;|\{|}|\*\/|>) /', '$1', $css ); // Remove space before , ; { } $css = preg_replace( '/ (,|;|\{|})/', '$1', $css ); // Strips leading 0 on decimal values (converts 0.5px into .5px) $css = preg_replace( '/(:| )0\.([0-9]+)(%|em|ex|px|in|cm|mm|pt|pc)/i', '${1}.${2}${3}', $css ); // Strips units if value is 0 (converts 0px to 0) $css = preg_replace( '/(:| )(\.?)0(%|em|ex|px|in|cm|mm|pt|pc)/i', '${1}0', $css ); // Trim $css = trim( $css ); // Return minified CSS return $css; } } /** * Array of Font Awesome Icons for the scroll up button * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_get_awesome_icons' ) ) { function oceanwp_get_awesome_icons( $return = 'up_arrows', $default = 'none' ) { // Add none to top of array $icons_array = array( 'none' =>'' ); // Define return icons $return_icons = array(); // Returns up arrows only if ( 'up_arrows' == $return ) { $return_icons = array('fa fa-chevron-up','fa fa-caret-up','fa fa-angle-up','fa fa-angle-double-up','fa fa-long-arrow-alt-up','fa fa-arrow-alt-circle-up','fa fa-arrow-up','fa fa-level-up-alt','fa fa-caret-square-up'); $return_icons = array_combine($return_icons, $return_icons); } return apply_filters( 'ocean_get_awesome_icons', array_merge( $icons_array, $return_icons ) ); } } /** * Array of Icons for the WooCommerce cart * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_get_cart_icons' ) ) { function oceanwp_get_cart_icons( $default = 'icon-handbag' ) { // Returns icons $return_icons = array( 'icon-basket', 'icon-handbag', 'fas fa-shopping-basket', 'fas fa-shopping-bag', 'fas fa-shopping-cart' ); $return_icons = array_combine( $return_icons, $return_icons ); return apply_filters( 'ocean_get_cart_icons', array_merge( $return_icons ) ); } } /** * Returns sidr menu source * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_sidr_menu_source' ) ) { function oceanwp_sidr_menu_source() { // Return if is not sidebar mobile style if ( 'sidebar' != oceanwp_mobile_menu_style() ) { return; } // Define array of items $items = array(); // Add close button if ( get_theme_mod( 'ocean_mobile_menu_close_btn', true ) ) { $items['sidrclose'] = '#sidr-close'; } // If has mobile menu if ( has_nav_menu( 'mobile_menu' ) ) { $items['mobile-nav'] = '#mobile-nav'; } // Add main navigation else { // Navigation $items['nav'] = '#site-navigation'; // Add top bar menu if ( has_nav_menu( 'topbar_menu' ) ) { $items['top-nav'] = '#top-bar-nav'; } } if ( 'full_screen' != oceanwp_header_style() ) { // Add social menu if ( true == get_theme_mod( 'ocean_menu_social', false ) && get_theme_mod( 'ocean_menu_social_profiles' ) ) { $items['social'] = '#site-header .oceanwp-social-menu'; } } // Add search form if ( get_theme_mod( 'ocean_mobile_menu_search', true ) ) { $items['search'] = '#mobile-menu-search'; } // Apply filters for child theming $items = apply_filters( 'ocean_mobile_menu_source', $items ); // Turn items into comma seperated list $items = implode( ', ', $items ); // Return return $items; } } /** * Query Autoptimize activation - check required if using a page builder * * @since 1.1.1 */ if ( ! function_exists( 'oceanwp_is_autoptimize_activated' ) ) { function oceanwp_is_autoptimize_activated() { return class_exists( 'autoptimizeBase' ) ? true : false; } } /** * Returns header template content * * @since 1.1.1 */ if ( ! function_exists( 'oceanwp_header_template_content' ) ) { function oceanwp_header_template_content() { // Return false if custom header is not selected if ( 'custom' != oceanwp_header_style() ) { return false; } // Get the template ID $content = oceanwp_custom_header_template(); // Get template content if ( ! empty( $content ) ) { $template = get_post( $content ); if ( $template && ! is_wp_error( $template ) ) { $content = $template->post_content; } } // Apply filters and return content return apply_filters( 'ocean_header_template_content', $content ); } } /** * Returns social menu content * * @since 1.4.0 */ if ( ! function_exists( 'oceanwp_social_menu_content' ) ) { function oceanwp_social_menu_content() { // Get template ID from Customizer $content = get_theme_mod( 'ocean_menu_social_template' ); // Get Polylang Translation of template if ( function_exists( 'pll_get_post' ) ) { $content = pll_get_post( $content, pll_current_language() ); } // Get template content if ( ! empty( $content ) ) { $template = get_post( $content ); if ( $template && ! is_wp_error( $template ) ) { $content = $template->post_content; } } // Return content return apply_filters( 'oceanwp_social_menu_content', $content ); } } /** * Custom footer style template * * @since 1.5.22 */ if ( ! function_exists( 'oceanwp_custom_footer_template' ) ) { function oceanwp_custom_footer_template() { // Get template from customizer setting $template = get_theme_mod( 'ocean_footer_widgets_template' ); // Apply filters and return return apply_filters( 'ocean_custom_footer_template', $template ); } } /** * Returns footer template content * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_footer_template_content' ) ) { function oceanwp_footer_template_content() { // Return false if disabled via Customizer if ( true != get_theme_mod( 'ocean_footer_widgets', true ) ) { return null; } // Get template ID from Customizer $content = oceanwp_custom_footer_template(); // Get Polylang Translation of template if ( function_exists( 'pll_get_post' ) ) { $content = pll_get_post( $content, pll_current_language() ); } // Get template content if ( ! empty( $content ) ) { $template = get_post( $content ); if ( $template && ! is_wp_error( $template ) ) { $content = $template->post_content; } } // Apply filters and return content return apply_filters( 'ocean_footer_template_content', $content ); } } /** * Returns topbar template content * * @since 1.1.1 */ if ( ! function_exists( 'oceanwp_topbar_template_content' ) ) { function oceanwp_topbar_template_content() { // Get the template ID $content = get_theme_mod( 'ocean_top_bar_template' ); // Get Polylang Translation of template if ( function_exists( 'pll_get_post' ) ) { $content = pll_get_post( $content, pll_current_language() ); } // Get template content if ( ! empty( $content ) ) { $template = get_post( $content ); if ( $template && ! is_wp_error( $template ) ) { $content = $template->post_content; } } // Apply filters and return content return apply_filters( 'oceanwp_topbar_template_content', $content ); } } /** * Returns topbar social alt content * * @since 1.0.0 */ if ( ! function_exists( 'oceanwp_top_bar_social_alt_content' ) ) { function oceanwp_top_bar_social_alt_content() { // Get page ID from Customizer $content = get_theme_mod( 'ocean_top_bar_social_alt' ); // Get the template ID $template = get_theme_mod( 'ocean_top_bar_social_alt_template' ); if ( ! empty( $template ) ) { $content = $template; } // Get Polylang Translation of template if ( function_exists( 'pll_get_post' ) ) { $content = pll_get_post( $content, pll_current_language() ); } // Get page content if ( ! empty( $content ) ) { $template = get_post( $content ); if ( $template && ! is_wp_error( $template ) ) { $content = $template->post_content; } } // Return content return apply_filters( 'oceanwp_top_bar_social_alt_content', $content ); } } /** * Return correct schema markup * * @since 1.2.10 */ if ( ! function_exists( 'oceanwp_get_schema_markup' ) ) { function oceanwp_get_schema_markup( $location ) { // Return if disable if ( ! get_theme_mod( 'ocean_schema_markup', true ) ) { return null; } // Default $schema = $itemprop = $itemtype = ''; // HTML if ( 'html' == $location ) { if ( is_home() || is_front_page() ) { $schema = 'itemscope="itemscope" itemtype="https://schema.org/WebPage"'; } elseif ( is_category() || is_tag() ) { $schema = 'itemscope="itemscope" itemtype="https://schema.org/Blog"'; } elseif ( is_singular( 'post') ) { $schema = 'itemscope="itemscope" itemtype="https://schema.org/Article"'; } elseif ( is_page() ) { $schema = 'itemscope="itemscope" itemtype="https://schema.org/WebPage"'; } else { $schema = 'itemscope="itemscope" itemtype="https://schema.org/WebPage"'; } return apply_filters( 'oceanwp_schema_location_html', $schema ); } // Header elseif ( 'header' == $location ) { $schema = 'itemscope="itemscope" itemtype="https://schema.org/WPHeader"'; } // Logo elseif ( 'logo' == $location ) { $schema = 'itemscope itemtype="https://schema.org/Brand"'; } // Navigation elseif ( 'site_navigation' == $location ) { $schema = 'itemscope="itemscope" itemtype="https://schema.org/SiteNavigationElement"'; } // Main elseif ( 'main' == $location ) { $itemtype = 'https://schema.org/WebPageElement'; $itemprop = 'mainContentOfPage'; } // Sidebar elseif ( 'sidebar' == $location ) { $schema = 'itemscope="itemscope" itemtype="https://schema.org/WPSideBar"'; } // Footer widgets elseif ( 'footer' == $location ) { $schema = 'itemscope="itemscope" itemtype="https://schema.org/WPFooter"'; } // Headings elseif ( 'headline' == $location ) { $schema = 'itemprop="headline"'; } // Posts elseif ( 'entry_content' == $location ) { $schema = 'itemprop="text"'; } // Publish date elseif ( 'publish_date' == $location ) { $schema = 'itemprop="datePublished"'; } // Modified date elseif ( 'modified_date' == $location ) { $schema = 'itemprop="dateModified"'; } // Author name elseif ( 'author_name' == $location ) { $schema = 'itemprop="name"'; } // Author link elseif ( 'author_link' == $location ) { $schema = 'itemprop="author" itemscope="itemscope" itemtype="https://schema.org/Person"'; } // Item elseif ( 'item' == $location ) { $schema = 'itemprop="item"'; } // Url elseif ( 'url' == $location ) { $schema = 'itemprop="url"'; } // Position elseif ( 'position' == $location ) { $schema = 'itemprop="position"'; } // Image elseif ( 'image' == $location ) { $schema = 'itemprop="image"'; } return ' ' . apply_filters( 'ocean_schema_markup', $schema ); } } /** * Outputs correct schema markup * * @since 1.2.10 */ if ( ! function_exists( 'oceanwp_schema_markup' ) ) { function oceanwp_schema_markup( $location ) { echo oceanwp_get_schema_markup( $location ); } } /** * Returns error page template content * * @since 1.1.1 */ if ( ! function_exists( 'oceanwp_error_page_template_content' ) ) { function oceanwp_error_page_template_content() { // Get template ID from Customizer $content = get_theme_mod( 'ocean_error_page_template' ); // Get Polylang Translation of template if ( function_exists( 'pll_get_post' ) ) { $content = pll_get_post( $content, pll_current_language() ); } // Get template content if ( ! empty( $content ) ) { $template = get_post( $content ); if ( $template && ! is_wp_error( $template ) ) { $content = $template->post_content; } } // Apply filters and return content return apply_filters( 'ocean_error_page_template_content', $content ); } } /** * Default color picker palettes * * @since 1.4.9 */ if ( ! function_exists( 'oceanwp_default_color_palettes' ) ) { function oceanwp_default_color_palettes() { $palettes = array( '#000000', '#ffffff', '#dd3333', '#dd9933', '#eeee22', '#81d742', '#1e73be', '#8224e3', ); // Apply filters and return return apply_filters( 'ocean_default_color_palettes', $palettes ); } } /** * Create list of attributes into a string and apply filter baes on context * * @since 1.8.7 * @param string $context The context, to build filter name. * @param array $attributes To load defaults attributes. * @param array $args Custom data to pass to filter. * @return string String of HTML attributes and values. */ function owp_attr( $context, $attributes = array(), $args = array() ) { $attributes = owp_parse_attr( $context, $attributes, $args ); $output = ''; // loop through attributes and build attribute string. foreach ( $attributes as $key => $value ) { if ( ! $value ) { continue; } if ( true === $value ) { $output .= esc_html( $key ) . ' '; } else { $output .= sprintf( '%s="%s" ', esc_html( $key ), esc_attr( $value ) ); } } $output = apply_filters( "owp_attr_{$context}_output", $output, $attributes, $context, $args ); return trim( $output ); } /** * Create list of attributes into a string and apply filter baes on context * * @since 1.8.7 * @param string $context The context, to build filter name. * @param array $attributes To load defaults attributes. * @param array $args Custom data to pass to filter. * @return string String of HTML attributes and values. */ function owp_parse_attr( $context, $attributes = array(), $args = array() ) { $defaults = array( 'class' => sanitize_html_class( $context ), ); $attributes = wp_parse_args( $attributes, $defaults ); // Apply filter based on context. return apply_filters( "owp_attr_{$context}", $attributes, $context, $args ); }