/** * Benue functions and definitions * * When using a child theme you can override certain functions (those wrapped * in a function_exists() call) by defining them first in your child theme's * functions.php file. The child theme's functions.php file is included before * the parent theme's file, so the child theme functions would be used. * * @link https://codex.wordpress.org/Theme_Development * @link https://codex.wordpress.org/Child_Themes * * Functions that are not pluggable (not wrapped in function_exists()) are * instead attached to a filter or action hook. * * For more information on hooks, actions, and filters, * {@link https://codex.wordpress.org/Plugin_API} * */ /*-----------------------------------------------------------------------------------*/ /* SETS UP THEME DEFAULTS AND REGISTERS SUPPORT FOR VARIOUS WORDPRESS FEATURES /*-----------------------------------------------------------------------------------*/ if ( ! function_exists( 'kktfwp_theme_setup' ) ) { function kktfwp_theme_setup() { // Make theme available for translation load_theme_textdomain( 'benue', get_theme_file_uri( '/languages' ) ); // Add default posts and comments RSS feed links to head. add_theme_support( 'automatic-feed-links' ); /* * Let WordPress manage the document title. * By adding theme support, we declare that this theme does not use a * hard-coded
' . '
'; $fields['url'] = '' . '
'; return $fields; } } /*-----------------------------------------------------------------------------------*/ /* CHECK IF META PLUGIN INSTALLED /*-----------------------------------------------------------------------------------*/ if ( !function_exists('rwmb_meta') ) { function rwmb_meta() { return false; } } else { function kktfwp_meta_style() { wp_enqueue_style( 'kktfwp-meta-style', get_theme_file_uri( '/css/meta-style.css' ), '', kktfwp_themeData() ); } add_action('admin_enqueue_scripts', 'kktfwp_meta_style'); } /*-----------------------------------------------------------------------------------*/ /* GET FILTER CATEGORIES /*-----------------------------------------------------------------------------------*/ if ( !function_exists( 'kktfwp_filter' ) ) { function kktfwp_filter ( $args, $id = NULL ) { $i = 0; if ( isset($id) ) { $id = $id; } else { $id = get_the_id(); } $homeStyle = rwmb_meta( '_kktfwp_homeStyle', 'type=select', $id ); $query = new WP_Query( $args ); while ( $query->have_posts() ) : $query->the_post(); $isFeatured = rwmb_meta( '_kktfwp_featured' ); if ( ( $homeStyle === 'featured' ) & ( $isFeatured == $id ) ) { $terms = get_the_terms( get_the_id(), 'portfolio-type' ); $i+=1; $ids[] = get_the_id(); } elseif ( $homeStyle === 'latest' ) { $terms = get_the_terms( get_the_id(), 'portfolio-type' ); $i+=1; $ids = ''; } else { unset($terms); } if( isset( $terms ) ) { if( is_array( $terms ) ) { foreach( $terms as $term ) { $termsArr[] = array ( 'slug' => $term->slug, 'name' => $term->name, 'id' => $term->term_id ); } } } endwhile; wp_reset_postdata(); if( isset( $termsArr ) ) { $num = array_count_values(array_map(function($item) { return $item['slug']; }, $termsArr)); $termsArr = array_map("unserialize", array_unique(array_map("serialize", $termsArr))); return array( $termsArr, $i, $num, $ids ); } return; } } /** * Handles JavaScript detection. * * Adds a `js` class to the root `` element when JavaScript is detected. * * @since Benue 1.0 */ function kktfwp_javascript_detection() { echo "\n"; } add_action( 'wp_head', 'kktfwp_javascript_detection', 0 ); /*-----------------------------------------------------------------------------------*/ /* ENQUEUES SCRIPTS AND STYLES /*-----------------------------------------------------------------------------------*/ function kktfwp_scripts() { $postid = kktfwp_postid(); // Add custom fonts, used in the main stylesheet. wp_enqueue_style( 'kktfwp-fonts', kktfwp_fonts_url(), array(), null ); // Theme stylesheet. wp_enqueue_style( 'kktfwp-style', get_stylesheet_uri(), array(), kktfwp_themeData() ); /* Scripts */ if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } wp_enqueue_script( 'kktfwp-modernizr', get_theme_file_uri( '/js/jquery.modernizr.custom.js' ), array( 'jquery' ), kktfwp_themeData(), false ); wp_enqueue_script( 'isotope', get_theme_file_uri( '/js/isotope.min.js' ), array( 'jquery' ), kktfwp_themeData(), true ); wp_enqueue_script( 'kktfwp-helpers', get_theme_file_uri( '/js/jquery.helpers.js' ), array( 'jquery' ), kktfwp_themeData(), true ); wp_enqueue_script( 'photoswipe', get_theme_file_uri( '/js/photoswipe.min.js' ), array( 'jquery' ), kktfwp_themeData(), true ); wp_enqueue_script( 'kktfwp-scripts', get_theme_file_uri( '/js/jquery.scripts.js' ), array( 'jquery' ), kktfwp_themeData(), true ); wp_enqueue_script( 'kktfwp-lazysizes', get_theme_file_uri( '/js/lazysizes.min.js' ), array( 'jquery' ), kktfwp_themeData(), true ); $kktfwp_args = array(); $kktfwp_args['parallaxEffect'] = get_theme_mod('kktfwp_hero_parallax', 'on'); $kktfwp_args['scrollMonitor'] = rwmb_meta( '_kktfwp_pauseVid' ); $kktfwp_args['rightClick'] = array( 'click' => get_theme_mod('kktfwp_protection', '0'), 'message' => get_theme_mod( 'kktfwp_protection_message', '' ) ); $kktfwp_args['menuSettings'] = array( 'changeColor' => get_theme_mod('kktfwp_menu_change_color', '0'), 'onScrollUp' => get_theme_mod('kktfwp_menu_back', '0'), 'isSticky' => get_theme_mod('kktfwp_menu_sticky', '1'), ); $kktfwp_portfolio_style = ( rwmb_meta( '_kktfwp_portfolio_style' ) !== 'global' && !is_tax( 'portfolio-type' ) ) ? rwmb_meta( '_kktfwp_portfolio_style' ) : get_theme_mod( 'kktfwp_portfolio_style', 'grid'); $kktfwp_args['masonry'] = array( 'layout' => ( $kktfwp_portfolio_style === 'grid' ) ? 'masonry' : $kktfwp_portfolio_style ); $kktfwp_args['preloader'] = array( 'state' => ( get_theme_mod('kktfwp_preloader', '1') == 1 && rwmb_meta( '_kktfwp_preloader', 'type=select', $postid ) !== 'disable' || rwmb_meta( '_kktfwp_preloader', 'type=select', $postid ) === 'enable' ) ? true : false ); $kktfwp_args['layoutVis'] = array( 'style' => rwmb_meta( '_kktfwp_visibility' ) ); wp_localize_script( 'kktfwp-scripts', 'kktfwp', $kktfwp_args ); } add_action( 'wp_enqueue_scripts', 'kktfwp_scripts' ); /*-----------------------------------------------------------------------------------*/ /* ENQUEUE WORDPRESS THEME STYLES WITHIN GUTENBERG /*-----------------------------------------------------------------------------------*/ if ( !function_exists( 'kktfwp_gutenberg_styles' ) ) { function kktfwp_gutenberg_styles() { // Add custom fonts, used in the Gutenberg editor. wp_enqueue_style( 'kktfwp-fonts', kktfwp_fonts_url(), array(), null ); // Load the theme styles within Gutenberg. wp_enqueue_style( 'kktfwp-gutenberg', get_theme_file_uri( '/css/gutenberg.css' ), false, kktfwp_themeData(), 'all' ); } } add_action( 'enqueue_block_editor_assets', 'kktfwp_gutenberg_styles' ); /*-----------------------------------------------------------------------------------*/ /* GETS FEATURED IMAGE COLOR /*-----------------------------------------------------------------------------------*/ if ( !function_exists( 'kktfwp_setImageBg' ) ) { function kktfwp_setImageBg() { check_ajax_referer( 'bg-nonce', '_wpnonce' ); $color = array( 'r' => $_POST['r'], 'g' => $_POST['g'], 'b' => $_POST['b'], 't' => $_POST['t'] ); if ( ! add_post_meta( $_POST['post_id'], 'kktfwp_ImageBg', $color, true ) ) { update_post_meta( $_POST['post_id'], 'kktfwp_ImageBg', $color ); } wp_send_json_success(get_post_meta( $_POST['post_id'], 'kktfwp_ImageBg')); } } add_action('wp_ajax_kktfwp_setImageBg', 'kktfwp_setImageBg'); if ( !function_exists( 'kktfwp_enqueue_scripts_back_end' ) ) { function kktfwp_enqueue_scripts_back_end() { wp_enqueue_script( 'kktfwp-admin-script', get_theme_file_uri( '/js/jquery.admin-scripts.js' ), array( 'jquery' ), '1.0', true ); wp_enqueue_script( 'kktfwp-color-thief', get_theme_file_uri( '/js/jquery.color-thief.min.js' ), array( 'jquery' ), '1.0', true ); wp_localize_script( 'kktfwp-admin-script', 'kktfwp_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'id' => get_the_ID(), 'ajax_nonce' => wp_create_nonce( 'bg-nonce' ) ) ); } } add_action('admin_enqueue_scripts','kktfwp_enqueue_scripts_back_end'); /*-----------------------------------------------------------------------------------*/ /* ADDS INLINE STYLE FOR PROJECTS OVERLAYS /*-----------------------------------------------------------------------------------*/ if ( !function_exists( 'kktfwp_inline_css' ) ) { function kktfwp_inline_css() { if ( is_page_template( 'template-portfolio.php' ) || is_tax( 'portfolio-type' ) ) { $args = array( 'post_type' => 'kktfwp_portfolio', 'posts_per_page' => -1, ); $inline_style = ''; $query = new WP_Query( $args ); while ( $query->have_posts() ) : $query->the_post(); $id = get_the_id(); $overlay_color = get_post_meta ( $id, 'kktfwp_ImageBg', true ); if ( get_theme_mod( 'kktfwp_portfolio_thumbs', 's-1' ) === 's-1' ) { $inline_style .= ( isset($overlay_color['t']) ) ? '#overlay_' .$id. ' .proj-content {color:'.$overlay_color['t'].';}' : '#overlay_'. $id .' .proj-content {color: #444;}'; } if ( is_array( $overlay_color ) ) { $inline_style .= '#overlay_'. $id .'{ color: rgb('.$overlay_color['r'].','.$overlay_color['g'].','.$overlay_color['b'].'); }'; } endwhile; wp_reset_postdata(); // Remove space after colons $inline_style = str_replace(': ', ':', $inline_style); // Remove whitespace $inline_style = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $inline_style); wp_add_inline_style( 'kktfwp-style', $inline_style ); } return; } } if ( get_theme_mod('kktfwp_portfolio_po', '1') === 1 ) { add_action( 'wp_enqueue_scripts', 'kktfwp_inline_css', 15 ); } /*-----------------------------------------------------------------------------------*/ /* ADDS CUSTOM CLASSES TO THE ARRAY OF BODY CLASSES * @param array $classes Classes for the body element. /*-----------------------------------------------------------------------------------*/ if ( !function_exists( 'kktfwp_body_classes' ) ) { function kktfwp_body_classes( $classes ) { $postid = kktfwp_postid(); $portfolioStyle = ( rwmb_meta( '_kktfwp_portfolio_style' ) != 'global' && !is_tax( 'portfolio-type' ) ) ? rwmb_meta( '_kktfwp_portfolio_style' ) : get_theme_mod( 'kktfwp_portfolio_style', 'grid'); $portfolioGaps = ( rwmb_meta( '_kktfwp_gaps' ) != 'global' && !is_tax( 'portfolio-type' ) ) ? rwmb_meta( '_kktfwp_gaps' ) : get_theme_mod( 'kktfwp_portfolio_gaps', 'normal' ); // Adds a class of group-blog to sites with more than 1 published author. if ( is_multi_author() ) { $classes[] = 'group-blog'; } // Adds a class of hfeed to non-singular pages. if ( ! is_singular() ) { $classes[] = 'hfeed'; } if ( is_active_sidebar( 'kktfwp-sidebar-blog' ) && ( is_search() || is_archive() || is_singular( 'post' ) || is_front_page() && is_home() || is_home() ) ) { $classes[] = 'active-sidebar'; } if ( is_active_sidebar( 'kktfwp-sidebar-page' ) && ( is_page() ) ) { $classes[] = 'active-sidebar'; } if ( is_singular( 'kktfwp_portfolio' ) ) { $classes[] = 'portfolio-content-'.rwmb_meta( '_kktfwp_layout' ); } if ( ( is_page_template( 'template-portfolio.php' ) || is_tax( 'portfolio-type' ) ) & $portfolioGaps != 'disabled' ) { $classes[] = 'portfolio-gaps-'.$portfolioGaps; } if ( is_page_template( 'template-portfolio.php' ) || is_tax( 'portfolio-type' ) ) { $classes[] = sprintf( 'portfolio-columns-%s', ( rwmb_meta( '_kktfwp_portfolio_columns' ) != 'global' && !is_tax( 'portfolio-type' ) ) ? rwmb_meta( '_kktfwp_portfolio_columns' ) : get_theme_mod( 'kktfwp_portfolio_columns', '3' ) ); } if ( rwmb_meta( '_kktfwp_titleType' ) === 'hero' ) { $classes[] = 'hero-enabled'; } if ( rwmb_meta( '_kktfwp_herovid' ) ) { $classes[] = 'hero-video'; } if ( rwmb_meta( '_kktfwp_titleSource' ) ) { $classes[] = 'title-'.rwmb_meta( '_kktfwp_titleSource' ); } if ( in_array( rwmb_meta( '_kktfwp_layout' ), array( 'top', 'top-halfs' ) ) & !in_array( rwmb_meta( '_kktfwp_type' ), array( 'gallery', 'videos' ) ) ) { $classes[] = 'kktfwp-masonry'; } if ( in_array( rwmb_meta( '_kktfwp_type' ), array( 'videos' ) ) ) { $classes[] = 'kktfwp-video-project'; } if ( get_theme_mod('kktfwp_preloader', '1') == 1 && rwmb_meta( '_kktfwp_preloader', 'type=select', $postid ) !== 'disable' || rwmb_meta( '_kktfwp_preloader', 'type=select', $postid ) === 'enable' ) { $classes[] = 'kktfwp-preloader'; } if ( $portfolioStyle === 'masonry' ) { $classes[] = 'portfolio-masonry'; } else if ( $portfolioStyle === 'packery' ) { $classes[] = 'portfolio-mosaic'; } $portfolioWidth = ( rwmb_meta( '_kktfwp_portfolioWidth' ) != 'global' && !is_tax( 'portfolio-type' ) ) ? rwmb_meta( '_kktfwp_portfolioWidth' ) : get_theme_mod( 'kktfwp_portfolioWidth', 'narrow' ); if ( $portfolioWidth === 'wide' && ( is_page_template( 'template-portfolio.php' ) || is_tax( 'portfolio-type' ) ) ) { $classes[] = 'wide-portfolio'; } if ( $portfolioWidth === 'superwide' ) { $classes[] = 'wide-portfolio completely-wide-portfolio'; } if ( get_theme_mod('kktfwp_menu_width', '0' ) == 1 ) { $classes[] = 'wide-menu'; } if ( get_theme_mod('kktfwp_category', '0' ) == 1 ) { $classes[] = 'visible-category'; } $menuTransparency = rwmb_meta( '_kktfwp_headerScheme' ); $menuTransparency = isset( $menuTransparency['_kktfwp_menuTransparency'] ) ? $menuTransparency['_kktfwp_menuTransparency'] : 'global'; if ( get_theme_mod('kktfwp_menu_transparency', '0' ) == 1 && $menuTransparency !== 'disable' || $menuTransparency === 'enable' ) { $classes[] = 'transparent-menu'; } if ( get_theme_mod('kktfwp_footer_width', '0' ) == 1 ) { $classes[] = 'wide-footer'; } if ( get_theme_mod('kktfwp_menu_sticky', '1' ) != 1 ) { $classes[] = 'non-sticky-menu'; } if ( get_theme_mod('kktfwp_menu_back', '0' ) == 1 ) { $classes[] = 'onscroll-menu'; } if ( get_theme_mod('kktfwp_menu_underline', '1' ) == 1 ) { $classes[] = 'menu-underline'; } if ( get_theme_mod('kktfwp_filter_creative', '0' ) == 1 && get_theme_mod('kktfwp_filter', '0' ) == 1 ) { $classes[] = 'creative-filter'; } If ( is_page_template( 'template-portfolio.php' ) || is_tax( 'portfolio-type' ) ) { $thumbsStyle = get_theme_mod( 'kktfwp_portfolio_thumbs', 's-1' ); switch($thumbsStyle) { case 's-2': $classes[] = 'thumbs--2'; break; case 's-3': $classes[] = 'thumbs--3'; break; } } $menuStyle = get_theme_mod( 'kktfwp_menu_style', 'classic' ); if ( $menuStyle !== 'modern' ) { $classes[] = ( get_theme_mod( 'kktfwp_menu_reverse', '0' ) === 1 ) ? 'menu-reverse-order' : '' ; } switch($menuStyle) { case 'minimal': $classes[] = 'menu-ch'; break; case 'side': $classes[] = 'menu-sb'; break; case 'modern': $classes[] = 'menu-modern'; $classes[] = get_theme_mod( 'kktfwp_menu_order', 'm-l-s' ); break; } return $classes; } } add_filter( 'body_class', 'kktfwp_body_classes' ); /*-----------------------------------------------------------------------------------*/ /* ADDS ODD/EVEN CLASS TO BLOG POSTS /*-----------------------------------------------------------------------------------*/ add_filter( 'post_class', 'kktfwp_odd_even' ); if ( !function_exists( 'kktfwp_odd_even' ) ) { function kktfwp_odd_even( $classes ) { global $wp_query; if ( ! is_singular( 'post' ) ) { if($wp_query->current_post % 2 == 0) { $classes[] = 'odd'; } else { $classes[] = 'even'; } } return $classes; } } /*-----------------------------------------------------------------------------------*/ /* ADDS FACEBOOK OPEN GRAPH AND TWITTER CARD META TAGS TO WORDPRESS /*-----------------------------------------------------------------------------------*/ add_action( 'wp_head', 'kktfwp_sharing_meta_head', 10, 2 ); if ( !function_exists( 'kktfwp_sharing_meta_head' ) ) { function kktfwp_sharing_meta_head() { $shareArr = array(); // Get desired title, description and url for OG meta if ( is_feed() || is_search() || is_404() || post_password_required() ) return; global $post; $shareArr['url'] = is_front_page() ? esc_url( home_url( '/' ) ) : get_permalink( $post->ID ); $shareArr['description'] = wp_trim_words( strip_shortcodes( $post->post_content ) ); if ( is_archive() ) { $shareArr['title'] = get_the_archive_title(); global $wp_query; if ( is_author() ) { $author_id = get_query_var( 'author' ); $shareArr['url'] = get_author_posts_url( $author_id ); $shareArr['description'] = wp_trim_words( strip_tags( get_the_author_meta( 'description', $author_id ) ) ); } else { $shareArr['description'] = wp_trim_words( get_the_archive_description() ); } $queried_object = get_queried_object(); if ( isset( $queried_object->taxonomy ) ) { $shareArr['url'] = get_term_link( $queried_object->slug, $queried_object->taxonomy ); } elseif ( isset( $queried_object->query_var ) ) { $shareArr['url'] = get_post_type_archive_link( $queried_object->query_var ); } else { if ( isset( $wp_query->query_vars['year'] ) ) { if ( is_year() ) { $shareArr['url'] = get_year_link( $wp_query->query_vars['year'] ); } elseif ( is_month() ) { $shareArr['url'] = get_month_link( $wp_query->query_vars['year'], $wp_query->query_vars['monthnum'] ); } elseif ( is_day() ) { $shareArr['url'] = get_day_link( $wp_query->query_vars['year'], $wp_query->query_vars['monthnum'], $wp_query->query_vars['day'] ); } } } } elseif ( '' == $shareArr['description'] || is_front_page() ) { $shareArr['title'] = get_bloginfo( 'name' ); $shareArr['description'] = get_bloginfo( 'description' ); } else { $shareArr['title'] = get_the_title( $post->ID ); } $shareArr['title'] = strip_tags( $shareArr['title'] ); // Image if ( has_post_thumbnail( $post->ID ) ) { $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'kktfwp-s-s' ); $image_url = $image[0]; $w = $image[1]; $h = $image[2]; printf( '', esc_url( $image_url ) ); } else { $image_url = ''; $w = ''; $h = ''; } // Markup if ( is_single() ) { echo ''; } printf( ' ', esc_attr( $shareArr['title'] ), esc_url( $image_url ), esc_attr( $w ), esc_attr( $h ), esc_attr( strip_tags( $shareArr['description'] ) ), esc_url( $shareArr['url'] ), esc_attr( get_bloginfo( 'name' ) ) ); printf( ' ', esc_url( $shareArr['url'] ), esc_attr( $shareArr['title'] ), esc_attr( strip_tags( $shareArr['description'] ) ), esc_url( $image_url ) ); } } /*-----------------------------------------------------------------------------------*/ /* POSTS/PROJECTS NAVIGATION /*-----------------------------------------------------------------------------------*/ add_action( 'kktfwp_nav', 'kktfwp_navigation' ); if ( !function_exists( 'kktfwp_navigation' ) ) { function kktfwp_navigation() { $prev_next_posts = array( get_previous_post(), get_next_post() ); foreach ( $prev_next_posts as $post ) { $postData[] = array( 'ID' => !empty( $post->ID ) ? $post->ID : 0, 'thumbnail' => '' !== $post ? get_the_post_thumbnail( $post->ID, 'thumbnail', array('class'=>'responsively-lazy', 'data-lazy-load' => 1) ) : '' ); } $backLink = rwmb_meta( '_kktfwp_backBtn' ); echo '