Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- define( 'KLEO_THEME_VERSION', '4.2.12' );
- /* Configuration array */
- global $kleo_config;
- //Post image sizes for carousels and galleries
- $kleo_config['post_gallery_img_width'] = 480;
- $kleo_config['post_gallery_img_height'] = 270;
- //Image width for big images like on single post page
- $kleo_config['post_single_img_width'] = 1200;
- $kleo_config['blog_layouts'] = array(
- 'masonry' => 'Grid Masonry',
- 'small' => 'Small Left Thumbnail',
- 'standard' => 'Standard'
- );
- $kleo_config['blog_meta_elements'] = array(
- 'avatar' => 'Author Avatar',
- 'date' => 'Date',
- 'archive' => 'Archive Link',
- 'profile' => 'Profile Icon',
- 'author_link' => 'Profile Link',
- 'message' => 'Message Link',
- 'categories' => 'Categories',
- 'tags' => 'Tags',
- 'comments' => 'Comments',
- );
- $kleo_config['blog_meta_defaults'] = array( 'author_link', 'date', 'categories', 'tags', 'comments' );
- //define dynamic styles path
- $upload_dir = wp_upload_dir();
- if ( is_ssl() ) {
- if ( strpos( $upload_dir['baseurl'], 'https://' ) === false ) {
- $upload_dir['baseurl'] = str_ireplace( 'http', 'https', $upload_dir['baseurl'] );
- }
- }
- $kleo_config['upload_basedir'] = $upload_dir['basedir'];
- $kleo_config['custom_style_path'] = $upload_dir['basedir'] . '/custom_styles';
- $kleo_config['custom_style_url'] = $upload_dir['baseurl'] . '/custom_styles';
- $kleo_config['image_overlay'] = '<span class="hover-element"><i>+</i></span>';
- //define site style sets
- $kleo_config['style_sets'] = array( 'header', 'main', 'alternate', 'side', 'footer', 'socket' );
- $kleo_config['font_sections'] = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'body', 'header' );
- //physical file template mapping
- $kleo_config['tpl_map'] = array(
- 'page-templates/left-sidebar.php' => 'left',
- 'page-templates/right-sidebar.php' => 'right',
- 'page-templates/full-width.php' => 'no',
- 'page-templates/left-right-sidebars.php' => '3lr',
- 'page-templates/left-two-sidebars.php' => '3ll',
- 'page-templates/right-two-sidebars.php' => '3rr',
- );
- /***************************************************
- * :: Framework initialization with required plugins
- ***************************************************/
- //instance of our theme framework
- global $kleo_theme;
- /**
- * @return Kleo
- */
- function sq_kleo() {
- return Kleo::instance();
- }
- $kleo_theme = sq_kleo();
- if ( is_admin() ) {
- require_once KLEO_LIB_DIR . '/required-plugins.php';
- }
- /***************************************************
- * :: Load Theme functions
- ***************************************************/
- add_action( 'after_setup_theme', 'kleo_theme_functions', 12 );
- function kleo_theme_functions() {
- /* Plugins and functionality */
- // BuddyPress compatibility
- if ( function_exists( 'bp_is_active' ) ) {
- require_once( KLEO_LIB_DIR . '/plugin-buddypress/config.php' ); //compatibility with buddypress plugin
- }
- // bbPress compatibility
- if ( class_exists( 'bbPress' ) ) {
- require_once( KLEO_LIB_DIR . '/plugin-bbpress/config.php' ); //compatibility with bbpress plugin
- }
- /* Woocommerce compatibility */
- if ( class_exists( 'WooCommerce' ) ) {
- require_once( KLEO_LIB_DIR . '/plugin-woocommerce/config.php' );
- }
- // Paid memberships Pro compatibility
- if ( function_exists( 'pmpro_url' ) ) {
- require_once( KLEO_LIB_DIR . '/plugin-pmpro/config.php' );
- }
- // Visual composer compatibility
- if ( function_exists( 'vc_set_as_theme' ) ) {
- require_once( KLEO_LIB_DIR . '/plugin-vc/config.php' );
- }
- // Compatibility with GeoDirectory plugin
- if ( defined( 'GEODIRECTORY_VERSION' ) ) {
- require_once( KLEO_LIB_DIR . '/plugin-geodirectory/config.php' );
- }
- // Compatibility with Sensei plugin
- if ( class_exists( 'WooThemes_Sensei' ) ) {
- require_once( KLEO_LIB_DIR . '/plugin-sensei/config.php' );
- }
- // Compatibility Bp Profile Search
- if ( defined( 'BPS_VERSION' ) ) {
- require_once( KLEO_LIB_DIR . '/plugin-bp-profile-search/config.php' );
- }
- // Posts likes
- if ( sq_option( 'likes_status', 1 ) == 1 ) {
- require_once( KLEO_LIB_DIR . '/item-likes.php' );
- }
- // Resize on the fly
- require_once( KLEO_LIB_DIR . '/aq_resizer.php' );
- // menu-items-visibility-control plugin compatibility
- if ( class_exists( 'Boom_Walker_Nav_Menu_Edit' ) ) {
- require_once( KLEO_LIB_DIR . '/plugin-menu-items-visibility-control/config.php' );
- }
- /* Custom menu */
- require_if_theme_supports( 'kleo-mega-menu', KLEO_LIB_DIR . '/menu-custom.php' );
- /* Custom menu items */
- require_if_theme_supports( 'kleo-menu-items', KLEO_LIB_DIR . '/menu-items.php' );
- /* Portfolio module */
- if ( sq_option( 'module_portfolio', 1 ) == 1 ) {
- require KLEO_LIB_DIR . '/portfolio.php';
- }
- /* Include admin customizations */
- if ( is_admin() ) {
- //Metaboxes
- require_once( KLEO_LIB_DIR . '/metaboxes.php' );
- }
- if ( is_admin() || is_customize_preview() ) {
- require_once( KLEO_LIB_DIR . '/options.php' );
- }
- //Modules
- require_once( KLEO_LIB_DIR . '/modules.php' );
- }
- /***************************************************
- * :: Theme panel
- ***************************************************/
- if ( is_admin() ) {
- require_once( KLEO_LIB_DIR . '/theme-panel/init.php' );
- }
- /***************************************************
- * :: 1 Click Install
- ***************************************************/
- if ( is_admin() ) {
- require_once( KLEO_LIB_DIR . '/importer/import.php' );
- }
- /***************************************************
- * :: Load post types class
- ***************************************************/
- require_once KLEO_LIB_DIR . '/post-types.php';
- /* Testimonials module */
- if ( sq_option( 'module_testimonials', 1 ) == 1 ) {
- require KLEO_LIB_DIR . '/testimonials.php';
- }
- /* Clients module */
- if ( sq_option( 'module_clients', 1 ) == 1 ) {
- require KLEO_LIB_DIR . '/clients.php';
- }
- /***************************************************
- * :: Theme options
- ***************************************************/
- if ( is_admin() || is_customize_preview() ) {
- //Options panel
- if ( ! class_exists( 'ReduxFramework' ) && file_exists( KLEO_DIR . '/options/framework.php' ) ) {
- require_once( KLEO_DIR . '/options/framework.php' );
- }
- }
- /***************************************************
- * :: Modules Class
- ***************************************************/
- if ( sq_option( 'performance', 0 ) == 1 ) {
- require_once( KLEO_DIR . '/modules.php' );
- }
- /***************************************************
- * :: Include widgets
- ***************************************************/
- $kleo_widgets = array(
- 'recent_posts.php'
- );
- $kleo_widgets = apply_filters( 'kleo_widgets', $kleo_widgets );
- foreach ( $kleo_widgets as $widget ) {
- $file_path = trailingslashit( KLEO_LIB_DIR ) . 'widgets/' . $widget;
- if ( file_exists( $file_path ) ) {
- require_once( $file_path );
- }
- }
- if ( ! function_exists( 'kleo_title_section' ) ) {
- /**
- * Return the breadcrumb area
- * @global object $wp_query
- *
- * @param array $args
- *
- * @return string
- */
- function kleo_title_section( $args = false ) {
- $defaults = array(
- 'title' => get_the_title(),
- 'show_title' => true,
- 'show_breadcrumb' => true,
- 'link' => '',
- 'output' => "<section class='{class} border-bottom breadcrumbs-container'><div class='container'>{title_data}<div class='breadcrumb-extra'>{breadcrumb_data}{extra}</div></div></section>",
- 'class' => 'container-wrap main-title alternate-color ',
- 'extra' => '<p class="page-info">' . do_shortcode( sq_option( 'title_info', '' ) ) . '</p>',
- 'heading' => 'h1'
- );
- // Parse incoming $args into an array and merge it with $defaults
- $args = wp_parse_args( $args, $defaults );
- $args = apply_filters( 'kleo_title_args', $args );
- // OPTIONAL: Declare each item in $args as its own variable i.e. $type, $before.
- extract( $args, EXTR_SKIP );
- if ( ! empty( $link ) ) {
- $title = "<a href='" . $link . "' rel='bookmark' title='" . __( 'Permanent Link:', 'kleo_framework' ) . " " . esc_attr( $title ) . "'>" . $title . "</a>";
- }
- $breadcrumb_data = '';
- if ( $show_breadcrumb ) {
- $breadcrumb_data = kleo_breadcrumb( array(
- 'show_browse' => false,
- 'separator' => ' ',
- 'show_home' => __( 'Home', 'kleo_framework' ),
- 'echo' => false
- ) );
- }
- $title_data = '';
- if ( $show_title ) {
- $title_data = '<{heading} class="page-title">{title}</{heading}>';
- }
- if ( ! $show_breadcrumb && $extra == '' ) {
- $class .= ' title-single';
- }
- $title_layout = sq_option( 'title_layout', 'normal' );
- if ( is_singular() && get_cfield( 'title_layout' ) && get_cfield( 'title_layout' ) != '' ) {
- $title_layout = get_cfield( 'title_layout' );
- }
- if ( $title_layout == 'center' ) {
- $class .= ' main-center-title';
- } elseif ( $title_layout == 'right_breadcrumb' ) {
- $class .= ' main-right-breadcrumb';
- }
- $output = str_replace( '{title_data}', $title_data, $output );
- $output = str_replace( '{class}', $class, $output );
- $output = str_replace( '{title}', $title, $output );
- $output = str_replace( '{breadcrumb_data}', $breadcrumb_data, $output );
- $output = str_replace( '{extra}', $extra, $output );
- $output = str_replace( '{heading}', $heading, $output );
- return $output;
- }
- }
- /**
- * Prepare the title/breadcrumb area using hide/show site options
- *
- * @param integer $post_id
- *
- * @return array
- */
- function kleo_prepare_title( $post_id = null ) {
- $title_arr = array();
- $title_arr['title'] = kleo_title();
- //hide title?
- $title_arr['show_title'] = true;
- if ( get_cfield( 'title_checkbox', $post_id ) == 1 ) {
- $title_arr['show_title'] = false;
- }
- if ( sq_option( 'title_location', 'breadcrumb' ) == 'main' ) {
- $title_arr['show_title'] = false;
- }
- //hide breadcrumb?
- $title_arr['show_breadcrumb'] = true;
- if ( sq_option( 'breadcrumb_status', 1 ) == 0 ) {
- $title_arr['show_breadcrumb'] = false;
- }
- if ( get_cfield( 'hide_breadcrumb', $post_id ) == 1 ) {
- $title_arr['show_breadcrumb'] = false;
- } else if ( get_cfield( 'hide_breadcrumb', $post_id ) === '0' ) {
- $title_arr['show_breadcrumb'] = true;
- }
- //hide extra info?
- if ( get_cfield( 'hide_info', $post_id ) == 1 ) {
- $title_arr['extra'] = '';
- }
- return $title_arr;
- }
- /***************************************************
- * TOP TOOLBAR - ADMIN BAR
- * Enable or disable the bar, depending of the theme option setting
- ***************************************************/
- if ( sq_option( 'admin_bar', 1 ) == '0' ):
- remove_action( 'wp_footer', 'wp_admin_bar_render', 1000 );
- add_filter( 'show_admin_bar', '__return_false' );
- endif;
- /***************************************************
- * :: MAINTENANCE MODE
- ***************************************************/
- if ( ! function_exists( 'kleo_maintenance_mode' ) ) {
- function kleo_maintenance_mode() {
- $logo_path = apply_filters( 'kleo_logo', sq_option_url( 'logo' ) );
- $logo_img = '<img src="' . $logo_path . '" alt="maintenance" style="margin: 0 auto; display: block;" />';
- if ( sq_option( 'maintenance_mode', 0 ) == 1 ) {
- /* Theme My Login compatibility */
- if ( class_exists( 'Theme_My_Login' ) && Theme_My_Login::is_tml_page( 'login' ) ) {
- return;
- }
- if ( ! current_user_can( 'edit_themes' ) || ! is_user_logged_in() ) {
- wp_die(
- $logo_img
- . '<div style="text-align:center">'
- . sq_option( 'maintenance_msg', '' )
- . '</div>',
- get_bloginfo( 'name' )
- );
- }
- }
- }
- add_action( 'get_header', 'kleo_maintenance_mode' );
- }
- /***************************************************
- * :: Get social profiles
- ***************************************************/
- if ( ! function_exists( 'kleo_get_social_profiles' ) ):
- function kleo_get_social_profiles( $args = false ) {
- $output = '';
- $icons = '';
- $all_options = get_option( "kleo_" . KLEO_DOMAIN );
- $defaults = array(
- 'container' => 'ul',
- 'item_tag' => 'li',
- 'target' => '_blank'
- );
- // Parse incomming $args into an array and merge it with $defaults
- $args = wp_parse_args( $args, $defaults );
- $args = apply_filters( 'kleo_get_social_profiles_args', $args );
- //get social data from theme options
- if ( ! empty( $all_options ) ) {
- foreach ( $all_options as $k => $opt ) {
- if ( substr( $k, 0, 7 ) === 'social_' && ! empty( $opt ) ) {
- $k = str_replace( 'social_', '', $k );
- $title = str_replace(
- array( 'gplus', 'vimeo-squared', 'pinterest-circled', 'instagramm' ),
- array( 'Google+', 'Vimeo', 'Pinterest', 'Instagram' ),
- $k
- );
- $icons .= '<' . $args['item_tag'] . '>';
- $icons .= '<a target="' . $args['target'] . '" href="' . $opt . '"><i class="icon-' . $k . '"></i><div class="ts-text">' . ucfirst( $title ) . '</div></a>';
- $icons .= '</' . $args['item_tag'] . '>';
- }
- }
- }
- $icons = apply_filters( 'kleo_get_social_profiles', $icons );
- if ( $icons != '' ) {
- $output .= '<' . $args['container'] . ' class="kleo-social-icons">';
- $output .= $icons;
- $output .= '</' . $args['container'] . '>';
- }
- return $output;
- }
- add_shortcode( 'kleo_social_icons', 'kleo_get_social_profiles' );
- endif;
- /***************************************************
- * :: Ajax search in header main menu
- ***************************************************/
- //if set from admin to show search
- if ( sq_option( 'ajax_search', 1 ) == 1 || sq_option( 'ajax_search', 1 ) == 'logged_in' ) {
- add_filter( 'wp_nav_menu_items', 'kleo_search_menu_item', 200, 2 );
- }
- if ( ! function_exists( 'kleo_search_menu_item' ) ) {
- /**
- * Add search to menu
- *
- * @param string $items
- * @param object $args
- *
- * @return string
- */
- function kleo_search_menu_item( $items, $args ) {
- if ( sq_option( 'ajax_search', 1 ) == 'logged_in' && ! is_user_logged_in() ) {
- return $items;
- }
- $location = sq_option( 'menu_search_location', 'primary' );
- if ( $args->theme_location == $location ) {
- $form = kleo_get_search_menu_item();
- $items .= '<li id="nav-menu-item-search" class="menu-item kleo-search-nav">' . $form . '</li>';
- }
- return $items;
- }
- }
- /* Custom search form */
- if ( sq_option( 'header_custom_search', 0 ) == 1 && sq_option( 'header_search_form', '' ) != '' ) {
- add_filter( 'body_class', 'kleo_gsb_body_class' );
- if ( ! function_exists( 'kleo_get_search_menu_item' ) ) {
- function kleo_get_search_menu_item() {
- $output = '';
- $output .= '<a class="search-trigger" href="#"><i class="icon icon-search"></i></a>';
- $output .= '<div class="kleo-search-wrap searchHidden" id="ajax_search_container">';
- $output .= '<div class="gse-loading"></div>';
- $output .= sq_option( 'header_search_form', '' );
- $output .= '</div>';
- return $output;
- }
- }
- }
- function kleo_gsb_body_class( $classes ) {
- $classes[] = 'has-google-search-box';
- return $classes;
- }
- if ( ! function_exists( 'kleo_get_search_menu_item' ) ) {
- function kleo_get_search_menu_item() {
- $context = sq_option( 'search_context', '' );
- if ( is_array( $context ) ) {
- $context = implode( ',', $context );
- }
- //Defaults
- $action = home_url( '/' );
- $hidden = '';
- $input_name = 's';
- if ( function_exists( 'bp_is_active' ) && $context == 'members' ) {
- //Buddypress members form link
- $action = bp_get_members_directory_permalink();
- } elseif ( function_exists( 'bp_is_active' ) && bp_is_active( 'groups' ) && $context == 'groups' ) {
- //Buddypress group directory link
- $action = bp_get_groups_directory_permalink();
- } elseif ( class_exists( 'bbPress' ) && $context == 'forum' ) {
- $action = bbp_get_search_url();
- $input_name = 'bbp_search';
- } elseif ( $context == 'product' ) {
- $hidden .= '<input type="hidden" name="post_type" value="product">';
- $action = home_url( '/' ) . '?post_type=product';
- }
- ob_start();
- $value = isset( $_REQUEST['s'] ) ? esc_attr( $_REQUEST['s'] ) : '';
- $placeholder = esc_html__( "Start typing to search...", "kleo_framework" );
- ?>
- <a class="search-trigger" href="#"><i class="icon icon-search"></i></a>
- <div class="kleo-search-wrap searchHidden" id="ajax_search_container">
- <form class="form-inline" id="ajax_searchform" action="<?php echo $action; ?>"
- data-context="<?php echo $context; ?>">
- <?php echo $hidden; ?>
- <input name="<?php echo $input_name; ?>" class="ajax_s form-control" autocomplete="off" type="text"
- value="<?php echo $value; ?>" placeholder="<?php echo $placeholder; ?>" required>
- <span class="kleo-ajax-search-loading"><i class="icon-spin6 animate-spin"></i></span>
- </form>
- <div class="kleo_ajax_results"></div>
- </div>
- <?php
- $form = ob_get_clean();
- return $form;
- }
- }
- //Catch ajax requests
- add_action( 'wp_ajax_kleo_ajax_search', 'kleo_ajax_search' );
- add_action( 'wp_ajax_nopriv_kleo_ajax_search', 'kleo_ajax_search' );
- if ( ! function_exists( 'kleo_ajax_search' ) ) {
- function kleo_ajax_search() {
- //if "s" input is missing exit
- if ( empty( $_REQUEST['s'] ) && empty( $_REQUEST['bbp_search'] ) ) {
- die();
- }
- if ( ! empty( $_REQUEST['bbp_search'] ) ) {
- $search_string = $_REQUEST['bbp_search'];
- } else {
- $search_string = $_REQUEST['s'];
- }
- $output = '';
- $context = 'any';
- $defaults = array(
- 'numberposts' => 4,
- 'posts_per_page' => 20,
- 'post_type' => 'any',
- 'post_status' => 'publish',
- 'post_password' => '',
- 'suppress_filters' => false,
- 's' => $_REQUEST['s'],
- );
- if ( isset( $_REQUEST['context'] ) && '' != $_REQUEST['context'] ) {
- $context = explode( ',', $_REQUEST['context'] );
- $defaults['post_type'] = $context;
- }
- //Remove forum since it is handled with a different function
- if ( ! empty( $defaults['post_type'] ) && is_array( $defaults['post_type'] ) ) {
- foreach ( $defaults['post_type'] as $ptk => $ptv ) {
- if ( 'forum' == $ptv ) {
- unset( $defaults['post_type'][ $ptk ] );
- break;
- }
- }
- }
- if ( empty( $defaults['post_type'] ) ) {
- $posts = null;
- } else {
- $defaults = apply_filters( 'kleo_ajax_query_args', $defaults );
- $the_query = new WP_Query( $defaults );
- $posts = $the_query->get_posts();
- }
- $members = array();
- $members['total'] = 0;
- $groups = array();
- $groups['total'] = 0;
- $forums = false;
- if ( function_exists( 'bp_is_active' ) && ( $context == "any" || in_array( "members", $context ) ) ) {
- $members = bp_core_get_users( array(
- 'search_terms' => $search_string,
- 'per_page' => $defaults['numberposts'],
- 'populate_extras' => false,
- ) );
- }
- if ( function_exists( 'bp_is_active' ) && bp_is_active( "groups" ) && ( $context == "any" || in_array( "groups", $context ) ) ) {
- $groups = groups_get_groups( array(
- 'search_terms' => $search_string,
- 'per_page' => $defaults['numberposts'],
- 'populate_extras' => false,
- ) );
- }
- if ( class_exists( 'bbPress' ) && ( $context == "any" || in_array( "forum", $context ) ) ) {
- $forums = kleo_bbp_get_replies( $search_string );
- }
- //if there are no posts, groups nor members
- if ( empty( $posts ) && $members['total'] == 0 && $groups['total'] == 0 && ! $forums ) {
- $output = "<div class='kleo_ajax_entry ajax_not_found'>";
- $output .= "<div class='ajax_search_content'>";
- $output .= "<i class='icon icon-attention-circled'></i> ";
- $output .= __( "Sorry, we haven't found anything based on your criteria.", 'kleo_framework' );
- $output .= "<br>";
- $output .= __( "Please try searching by different terms.", 'kleo_framework' );
- $output .= "</div>";
- $output .= "</div>";
- echo $output;
- die();
- }
- //if there are members
- if ( $members['total'] != 0 ) {
- $output .= '<div class="kleo-ajax-part kleo-ajax-type-members">';
- $output .= '<h4><span>' . __( "Members", 'kleo_framework' ) . '</span></h4>';
- foreach ( (array) $members['users'] as $member ) {
- $image = '<img src="' . bp_core_fetch_avatar( array(
- 'item_id' => $member->ID,
- 'width' => 25,
- 'height' => 25,
- 'html' => false
- ) ) . '" class="kleo-rounded" alt="">';
- if ( $update = bp_get_user_meta( $member->ID, 'bp_latest_update', true ) ) {
- $latest_activity = char_trim( trim( strip_tags( bp_create_excerpt( $update['content'], 50, "..." ) ) ) );
- } else {
- $latest_activity = '';
- }
- $output .= "<div class ='kleo_ajax_entry'>";
- $output .= "<div class='ajax_search_image'>$image</div>";
- $output .= "<div class='ajax_search_content'>";
- $output .= "<a href='" . bp_core_get_user_domain( $member->ID ) . "' class='search_title'>";
- $output .= $member->display_name;
- $output .= "</a>";
- $output .= "<span class='search_excerpt'>";
- $output .= $latest_activity;
- $output .= "</span>";
- $output .= "</div>";
- $output .= "</div>";
- }
- $output .= "<a class='ajax_view_all' href='" . esc_url( bp_get_members_directory_permalink() . "?s=" . $search_string ) . "'>" . __( 'View member results', 'kleo_framework' ) . "</a>";
- $output .= "</div>";
- }
- //if there are groups
- if ( $groups['total'] != 0 ) {
- $output .= '<div class="kleo-ajax-part kleo-ajax-type-groups">';
- $output .= '<h4><span>' . __( "Groups", 'kleo_framework' ) . '</span></h4>';
- foreach ( (array) $groups['groups'] as $group ) {
- $image = '<img src="' . bp_core_fetch_avatar( array(
- 'item_id' => $group->id,
- 'object' => 'group',
- 'width' => 25,
- 'height' => 25,
- 'html' => false
- ) ) . '" class="kleo-rounded" alt="">';
- $output .= "<div class ='kleo_ajax_entry'>";
- $output .= "<div class='ajax_search_image'>$image</div>";
- $output .= "<div class='ajax_search_content'>";
- $output .= "<a href='" . bp_get_group_permalink( $group ) . "' class='search_title'>";
- $output .= $group->name;
- $output .= "</a>";
- $output .= "</div>";
- $output .= "</div>";
- }
- $output .= "<a class='ajax_view_all' href='" . esc_url( bp_get_groups_directory_permalink() . "?s=" . $search_string ) . "'>" . __( 'View group results', 'kleo_framework' ) . "</a>";
- $output .= "</div>";
- }
- //if there are posts
- if ( ! empty( $posts ) ) {
- $post_type_str = array();
- $post_types = array();
- $post_type_obj = array();
- foreach ( $posts as $post ) {
- $post_types[ $post->post_type ][] = $post;
- if ( empty( $post_type_obj[ $post->post_type ] ) ) {
- $post_type_obj[ $post->post_type ] = get_post_type_object( $post->post_type );
- }
- }
- foreach ( $post_types as $ptype => $post_type ) {
- $output .= '<div class="kleo-ajax-part kleo-ajax-type-' . esc_attr( $post_type_obj[ $ptype ]->name ) . '">';
- if ( isset( $post_type_obj[ $ptype ]->labels->name ) ) {
- $output .= "<h4><span>" . $post_type_obj[ $ptype ]->labels->name . "</span></h4>";
- } else {
- $output .= "<hr>";
- }
- $count = 0;
- foreach ( $post_type as $post ) {
- $post_type_str[$post->post_type] = $post->post_type;
- $count ++;
- if ( $count > 4 ) {
- continue;
- }
- $format = get_post_format( $post->ID );
- if ( $img_url = kleo_get_post_thumbnail_url( $post->ID ) ) {
- $image = aq_resize( $img_url, 44, 44, true, true, true );
- if ( ! $image ) {
- $image = $img_url;
- }
- $image = '<img src="' . $image . '" class="kleo-rounded">';
- } else {
- if ( $format == 'video' ) {
- $image = "<i class='icon icon-video'></i>";
- } elseif ( $format == 'image' || $format == 'gallery' ) {
- $image = "<i class='icon icon-picture'></i>";
- } else {
- $image = "<i class='icon icon-link'></i>";
- }
- }
- $excerpt = "";
- if ( ! empty( $post->post_content ) ) {
- $excerpt = $post->post_content;
- $excerpt = preg_replace( "/\[(.*?)(?:(\/))?\](?:(.+?)\[\/\2\])?/s", '', $excerpt );
- $excerpt = wp_strip_all_tags($excerpt); //added to remove gogole adsense code from search excerpt
- $excerpt = char_trim( trim( strip_tags( $excerpt ) ), 40, "..." );
- }
- $link = apply_filters( 'kleo_custom_url', get_permalink( $post->ID ) );
- $classes = "format-" . $format;
- $output .= "<div class ='kleo_ajax_entry $classes'>";
- $output .= "<div class='ajax_search_image'>$image</div>";
- $output .= "<div class='ajax_search_content'>";
- $output .= "<a href='$link' class='search_title'>";
- $output .= get_the_title( $post->ID );
- $output .= "</a>";
- $output .= "<span class='search_excerpt'>";
- $output .= $excerpt;
- $output .= "</span>";
- $output .= "</div>";
- $output .= "</div>";
- }
- $output .= '</div>';
- }
- if ( ! empty( $post_type_str ) ) {
- if ( count( $post_type_str ) > 1 ) {
- $search_str_posts = '&post_type[]=' . implode( ',', $post_type_str );
- } else {
- $search_str_posts = '&post_type=' . implode( ',', $post_type_str );
- }
- } else {
- $search_str_posts = '';
- }
- $output .= "<a class='ajax_view_all' href='" . esc_url( home_url( '/' ) . '?s=' . $search_string ) . $search_str_posts . "'>" . __( 'View all results', 'kleo_framework' ) . "</a>";
- }
- /* Forums topics search */
- if ( ! empty( $forums ) ) {
- $output .= '<div class="kleo-ajax-part kleo-ajax-type-forums">';
- $output .= '<h4><span>' . __( "Forums", 'kleo_framework' ) . '</span></h4>';
- $i = 0;
- foreach ( $forums as $fk => $forum ) {
- $i ++;
- if ( $i <= 4 ) {
- $image = "<i class='icon icon-chat-1'></i>";
- $output .= "<div class ='kleo_ajax_entry'>";
- $output .= "<div class='ajax_search_image'>$image</div>";
- $output .= "<div class='ajax_search_content'>";
- $output .= "<a href='" . $forum['url'] . "' class='search_title'>";
- $output .= $forum['name'];
- $output .= "</a>";
- //$output .= "<span class='search_excerpt'>";
- //$output .= $latest_activity;
- //$output .= "</span>";
- $output .= "</div>";
- $output .= "</div>";
- }
- }
- $output .= "<a class='ajax_view_all' href='" . esc_url( bbp_get_search_url() . "?bbp_search=" . $search_string ) . "'>" . __( 'View forum results', 'kleo_framework' ) . "</a>";
- $output .= "</div>";
- }
- echo $output;
- die();
- }
- }
- if ( ! function_exists( 'kleo_bbp_get_replies' ) ) {
- function kleo_bbp_get_replies( $title = '' ) {
- global $wpdb;
- $topic_matches = array();
- /* First do a title search */
- $topics = $wpdb->get_results( 'SELECT * FROM ' . $wpdb->posts . ' WHERE post_title LIKE "%' . esc_sql( trim( $title ) ) . '%" AND post_type="topic" AND post_status="publish"' );
- /* do a tag search if title search doesn't have results */
- if ( ! $topics ) {
- $topic_tags = get_terms( 'topic-tag' );
- if ( empty( $topic_tags ) ) {
- return $topic_matches;
- }
- foreach ( $topic_tags as $tid => $tag ) {
- $tags[ $tag->term_id ] = $tag->name;
- }
- $tag_matches = kleo_bbp_stristr_array( $title, $tags );
- $args = array(
- 'post_type' => 'topic',
- 'showposts' => - 1,
- 'tax_query' => array(
- array(
- 'taxonomy' => 'topic-tag',
- 'field' => 'term_id',
- 'terms' => $tag_matches
- )
- )
- );
- $topics = get_posts( $args );
- }
- /* Compile results into array*/
- foreach ( $topics as $topic ) {
- $topic_matches[ $topic->ID ]['name'] = $topic->post_title;
- $topic_matches[ $topic->ID ]['url'] = get_post_permalink( $topic->ID );
- }
- return $topic_matches;
- }
- }
- function kleo_bbp_stristr_array( $haystack, $needles ) {
- $elements = array();
- foreach ( $needles as $id => $needle ) {
- if ( stristr( $haystack, $needle ) ) {
- $elements[] = $id;
- }
- }
- return $elements;
- }
- /***************************************************
- * :: WPML language switch
- ***************************************************/
- if ( ! function_exists( 'kleo_wpml_wp_nav_menu_items_filter' ) && function_exists( 'icl_get_languages' ) ) {
- function kleo_wpml_wp_nav_menu_items_filter( $items, $args ) {
- if ( $args->theme_location == 'primary' ) {
- $items = str_replace( '<a href="#" onclick="return false">', '<a href="#" class="js-activated">', $items );
- $items = str_replace( '</a><ul class="sub-menu submenu-languages">', '<span class="caret"></span></a><ul class="sub-menu submenu-languages dropdown-menu pull-left">', $items );
- }
- return $items;
- }
- add_filter( 'wp_nav_menu_items', 'kleo_wpml_wp_nav_menu_items_filter', 10, 2 );
- }
- if ( ! function_exists( 'kleo_lang_menu_item' ) ):
- function kleo_lang_menu_item( $items, $args ) {
- if ( $args->theme_location == 'top' ) {
- $items .= kleo_get_languages();
- }
- return $items;
- }
- endif;
- if ( sq_option( 'show_lang', 1 ) == 1 ) {
- add_filter( 'wp_nav_menu_items', 'kleo_lang_menu_item', 10, 2 );
- }
- function kleo_get_languages() {
- global $sitepress_settings;
- $output = '';
- $active = '';
- $items = '';
- if ( function_exists( 'icl_get_languages' ) ) {
- $languages = icl_get_languages( 'skip_missing=0&orderby=code' );
- if ( ! empty( $languages ) ) {
- foreach ( $languages as $code => $lang ) {
- $items .= '<li>';
- $alt_title_lang = $sitepress_settings['icl_lso_native_lang'] ? esc_attr( $lang['native_name'] ) : esc_attr( $lang['translated_name'] );
- $entry = '';
- if ( $sitepress_settings['icl_lso_flags'] ) {
- $entry .= '<img class="iclflag" src="' . $lang['country_flag_url'] . '" width="18" height="12" alt="' . $alt_title_lang . '" title="' . $alt_title_lang . '" /> ';
- }
- if ( $sitepress_settings['icl_lso_native_lang'] ) {
- $entry .= $lang['native_name'];
- }
- if ( $sitepress_settings['icl_lso_display_lang'] && $sitepress_settings['icl_lso_native_lang'] ) {
- $entry .= ' (';
- }
- if ( $sitepress_settings['icl_lso_display_lang'] ) {
- $entry .= $lang['translated_name'];
- }
- if ( $sitepress_settings['icl_lso_display_lang'] && $sitepress_settings['icl_lso_native_lang'] ) {
- $entry .= ')';
- }
- if ( ! $lang['active'] ) {
- $items .= '<a href="' . $lang['url'] . '">' . $entry . '</a>';
- } else {
- $active = '<a href="' . $lang['url'] . '" class="dropdown-toggle js-activated current-language" data-toggle="dropdown">' . $entry . ( count( $languages ) > 1 ? ' <span class="caret"></span>' : '' ) . '</a>';
- }
- $items .= '</li>';
- }
- }
- $output .= ' <li class="' . ( count( $languages ) > 1 ? 'dropdown' : '' ) . ' kleo-langs">'
- . $active
- . '<ul class="dropdown-menu pull-right">'
- . $items
- . '</ul></li>';
- }
- return $output;
- }
- /***************************************************
- * :: Go up button
- ***************************************************/
- function kleo_go_up() {
- ?>
- <a class="kleo-go-top" href="#"><i class="icon-up-open-big"></i></a>
- <?php
- }
- if ( sq_option( 'go_top', 1 ) == 1 ) {
- add_action( 'kleo_after_footer', 'kleo_go_up' );
- }
- /***************************************************
- * :: Bottom contact form
- ***************************************************/
- if ( ! function_exists( 'kleo_contact_form' ) ) {
- function kleo_contact_form( $atts, $content = null ) {
- extract( shortcode_atts( array(
- 'title' => 'CONTACT US',
- 'builtin_form' => 1
- ), $atts ) );
- $output = '';
- $output .= '<div class="kleo-quick-contact-wrapper">'
- . '<a class="kleo-quick-contact-link" href="#"><i class="icon-mail-alt"></i></a>'
- . '<div id="kleo-quick-contact">'
- . '<h4 class="kleo-qc-title">' . $title . '</h4>'
- . '<p>' . do_shortcode( $content ) . '</p>';
- if ( $builtin_form == 1 ) {
- $output .= '<form class="kleo-contact-form" action="#" method="post" novalidate>'
- . '<input type="text" placeholder="' . __( "Your Name", 'kleo_framework' ) . '" required id="contact_name" name="contact_name" class="form-control" value="" tabindex="276" />'
- . '<input type="email" required placeholder="' . __( "Your Email", 'kleo_framework' ) . '" id="contact_email" name="contact_email" class="form-control" value="" tabindex="277" />'
- . '<textarea placeholder="' . __( "Type your message...", 'kleo_framework' ) . '" required id="contact_content" name="contact_content" class="form-control" tabindex="278"></textarea>'
- . '<input type="hidden" name="action" value="kleo_sendmail">'
- . '<button tabindex="279" class="btn btn-default pull-right" type="submit">' . __( "Send", 'kleo_framework' ) . '</button>'
- . '<div class="kleo-contact-loading">' . __( "Sending", 'kleo_framework' ) . ' <i class="icon-spinner icon-spin icon-large"></i></div>'
- . '<div class="kleo-contact-success"> </div>'
- . '</form>';
- }
- $output .= '<div class="bottom-arrow"></div>'
- . '</div>'
- . '</div><!--end kleo-quick-contact-wrapper-->';
- return $output;
- }
- add_shortcode( 'kleo_contact_form', 'kleo_contact_form' );
- }
- if ( ! function_exists( 'kleo_sendmail' ) ):
- function kleo_sendmail() {
- if ( isset( $_POST['action'] ) ) {
- $error_tpl = "<span class='mail-error'>%s</span>";
- //contact name
- if ( trim( $_POST['contact_name'] ) === '' ) {
- printf( $error_tpl, __( 'Please enter your name.', 'kleo_framework' ) );
- die();
- } else {
- $name = trim( $_POST['contact_name'] );
- }
- ///contact email
- if ( trim( $_POST['contact_email'] ) === '' ) {
- printf( $error_tpl, __( 'Please enter your email address.', 'kleo_framework' ) );
- die();
- } elseif ( ! preg_match( "/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+.[a-z]{2,4}$/i", trim( $_POST['contact_email'] ) ) ) {
- printf( $error_tpl, __( 'You entered an invalid email address.', 'kleo_framework' ) );
- die();
- } else {
- $email = trim( $_POST['contact_email'] );
- }
- //message
- if ( trim( $_POST['contact_content'] ) === '' ) {
- printf( $error_tpl, __( 'Please enter a message.', 'kleo_framework' ) );
- die();
- } else {
- if ( function_exists( 'stripslashes' ) ) {
- $comment = stripslashes( trim( $_POST['contact_content'] ) );
- } else {
- $comment = trim( $_POST['contact_content'] );
- }
- }
- $emailTo = sq_option( 'contact_form_to', '' );
- if ( ! isset( $emailTo ) || ( $emailTo == '' ) ) {
- $emailTo = get_option( 'admin_email' );
- }
- $subject = __( 'Contact Form Message', 'kleo_framework' );
- apply_filters( 'kleo_contact_form_subject', $subject );
- $body = __( "You received a new contact form message:", 'kleo_framework' ) . "\n";
- $body .= __( "Name: ", 'kleo_framework' ) . $name . "\n";
- $body .= __( "Email: ", 'kleo_framework' ) . $email . "\n";
- $body .= __( "Message: ", 'kleo_framework' ) . $comment . "\n";
- $headers[] = "Content-type: text/html";
- $headers[] = "Reply-To: $name <$email>";
- apply_filters( 'kleo_contact_form_headers', $headers );
- if ( wp_mail( $emailTo, $subject, $body, $headers ) ) {
- echo '<span class="mail-success">' . __( "Thank you. Your message has been sent.", 'kleo_framework' ) . ' <i class="icon-ok icon-large"></i></span>';
- do_action( 'kleo_after_contact_form_mail_send', $name, $email, $comment );
- } else {
- printf( $error_tpl, __( "Mail couldn't be sent. Please try again!", 'kleo_framework' ) );
- }
- } else {
- printf( $error_tpl, __( "Unknown error occurred. Please try again!", 'kleo_framework' ) );
- }
- die();
- }
- endif;
- function kleo_show_contact_form() {
- $title = sq_option( 'contact_form_title', '' );
- $content = sq_option( 'contact_form_text', '' );
- $builtin_form = sq_option( 'contact_form_builtin', 1 );
- echo do_shortcode( '[kleo_contact_form title="' . $title . '" builtin_form="' . $builtin_form . '"]' . $content . '[/kleo_contact_form]' );
- }
- if ( sq_option( 'contact_form', 1 ) == 1 ) {
- add_action( 'wp_ajax_kleo_sendmail', 'kleo_sendmail' );
- add_action( 'wp_ajax_nopriv_kleo_sendmail', 'kleo_sendmail' );
- add_action( 'kleo_after_footer', 'kleo_show_contact_form' );
- }
- /***************************************************
- * :: SOCKET AREA
- ***************************************************/
- function kleo_show_socket() {
- get_template_part( 'page-parts/socket' );
- }
- if ( sq_option( 'socket_enable', 1 ) == 1 ) {
- add_action( 'kleo_after_footer', 'kleo_show_socket' );
- }
- /***************************************************
- * :: EXCERPT
- ***************************************************/
- if ( ! function_exists( 'kleo_new_excerpt_length' ) ) {
- function kleo_new_excerpt_length( $length ) {
- return 60;
- }
- add_filter( 'excerpt_length', 'kleo_new_excerpt_length' );
- }
- if ( ! function_exists( 'kleo_excerpt' ) ) {
- function kleo_excerpt( $limit = 20, $words = true ) {
- $from_content = false;
- $excerpt_initial = get_the_excerpt();
- if ( $excerpt_initial == '' ) {
- $excerpt_initial = get_the_content();
- $from_content = true;
- }
- $excerpt_initial = preg_replace( '`\[[^\]]*\]`', '', $excerpt_initial );
- $excerpt_initial = strip_tags( $excerpt_initial );
- /* If we got it from get_the_content -> apply length restriction */
- if ( $from_content ) {
- $excerpt_length = apply_filters( 'excerpt_length', $limit );
- $excerpt_initial = wp_trim_words( $excerpt_initial, $excerpt_length, '' );
- }
- if ( $words ) {
- $excerpt = explode( ' ', $excerpt_initial, $limit );
- if ( count( $excerpt ) >= $limit ) {
- array_pop( $excerpt );
- $excerpt = implode( " ", $excerpt ) . '...';
- } else {
- $excerpt = implode( " ", $excerpt ) . '';
- }
- } else {
- $excerpt = substr( $excerpt_initial, 0, $limit ) . ( strlen( $excerpt_initial ) > $limit ? '...' : '' );
- }
- return '<p>' . $excerpt . '</p>';
- }
- }
- if ( ! function_exists( 'kleo_has_shortcode' ) ) {
- function kleo_has_shortcode( $shortcode = '', $post_id = null ) {
- if ( ! $post_id ) {
- if ( ! is_singular() ) {
- return false;
- }
- $post_id = get_the_ID();
- }
- if ( is_page() || is_single() ) {
- $current_post = get_post( $post_id );
- if ( post_password_required( $current_post ) ) {
- return false;
- }
- //remove_filter( 'the_content', 'do_shortcode', 11 );
- //$post_content = apply_filters( 'the_content', $current_post->post_content );
- $post_content = $current_post->post_content;
- //add_filter( 'the_content', 'do_shortcode', 11 );
- $found = false;
- if ( ! $shortcode ) {
- return $found;
- }
- if ( stripos( $post_content, '[' . $shortcode ) !== false ) {
- $found = true;
- }
- return $found;
- } else {
- return false;
- }
- }
- }
- if ( ! function_exists( 'kleo_icons_array' ) ) {
- function kleo_icons_array( $prefix = '', $before = array( '' ) ) {
- // Get any existing copy of our transient data
- $transient_name = 'kleo_font_icons_' . $prefix . implode( '', $before );
- if ( false === ( $icons = get_transient( $transient_name ) ) ) {
- // It wasn't there, so regenerate the data and save the transient
- $icons = $before;
- $icons_json = file_get_contents( THEME_DIR . '/assets/font/config.json' );
- if ( is_child_theme() && file_exists( CHILD_THEME_DIR . '/assets/css/fontello.css' ) ) {
- $icons_json = file_get_contents( CHILD_THEME_DIR . '/assets/config.json' );
- }
- if ( $icons_json ) {
- $arr = json_decode( $icons_json, true );
- foreach ( $arr['glyphs'] as $icon ) {
- if ( ( isset( $icon['selected'] ) && $icon['selected'] == true ) || ! isset( $icon['selected'] ) ) {
- $icons[ $prefix . $icon['css'] ] = $icon['css'];
- }
- }
- asort( $icons );
- }
- // set transient for one day
- set_transient( $transient_name, $icons, 86400 );
- }
- return $icons;
- }
- }
- add_action( 'kleo-opts-saved', 'kleo_delete_font_transient' );
- function kleo_delete_font_transient() {
- delete_transient( 'kleo_font_icons_' );
- }
- if ( ! function_exists( 'kleo_post_nav' ) ) :
- /**
- * Display navigation to next/previous post when applicable.
- *
- * @since Kleo 1.0
- *
- * @return void
- */
- function kleo_post_nav( $same_cat = false ) {
- // Don't print empty markup if there's nowhere to navigate.
- $previous = ( is_attachment() ) ? get_post( get_post()->post_parent ) : get_adjacent_post( $same_cat, '', true );
- $next = get_adjacent_post( $same_cat, '', false );
- if ( ! $next && ! $previous ) {
- return;
- }
- ?>
- <nav class="pagination-sticky member-navigation" role="navigation">
- <?php
- if ( is_attachment() ) :
- previous_post_link( '%link', __( '<span id="older-nav">Go to article</span>', 'kleo_framework' ) );
- else :
- if ( $previous ) {
- previous_post_link( '%link', '<span id="older-nav"><span class="outter-title"><span class="entry-title">' . $previous->post_title . '</span></span></span>', $same_cat );
- }
- if ( $next ) {
- next_post_link( '%link', '<span id="newer-nav"><span class="outter-title"><span class="entry-title">' . $next->post_title . '</span>', $same_cat );
- }
- endif;
- ?>
- </nav><!-- .navigation -->
- <?php
- }
- endif;
- if ( ! function_exists( 'kleo_postmeta_enabled' ) ) {
- /**
- * Check to see if post meta is enabled for a single post
- * @return int
- */
- function kleo_postmeta_enabled() {
- if ( ! is_single() ) {
- return 1;
- }
- /* If we set it via a shortcode */
- global $kleo_config;
- if ( isset( $kleo_config['post_meta_enabled'] ) ) {
- if ( $kleo_config['post_meta_enabled'] ) {
- return 1;
- } else {
- return 0;
- }
- }
- $meta_status = sq_option( 'blog_meta_status', 1 );
- if ( get_cfield( 'meta_checkbox' ) == 1 ) {
- $meta_status = 0;
- }
- return apply_filters( 'kleo_postmeta_enabled', $meta_status );
- }
- }
- /**
- * Check to see if post media is enabled for a single post page
- *
- * @param string media_option
- * @param int default
- *
- * @return int
- */
- function kleo_postmedia_enabled( $media_option = 'blog_media_status', $default = 1, $is_singular = false ) {
- global $conditional_thumb;
- global $wp_query;
- if ( $is_singular === true ) {
- $condition = is_singular();
- } else {
- $condition = is_single();
- }
- if ( ! $condition ) {
- //check for shortcode thumbnail condition
- if ( isset( $conditional_thumb ) ) {
- if ( $wp_query->current_post > ( $conditional_thumb - 1 ) ) {
- return false;
- }
- }
- return 1;
- }
- $media_status = sq_option( $media_option, $default );
- $post_status = get_cfield( 'post_media_status' );
- if ( $post_status != '' ) {
- $media_status = get_cfield( 'post_media_status' );
- }
- return $media_status;
- }
- if ( ! function_exists( 'kleo_get_img_overlay' ) ) {
- function kleo_get_img_overlay() {
- global $kleo_config;
- if ( isset( $kleo_config['image_overlay'] ) ) {
- return $kleo_config['image_overlay'];
- }
- return '';
- }
- }
- /***************************************************
- * :: Facebook Integration
- ***************************************************/
- if ( ! function_exists( 'kleo_fb_button' ) ) :
- function kleo_fb_button() {
- echo kleo_get_fb_button();
- }
- endif;
- if ( ! function_exists( 'kleo_get_fb_button' ) ) :
- function kleo_get_fb_button() {
- ob_start();
- ?>
- <div class="kleo-fb-wrapper text-center">
- <a href="#" class="kleo-facebook-connect btn btn-default "><i class="icon-facebook"></i>
- <?php _e( "Log in with Facebook", 'kleo_framework' ); ?></a>
- </div>
- <div class="gap-20"></div>
- <div class="hr-title hr-full"><abbr> <?php echo __( "or", "kleo_framework" ); ?> </abbr></div>
- <?php
- $output = ob_get_clean();
- return $output;
- }
- endif;
- if ( ! function_exists( 'kleo_fb_button_regpage' ) ) :
- function kleo_fb_button_regpage() {
- echo kleo_get_fb_button_regpage();
- }
- endif;
- if ( ! function_exists( 'kleo_get_fb_button_regpage' ) ) :
- function kleo_get_fb_button_regpage() {
- ob_start();
- ?>
- <div class="kleo-fb-wrapper text-center">
- <a href="#" class="kleo-facebook-connect btn btn-default "><i class="icon-facebook"></i>
- <?php _e( "Log in with Facebook", 'kleo_framework' ); ?></a>
- </div>
- <div class="gap-30"></div>
- <div class="hr-title hr-full"><abbr> <?php echo __( "or", "kleo_framework" ); ?> </abbr></div>
- <div class="gap-10"></div>
- <?php
- $output = ob_get_clean();
- return $output;
- }
- endif;
- if ( ! function_exists( 'kleo_fb_button_shortcode' ) ) :
- function kleo_fb_button_shortcode() {
- $output = '';
- if ( sq_option( 'facebook_login', 0 ) == 1 && get_option( 'users_can_register' ) && ! is_user_logged_in() ) {
- $output .= '<a href="#" class="kleo-facebook-connect btn btn-default "><i class="icon-facebook"></i> ' . __( "Log in with Facebook", 'kleo_framework' ) . '</a>';
- }
- return $output;
- }
- add_shortcode( 'kleo_fb_button', 'kleo_fb_button_shortcode' );
- endif;
- if ( sq_option( 'facebook_login', 0 ) == 1 ) {
- add_action( 'bp_before_login_widget_loggedout', 'kleo_fb_button' );
- add_action( 'login_form', 'kleo_fb_button', 10 );
- add_action( 'kleo_before_login_form', 'kleo_fb_button', 10 );
- add_action( 'kleo_before_register_form_modal', 'kleo_fb_button', 10 );
- if ( class_exists( 'WooCommerce' ) ) {
- add_action( 'woocommerce_login_form_start', 'kleo_fb_button', 10 );
- }
- if ( sq_option( 'facebook_register', 0 ) == 1 ) {
- add_action( 'bp_before_register_page', 'kleo_fb_button_regpage' );
- }
- }
- /***************************************************
- * :: oEmbed manipulation for youtube/vimeo video
- ***************************************************/
- if ( ! function_exists( 'kleo_add_video_wmode_transparent' ) ) :
- /**
- * Automatically add wmode=transparent to embeded media
- * Automatically add showinfo=0 for youtube
- *
- * @param type $html
- * @param type $url
- * @param type $attr
- *
- * @return type
- */
- function kleo_add_video_wmode_transparent( $html, $url, $attr ) {
- if ( strpos( $html, "youtube.com" ) !== null || strpos( $html, "youtu.be" ) !== null ) {
- $info = "&showinfo=0";
- } else {
- $info = "";
- }
- if ( strpos( $html, "<embed src=" ) !== false ) {
- return str_replace( '</param><embed', '</param><param name="wmode" value="opaque"></param><embed wmode="opaque" ', $html );
- } elseif ( strpos( $html, 'feature=oembed' ) !== false ) {
- return str_replace( 'feature=oembed', 'feature=oembed&wmode=opaque' . $info, $html );
- } else {
- return $html;
- }
- }
- endif;
- add_filter( 'oembed_result', 'kleo_add_video_wmode_transparent', 10, 3 );
- if ( ! function_exists( 'kleo_oembed_filter' ) ):
- function kleo_oembed_filter( $return, $data, $url ) {
- $return = str_replace( 'frameborder="0"', 'style="border: none"', $return );
- return $return;
- }
- endif;
- add_filter( 'oembed_dataparse', 'kleo_oembed_filter', 90, 3 );
- /***************************************************
- * :: Apply oEmbed for post video format
- ***************************************************/
- global $wp_embed;
- add_filter( 'kleo_oembed_video', array( $wp_embed, 'autoembed' ), 8 );
- /***************************************************
- * :: Custom taxonomy header content
- ***************************************************/
- if ( function_exists( 'get_term_meta' ) ) {
- /* GET CUSTOM HEADER CONTENT FOR CATEGORY */
- add_action( 'kleo_before_main', 'kleo_taxonomy_header', 9 );
- function kleo_taxonomy_header() {
- $queried_object = get_queried_object();
- if ( isset( $queried_object->term_id ) ) {
- $term_id = $queried_object->term_id;
- $content = get_term_meta( $term_id, 'cat_meta' );
- if ( isset( $content[0]['cat_header'] ) && $content[0]['cat_header'] != '' ) {
- echo '<section class="kleo-cat-header container-wrap main-color">';
- echo do_shortcode( $content[0]['cat_header'] );
- echo '</section>';
- }
- }
- }
- /* ADD CUSTOM META BOX TO CATEGORY PAGES */
- function kleo_taxonomy_edit_meta_field( $term ) {
- // put the term ID into a variable
- $t_id = $term->term_id;
- // retrieve the existing value(s) for this meta field. This returns an array
- $term_meta = get_term_meta( $t_id, 'cat_meta' );
- if ( ! $term_meta ) {
- $term_meta = add_term_meta( $t_id, 'cat_meta', '' );
- }
- ?>
- <tr class="form-field">
- <th scope="row" valign="top"><label
- for="term_meta[cat_header]"><?php _e( 'Top Content', 'kleo_framework' ); ?></label></th>
- <td>
- <?php
- $content = ( isset( $term_meta[0]['cat_header'] ) && $term_meta[0]['cat_header'] != '' ) ? esc_attr( $term_meta[0]['cat_header'] ) : '';
- echo '<textarea id="term_meta[cat_header]" name="term_meta[cat_header]">' . $content . '</textarea>'; ?>
- <p class="description"><?php _e( 'This will be displayed at top of the category page. Shortcodes are allowed.', 'kleo_framework' ); ?></p>
- </td>
- </tr>
- <?php
- }
- add_action( 'product_cat_edit_form_fields', 'kleo_taxonomy_edit_meta_field', 10, 2 );
- /* SAVE CUSTOM META*/
- /**
- * @param $term_id
- */
- function kleo_save_taxonomy_custom_meta( $term_id ) {
- if ( isset( $_POST['term_meta'] ) ) {
- $t_id = $term_id;
- $term_meta = get_term_meta( $t_id, 'cat_meta' );
- $cat_keys = array_keys( $_POST['term_meta'] );
- foreach ( $cat_keys as $key ) {
- if ( isset ( $_POST['term_meta'][ $key ] ) ) {
- $term_meta[ $key ] = $_POST['term_meta'][ $key ];
- }
- }
- // Save the option array.
- update_term_meta( $term_id, 'cat_meta', $term_meta );
- }
- }
- add_action( 'edited_product_cat', 'kleo_save_taxonomy_custom_meta', 10, 2 );
- }
- /***************************************************
- * :: Add custom HTML to page header set from Page edit
- ***************************************************/
- add_action( 'kleo_before_main', 'kleo_header_content', 8 );
- function kleo_header_content() {
- if ( is_singular() || is_home() ) {
- $page_header = get_cfield( 'header_content' );
- if ( $page_header != '' ) {
- echo '<section class="kleo-page-header container-wrap main-color">';
- echo do_shortcode( html_entity_decode( $page_header ) );
- echo '</section>';
- }
- } else {
- return false;
- }
- }
- /***************************************************
- * :: Add custom HTML to bottom page set from Page edit
- ***************************************************/
- add_action( 'kleo_after_main_content', 'kleo_bottom_content', 12 );
- function kleo_bottom_content() {
- if ( is_singular() || is_home() ) {
- $page_bottom = get_cfield( 'bottom_content' );
- if ( $page_bottom != '' ) {
- echo '<div class="kleo-page-bottom">';
- echo do_shortcode( html_entity_decode( $page_bottom ) );
- echo '</div>';
- }
- } else {
- return false;
- }
- }
- /***************************************************
- * :: rtMedia small compatibility
- ***************************************************/
- if ( class_exists( 'RTMedia' ) ) {
- add_action( 'wp_enqueue_scripts', 'kleo_rtmedia_scripts', 999 );
- function kleo_rtmedia_scripts() {
- //wp_dequeue_style('rtmedia-font-awesome');
- wp_dequeue_style( 'rtmedia-magnific' );
- wp_dequeue_script( 'rtmedia-magnific' );
- wp_dequeue_script( 'rtmedia-touchswipe' );
- }
- add_filter( 'body_class', 'kleo_rtmedia_class' );
- function kleo_rtmedia_class( $classes ) {
- $classes[] = 'rtm-' . RTMEDIA_VERSION;
- return $classes;
- }
- global $rtmedia_admin;
- remove_action( 'admin_notices', array( $rtmedia_admin, 'rtmedia_admin_notices' ) );
- /* When BuddyPress is not enabled */
- function kleo_rtmedia_no_buddypress() {
- return locate_template( 'page.php' );
- }
- add_filter( 'rtmedia_main_template_include', 'kleo_rtmedia_no_buddypress', 20 );
- }
- /***************************************************
- * :: WP Multisite Sign-up page
- ***************************************************/
- add_action( 'before_signup_form', 'kleo_mu_before_page' );
- function kleo_mu_before_page() {
- get_template_part( 'page-parts/general-before-wrap' );
- }
- add_action( 'after_signup_form', 'kleo_mu_after_page' );
- function kleo_mu_after_page() {
- get_template_part( 'page-parts/general-after-wrap' );
- echo '<style>'
- . '.mu_register input[type="submit"], .mu_register #blog_title, .mu_register #user_email, .mu_register #blogname, .mu_register #user_name {font-size: inherit;}'
- . '.mu_register input[type="submit"] {width: auto;}'
- . '</style>'
- . '<script>jQuery(document).ready(function() { jQuery(\'.mu_register input[type="submit"]\').addClass("btn btn-default"); });</script>';
- }
- /***************************************************
- * :: WP Multisite Activate page
- ***************************************************/
- if ( defined( 'WP_INSTALLING' ) && WP_INSTALLING == true ) {
- add_action( 'kleo_before_main', 'kleo_mu_before_page' );
- add_action( 'kleo_after_main', 'kleo_mu_after_page' );
- }
- /**
- * GET CUSTOM POST TYPE TAXONOMY LIST
- */
- function kleo_get_category_list( $category_name, $filter = 0, $category_child = "" ) {
- if ( $category_child != "" && $category_child != "All" ) {
- $childcategory = get_term_by( 'slug', $category_child, $category_name );
- $get_category = get_categories( array( 'taxonomy' => $category_name, 'child_of' => $childcategory->term_id ) );
- $category_list = array( '0' => 'All' );
- foreach ( $get_category as $category ) {
- if ( isset( $category->cat_name ) ) {
- $category_list[] = $category->slug;
- }
- }
- return $category_list;
- } else {
- if ( ! $filter ) {
- $get_category = get_categories( array( 'taxonomy' => $category_name ) );
- $category_list = array( '0' => 'All' );
- foreach ( $get_category as $category ) {
- if ( isset( $category->slug ) ) {
- $category_list[] = $category->slug;
- }
- }
- return $category_list;
- } else {
- $get_category = get_categories( array( 'taxonomy' => $category_name ) );
- $category_list = array( '0' => 'All' );
- foreach ( $get_category as $category ) {
- if ( isset( $category->cat_name ) ) {
- $category_list[] = $category->cat_name;
- }
- }
- return $category_list;
- }
- }
- }
- function kleo_get_category_list_key_array( $category_name, $key = 'slug' ) {
- $get_category = get_categories( array( 'taxonomy' => $category_name ) );
- $category_list = array( 'all' => 'All' );
- foreach ( $get_category as $category ) {
- if ( isset( $category->{$key} ) ) {
- $category_list[ $category->{$key} ] = $category->cat_name;
- }
- }
- return $category_list;
- }
- /***************************************************
- * :: Custom main menu select for each page
- ***************************************************/
- if ( ! is_admin() ) {
- add_filter( 'wp_nav_menu_args', 'kleo_set_custom_menu' );
- }
- function kleo_set_custom_menu( $args = '' ) {
- if ( 'primary' != $args['theme_location'] && 'secondary' != $args['theme_location'] ) {
- return $args;
- }
- global $post;
- if ( ! empty( $post ) ) {
- if ( 'primary' == $args['theme_location'] ) {
- $menuslug = get_cfield( 'page_menu', $post->ID );
- if ( ! empty( $menuslug ) && $menuslug != 'default' && is_nav_menu( $menuslug ) ) {
- $args['menu'] = $menuslug;
- }
- } elseif ( 'secondary' == $args['theme_location'] ) {
- $sec_menuslug = get_cfield( 'page_menu_secondary', $post->ID );
- if ( ! empty( $sec_menuslug ) && $sec_menuslug != 'default' && is_nav_menu( $sec_menuslug ) ) {
- $args['menu'] = $sec_menuslug;
- }
- }
- } // END if(!empty($post))
- return $args;
- } // END function kleo_set_custom_menu($args = '')
- /***************************************************
- * :: SIDE MENU
- ***************************************************/
- //if set from admin to show side button
- if ( sq_option( 'side_menu', 0 ) == 1 ) {
- if ( sq_option( 'side_menu_button', 0 ) == 1 ) {
- add_filter( 'wp_nav_menu_items', 'kleo_side_menu_button', 20, 2 );
- }
- add_filter( 'body_class', 'kleo_offcanvas_classes' );
- add_action( 'kleo_after_page', 'kleo_show_side_menu' );
- }
- if ( ! function_exists( 'kleo_side_menu_button' ) ) {
- /**
- * Add side button to menu
- *
- * @param string $items
- * @param object $args
- *
- * @return string
- */
- function kleo_side_menu_button( $items, $args ) {
- if ( $args->theme_location == 'primary' ) {
- $items .= '<li id="nav-menu-item-side" class="menu-item">' .
- '<a href="#" class="open-sidebar" onclick="javascript:return false;">' .
- '<i class="icon-menu"></i>' .
- '</a>' .
- '</li>';
- }
- return $items;
- }
- }
- function kleo_show_side_menu() {
- $side_menu = wp_nav_menu( array(
- 'theme_location' => 'side',
- 'depth' => 3,
- 'container' => '',
- 'menu_class' => 'offcanvas-menu',
- 'fallback_cb' => '',
- 'walker' => new kleo_walker_nav_menu(),
- 'echo' => false
- )
- );
- echo '<div class="offcanvas-sidebar side-color">' .
- '<div class="wrap-canvas-menu">' .
- '<div class="offcanvas-title">' .
- '<a href="#" class="open-sidebar"></a>' .
- '</div>' .
- '<div class="offcanvas-before">' . do_shortcode( sq_option( 'side_menu_before' ) ) . '</div>' .
- '<div class="widget_nav_menu">' .
- $side_menu .
- '</div>' .
- '<div class="offcanvas-after">' . do_shortcode( sq_option( 'side_menu_after' ) ) . '</div>' .
- '</div>' .
- '</div>';
- }
- function kleo_offcanvas_classes( $classes = '' ) {
- if ( sq_option( 'side_menu', 0 ) == 1 ) {
- $classes[] = 'offcanvas-' . sq_option( 'side_menu_position', 'left' );
- $classes[] = 'offcanvas-type-' . sq_option( 'side_menu_type', 'default' );
- }
- return $classes;
- }
- /***************************************************
- * :: BLOG CUSTOMISATIONS
- ***************************************************/
- if ( ! function_exists( 'kleo_view_switch' ) ) {
- /**
- * Show post layout type switcher
- *
- * @param array $layouts
- * @param string $active
- * @param string $identifier
- */
- function kleo_view_switch( $layouts, $active = '', $identifier = '' ) {
- echo '<div class="kleo-view-switch" data-identifier="' . $identifier . '">' .
- '<ul>';
- foreach ( $layouts as $layout ) {
- $selected = '';
- if ( $active == $layout ) {
- $selected = ' active';
- }
- echo '<li><span data-type="' . $layout . '" class="switch-' . $layout . $selected . '"></span></li>';
- }
- echo '</ul>' .
- '</div>' .
- '<div class="clearfix"></div>';
- ?>
- <?php
- }
- }
- /**
- * Return the blog layout from visitor Cookie
- *
- * @param string $layout
- * @param string $identifier
- *
- * @return string
- */
- function kleo_post_grid_layout( $layout = '', $identifier = '' ) {
- $cookie_name = 'kleo-blog-layout' . $identifier;
- if ( isset( $_COOKIE[ $cookie_name ] ) && $_COOKIE[ $cookie_name ] != '' ) {
- $layout = $_COOKIE[ $cookie_name ];
- }
- if ( function_exists( 'get_term_meta' ) ) {
- if ( is_category() ) {
- global $kleo_config;
- $layouts = $kleo_config['blog_layouts'];
- $category = get_category( get_query_var( 'cat' ) );
- $category_meta = get_term_meta( $category->term_id, 'kleo_category_display_type' );
- if ( isset( $category_meta[0] ) && isset( $layouts[ $category_meta[0] ] ) ) {
- $layout = $category_meta[0];
- }
- }
- }
- return $layout;
- }
- add_filter( 'kleo_blog_type', 'kleo_post_grid_layout', 10, 2 );
- /***************************************************
- * :: Let it Snow
- ***************************************************/
- function kleo_site_snow() {
- echo do_shortcode( '[kleo_snow scope="window"]' );
- }
- if ( sq_option( 'let_it_snow', 0 ) == 1 ) {
- add_action( 'kleo_after_page', 'kleo_site_snow' );
- }
- /**
- * Get current post format for posts
- * or custom media settings as post format for custom post type
- * @return mixed|string
- */
- function kleo_get_post_format() {
- if ( get_post_type() == 'portfolio' ) {
- if ( get_cfield( 'media_type' ) && get_cfield( 'media_type' ) != '' ) {
- $media_type = get_cfield( 'media_type' );
- switch ( $media_type ) {
- case 'slider':
- $kleo_post_format = 'gallery';
- break;
- case 'video':
- case 'hosted_video':
- $kleo_post_format = 'video';
- break;
- }
- }
- return $kleo_post_format;
- } else {
- return get_post_format();
- }
- }
- /**
- * Return the URL as requested on the current page load by the user agent.
- *
- * @since KLEO (2.4)
- *
- * @return string Requested URL string.
- */
- function kleo_get_requested_url() {
- $url = is_ssl() ? 'https://' : 'http://';
- $url .= $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
- return apply_filters( 'kleo_get_requested_url', esc_url( $url ) );
- }
- /***************************************************
- * :: Profile placeholder in menu for bbPress or Buddypress
- ***************************************************/
- add_filter( 'walker_nav_menu_start_el', 'kleo_bp_replace_placeholders' );
- function kleo_bp_replace_placeholders( $output ) {
- $initial_output = $output;
- if ( strpos( $output, '##profile_link##' ) !== false ) {
- if ( ! is_user_logged_in() ) {
- return '';
- }
- if ( function_exists( 'bp_is_active' ) ) {
- $logged_in_link = bp_loggedin_user_domain();
- $output = str_replace( '##profile_link##', $logged_in_link, $output );
- } elseif ( class_exists( 'bbPress' ) ) {
- $logged_in_link = bbp_get_user_profile_url( bbp_get_current_user_id() );
- $output = str_replace( '##profile_link##', $logged_in_link, $output );
- }
- }
- if ( strpos( $output, '##member_name##' ) !== false ) {
- if ( ! is_user_logged_in() ) {
- return '';
- }
- if ( function_exists( 'bp_is_active' ) ) {
- $logged_in_username = bp_get_loggedin_user_fullname();
- $output = str_replace( '##member_name##', $logged_in_username, $output );
- } elseif ( class_exists( 'bbPress' ) ) {
- $logged_in_username = bbp_get_user_nicename( bbp_get_current_user_id() );
- $output = str_replace( '##member_name##', $logged_in_username, $output );
- }
- }
- if( is_user_logged_in() ){
- $current_user_firstname = wp_get_current_user()->user_firstname;
- if ($current_user_firstname) {
- $output = str_replace('##member_first_name##', $current_user_firstname, $output);
- }
- $current_user_lastname = wp_get_current_user()->user_lastname;
- if ($current_user_lastname) {
- $output = str_replace('##member_last_name##', $current_user_lastname, $output);
- }
- }
- $output = apply_filters( 'kleo_bp_replace_placeholders', $output, $initial_output );
- return $output;
- }
- /***************************************************
- * :: Custom redirect from Theme options - Miscellaneous
- ***************************************************/
- if ( sq_option( 'login_redirect', 'default' ) == 'custom' && sq_option( 'login_redirect_custom', '' ) != '' ) {
- add_filter( 'login_redirect', 'kleo_custom_redirect', 12 );
- }
- function kleo_custom_redirect() {
- $redirect_to = sq_option( 'login_redirect_custom', '' );
- return $redirect_to;
- }
- if ( ! function_exists( 'kleo_get_post_media' ) ) {
- /**
- * Return post media by format
- *
- * @param $post_format
- * @param $options
- *
- * @return string
- *
- * @since 3.0
- */
- function kleo_get_post_media( $post_format = 'standard', $options = array() ) {
- global $kleo_config;
- if ( isset( $options['icons'] ) && $options['icons'] ) {
- $icons = true;
- } else {
- $icons = false;
- }
- if ( isset( $options['media_width'] ) && isset( $options['media_height'] ) ) {
- $media_width = $options['media_width'];
- $media_height = $options['media_height'];
- } else {
- $media_width = $kleo_config['post_gallery_img_width'];
- $media_height = $kleo_config['post_gallery_img_height'];
- }
- $output = '';
- switch ( $post_format ) {
- case 'video':
- //oEmbed video
- $video = get_cfield( 'embed' );
- // video bg self hosted
- $bg_video_args = array();
- $k_video = '';
- if ( get_cfield( 'video_mp4' ) ) {
- $bg_video_args['mp4'] = get_cfield( 'video_mp4' );
- }
- if ( get_cfield( 'video_ogv' ) ) {
- $bg_video_args['ogv'] = get_cfield( 'video_ogv' );
- }
- if ( get_cfield( 'video_webm' ) ) {
- $bg_video_args['webm'] = get_cfield( 'video_webm' );
- }
- if ( ! empty( $bg_video_args ) ) {
- $attr_strings = array(
- 'preload="none"'
- );
- if ( get_cfield( 'video_poster' ) ) {
- $attr_strings[] = 'poster="' . get_cfield( 'video_poster' ) . '"';
- }
- $k_video .= '<div class="kleo-video-wrap"><video ' . join( ' ', $attr_strings ) . ' controls="controls" class="kleo-video" style="width: 100%; height: 100%;">';
- $source = '<source type="%s" src="%s" />';
- foreach ( $bg_video_args as $video_type => $video_src ) {
- $video_type = wp_check_filetype( $video_src, wp_get_mime_types() );
- $k_video .= sprintf( $source, $video_type['type'], esc_url( $video_src ) );
- }
- $k_video .= '</video></div>';
- $output .= $k_video;
- } // oEmbed
- elseif ( ! empty( $video ) ) {
- global $wp_embed;
- $output .= apply_filters( 'kleo_oembed_video', $video );
- }
- break;
- case 'audio':
- $audio = get_cfield( 'audio' );
- if ( ! empty( $audio ) ) {
- $output .=
- '<div class="post-audio">' .
- '<audio preload="none" class="kleo-audio" id="audio_' . get_the_ID() . '" style="width:100%;" src="' . $audio . '"></audio>' .
- '</div>';
- }
- break;
- case 'gallery':
- $slides = get_cfield( 'slider' );
- $output .= '<div class="kleo-banner-slider">'
- . '<div class="kleo-banner-items" >';
- if ( $slides ) {
- foreach ( $slides as $slide ) {
- if ( $slide ) {
- $image = aq_resize( $slide, $media_width, $media_height, true, true, true );
- //small hack for non-hosted images
- if ( ! $image ) {
- $image = $slide;
- }
- $output .= '<article>
- <a href="' . $slide . '" data-rel="modalPhoto[inner-gallery]">
- <img src="' . $image . '" alt="' . get_the_title() . '">'
- . kleo_get_img_overlay()
- . '</a>
- </article>';
- }
- }
- }
- $output .= '</div>'
- . '<a href="#" class="kleo-banner-prev"><i class="icon-angle-left"></i></a>'
- . '<a href="#" class="kleo-banner-next"><i class="icon-angle-right"></i></a>'
- . '<div class="kleo-banner-features-pager carousel-pager"></div>'
- . '</div>';
- break;
- case 'aside':
- if ( $icons ) {
- $output .= '<div class="post-format-icon"><i class="icon icon-doc"></i></div>';
- }
- break;
- case 'link':
- if ( $icons ) {
- $output .= '<div class="post-format-icon"><i class="icon icon-link"></i></div>';
- }
- break;
- case 'quote':
- if ( $icons ) {
- $output .= '<div class="post-format-icon"><i class="icon icon-quote-right"></i></div>';
- }
- break;
- case 'image':
- default:
- if ( kleo_get_post_thumbnail_url() != '' ) {
- $output .= '<div class="post-image">';
- $img_url = kleo_get_post_thumbnail_url();
- $image = aq_resize( $img_url, $media_width, $media_height, true, true, true );
- if ( ! $image ) {
- $image = $img_url;
- }
- $output .= '<a href="' . get_permalink() . '" class="element-wrap">'
- . '<img src="' . $image . '" alt="' . get_the_title() . '">'
- . kleo_get_img_overlay()
- . '</a>';
- $output .= '</div><!--end post-image-->';
- } elseif ( $icons ) {
- $post_icon = $post_format == 'image' ? 'picture' : 'doc';
- $output .= '<div class="post-format-icon"><i class="icon icon-' . $post_icon . '"></i></div>';
- }
- break;
- }
- return $output;
- }
- }
- /***************************************************
- * :: Custom taxonomy category template
- ***************************************************/
- if ( function_exists( 'get_term_meta' ) ) {
- function kleo_category_display_type_form( $category = false ) {
- global $kleo_config;
- $layouts = array_merge( $kleo_config['blog_layouts'], array( 'kb' => 'Knowledge Base' ) );
- $category_layout = '';
- if ( $category && is_object( $category ) ) {
- $category_id = $category->term_id;
- $category_meta = get_term_meta( $category_id, 'kleo_category_display_type' );
- if ( isset( $category_meta[0] ) && isset( $layouts[ $category_meta[0] ] ) ) {
- $category_layout = $category_meta[0];
- }
- }
- ?>
- <tr class="form-field">
- <th scope="row" valign="top"><label
- for="kleo_category_display_type"><?php _e( 'Display type', 'kleo_framework' ); ?></label></th>
- <td>
- <div class="form-field term-meta-wrap">
- <select id="kleo_category_display_type" name="kleo_category_display_type">
- <option value=""><?php _e( 'Use default display type', 'kleo_framework' ); ?></option>
- <?php foreach ( $layouts as $layout => $layout_name ) { ?>
- <option
- value="<?php echo esc_attr( $layout ); ?>" <?php echo( $layout == $category_layout ? 'selected="selected"' : '' ); ?>><?php echo esc_html( $layout_name ); ?></option>
- <?php } ?>
- </select>
- <p class="description"><?php _e( 'The "Display type" will override the default display layout for each category in part.', 'kleo_framework' ); ?></p>
- </div>
- </td>
- </tr>
- <?php
- }
- add_action( 'category_add_form_fields', 'kleo_category_display_type_form' );
- add_action( 'category_edit_form_fields', 'kleo_category_display_type_form' );
- function kleo_category_display_type_save( $category_id ) {
- if ( isset( $_POST['kleo_category_display_type'] ) ) {
- global $kleo_config;
- $layouts = array_merge( $kleo_config['blog_layouts'], array( 'kb' => 'Knowledge Base' ) );
- $category_layout = esc_attr( $_POST['kleo_category_display_type'] );
- if ( isset( $layouts[ $category_layout ] ) ) {
- update_term_meta( $category_id, 'kleo_category_display_type', $category_layout );
- } else {
- delete_term_meta( $category_id, 'kleo_category_display_type' );
- }
- }
- }
- add_action( 'created_category', 'kleo_category_display_type_save' );
- add_action( 'edited_category', 'kleo_category_display_type_save' );
- function kleo_category_display_type_template( $template ) {
- if ( is_category() ) {
- $category = get_category( get_query_var( 'cat' ) );
- $category_meta = get_term_meta( $category->term_id, 'kleo_category_display_type' );
- if ( isset( $category_meta[0] ) && $category_meta[0] == 'kb' && locate_template( 'page-parts/posts-layout-kb.php' ) ) {
- return locate_template( 'page-parts/posts-layout-kb.php' );
- }
- }
- return $template;
- }
- add_filter( 'template_include', 'kleo_category_display_type_template' );
- }
- /***************************************************
- * :: Allow site layout overriding at page/post level
- ***************************************************/
- function kleo_custom_site_style( $style ) {
- if ( is_singular() ) {
- $page_style = get_cfield( 'site_style' );
- if ( $page_style ) {
- $style = $page_style == 'boxed' ? ' page-boxed' : '';
- }
- }
- if ( $style == ' page-boxed' ) {
- add_filter( 'body_class', 'kleo_boxed_bg_body_class' );
- }
- return $style;
- }
- add_filter( 'kleo_site_style', 'kleo_custom_site_style' );
- function kleo_boxed_bg_body_class( $classes ) {
- $classes[] = 'page-boxed-bg';
- return $classes;
- }
- /***************************************************
- * :: Blog tags in footer
- ***************************************************/
- function kleo_show_post_tags( $content ) {
- if ( is_single() ) {
- $tag_list = get_the_tag_list( '', __( ', ', 'kleo_framework' ) );
- if ( isset( $tag_list ) && $tag_list ) {
- $tags_array = explode( ',', $tag_list );
- $tag_html = '';
- foreach ( $tags_array as $tag ) {
- $tag_html .= '<span class="label label-default">' . $tag . '</span> ';
- }
- $content .= esc_html__( 'Tags: ', 'kleo_framework' ) . $tag_html;
- }
- }
- return $content;
- }
- if ( sq_option( 'blog_tags_footer', 0 ) ) {
- add_action( 'the_content', 'kleo_show_post_tags', 20 );
- }
- /*
- * Force URLs in srcset attributes into HTTPS scheme.
- * This is particularly useful when you're running a Flexible SSL frontend like Cloudflare
- */
- function ssl_srcset( $sources ) {
- if ( is_ssl() ) {
- foreach ( $sources as &$source ) {
- $source['url'] = set_url_scheme( $source['url'], 'https' );
- }
- }
- return $sources;
- }
- add_filter( 'wp_calculate_image_srcset', 'ssl_srcset' );
- /***************************************************
- * :: Manage custom page redirects
- ***************************************************/
- function kleo_template_redirect() {
- if ( is_user_logged_in() ) {
- $homepage_redirect = sq_option( 'homepage_redirect', 'disabled' );
- if ( is_front_page() && ( $homepage_redirect == 'profile' || $homepage_redirect == 'custom' ) ) {
- if ( function_exists( 'bp_is_active' ) ) {
- $logged_in_link = bp_loggedin_user_domain( '/' );
- } elseif ( class_exists( 'bbPress' ) ) {
- $logged_in_link = bbp_get_user_profile_url( bbp_get_current_user_id() );
- } else {
- $logged_in_link = home_url( 'author' );
- }
- if ( $homepage_redirect == 'profile' ) {
- wp_redirect( $logged_in_link );
- }
- if ( $homepage_redirect == 'custom' ) {
- $homepage_redirect_custom = sq_option( 'homepage_redirect_custom', $logged_in_link );
- if ( strpos( $homepage_redirect_custom, '##profile_link##' ) !== false ) {
- $homepage_redirect_custom = str_replace( '##profile_link##', $logged_in_link, $homepage_redirect_custom );
- }
- wp_redirect( $homepage_redirect_custom );
- }
- exit;
- }
- }
- }
- add_action( 'template_redirect', 'kleo_template_redirect' );
- /**
- * Remove hentry class from pages to stop google structured data errors
- *
- * @param array $classes
- *
- * @return array
- */
- function kleo_remove_hentry_on_pages( $classes ) {
- if ( is_page() && ! ( function_exists( 'bp_is_group_forum_topic' ) && bp_is_group_forum_topic() ) ) {
- $classes = array_diff( $classes, array( 'hentry' ) );
- }
- return $classes;
- }
- add_filter( 'post_class', 'kleo_remove_hentry_on_pages' );
- /* Re-enable theme auto-update for Go Pricing Tables */
- add_action( 'admin_init', 'kleo_go_pricing_enable_updates', 11 );
- function kleo_go_pricing_enable_updates() {
- if ( class_exists( 'GW_GoPricing_Update' ) ) {
- remove_filter( 'pre_set_site_transient_update_plugins', array(
- GW_GoPricing_Update::instance(),
- 'check_update'
- ) );
- remove_filter( 'plugins_api', array( GW_GoPricing_Update::instance(), 'update_info' ), 10, 3 );
- }
- }
- if ( sq_option( 'mobile_app_capable', 1 ) ) {
- add_action( 'wp_head', 'kleo_add_mobile_app_capable_tag' );
- }
- function kleo_add_mobile_app_capable_tag() {
- ?>
- <meta name="mobile-web-app-capable" content="yes">
- <?php
- }
- if ( sq_option( 'apple_mobile_app_capable', 1 ) ) {
- add_action( 'wp_head', 'kleo_add_apple_mobile_app_capable_tag' );
- }
- function kleo_add_apple_mobile_app_capable_tag() {
- ?>
- <meta name="apple-mobile-web-app-capable" content="yes">
- <?php
- }
- if ( sq_option( 'meta_theme_color', '' ) != '' && sq_option( 'meta_theme_color', '' ) != 'transparent' ) {
- add_action( 'wp_head', 'kleo_add_meta_color' );
- }
- function kleo_add_meta_color() {
- ?>
- <!-- Chrome, Firefox OS and Opera -->
- <meta name="theme-color" content="<?php echo sq_option( 'meta_theme_color', '' ); ?>">
- <!-- Windows Phone -->
- <meta name="msapplication-navbutton-color" content="<?php echo sq_option( 'meta_theme_color', '' ); ?>">
- <!-- Safari -->
- <meta name="apple-mobile-web-app-status-bar-style" content="<?php echo sq_option( 'meta_theme_color', '' ); ?>">
- <?php
- }
- /* Schema org for body */
- if ( ! function_exists( 'kleo_get_schema_org_markup' ) ) {
- function kleo_get_schema_org_markup() {
- $schema = 'http://schema.org/';
- if ( is_singular( 'post' ) ) {
- $type = "Article";
- } elseif ( is_singular( 'portfolio' ) ) {
- $type = "VisualArtwork";
- } else if (bp_is_user()) {
- $type = 'ProfilePage';
- } else {
- if ( is_author() ) {
- $type = 'ProfilePage';
- } // Is search results page
- elseif ( is_search() ) {
- $type = 'SearchResultsPage';
- } else {
- $type = 'WebPage';
- }
- }
- $type = apply_filters( 'kleo_schema_org_type', $type );
- return 'itemscope itemtype="' . $schema . $type . '"';
- }
- }
- function kleo_schema_org_markup() {
- echo kleo_get_schema_org_markup();
- }
- /**
- *
- * Override header layout at page level
- *
- * @param $output
- * @param $option
- *
- * @return bool|mixed
- */
- function kleo_override_header_layout( $output, $option ) {
- if ( $option == 'header_layout' ) {
- $output = get_cfield( 'header_layout' );
- }
- return $output;
- }
- /* Remove blog posts from main blog loop */
- if ( sq_option( 'blog_exclude_cat' ) ) {
- function sq_exclude_blog_category( $query ) {
- $to_exclude = sq_option( 'blog_exclude_cat' );
- if ( ! empty( $to_exclude ) && is_array( $to_exclude ) ) {
- if ( $query->is_home() && $query->is_main_query() ) {
- $query->set( 'category__not_in', $to_exclude );
- }
- }
- }
- add_action( 'pre_get_posts', 'sq_exclude_blog_category' );
- }
- /* Tag cloud font size */
- if ( sq_option( 'blog_tag_cloud', 0 ) == 0 ) {
- add_action( 'init', 'sq_tag_cloud_size' );
- function sq_tag_cloud_size() {
- sq_kleo()->add_css( '.widget_tag_cloud a { font-size: small !important; }' );
- }
- }
- /* Ajax for posts grid element */
- add_action( 'wp_ajax_nopriv_vc_post_items', 'sq_vc_posts_ajax' );
- add_action( 'wp_ajax_vc_post_items', 'sq_vc_posts_ajax' );
- function sq_vc_posts_ajax() {
- // Check the nonce, if it fails the function will break
- check_ajax_referer( 'kleo-ajax-posts-nonce', 'security' );
- /* If not our action, bail out */
- if ( ! isset( $_POST['action'] ) || 'vc_post_items' != $_POST['action'] ) {
- return false;
- }
- $count_id = (int) $_POST['pitem'];
- $post_id = $_POST['post_id'];
- if (isset( $_POST['paged'] )) {
- $paged = $_POST['paged'];
- } else {
- $paged = '';
- }
- $args = get_transient( 'kleo_post_' . $post_id . '_' . $count_id );
- if ( $args ) {
- $args = maybe_unserialize( $args );
- }
- if ( ! is_array( $args ) ) {
- wp_send_json_error( array( 'message' => __( 'Something went wrong. Please reload page.', 'kleo_framework' ) ) );
- exit;
- }
- $args['ajax_paged'] = $paged;
- $args['ajax_post'] = $post_id;
- $items = vc_do_shortcode( $args, null, 'vc_posts_grid' );
- wp_send_json_success( array( 'message' => $items ) );
- exit;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement