• File: functions.php
  • Full Path: /home/blwgracecity/jesusexp.org/wp-content/themes/c0m0r5js/functions.php
  • File size: 16.8 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php


/* ---------------------------------------------------------------------------------------------
   THEME SETUP
   --------------------------------------------------------------------------------------------- */

if ( ! function_exists( 'fukasawa_setup' ) ) :
	function fukasawa_setup() {
		
		// Automatic feed
		add_theme_support( 'automatic-feed-links' );
		
		// Set content-width
		global $content_width;
		if ( ! isset( $content_width ) ) $content_width = 620;
		
		// Post thumbnails
		add_theme_support( 'post-thumbnails' );
		set_post_thumbnail_size ( 88, 88, true );
		
		add_image_size( 'post-image', 973, 9999 );
		add_image_size( 'post-thumb', 508, 9999 );
		
		// Post formats
		add_theme_support( 'post-formats', array( 'gallery', 'image', 'video' ) );
			
		// Jetpack infinite scroll
		add_theme_support( 'infinite-scroll', array(
			'type' 		=> 'click',
			'container'	=> 'posts',
			'footer' 	=> false,
		) );

		// Custom logo
		add_theme_support( 'custom-logo', array(
			'height'      => 240,
			'width'       => 320,
			'flex-height' => true,
			'flex-width'  => true,
			'header-text' => array( 'blog-title' ),
		) );
		
		// Title tag
		add_theme_support( 'title-tag' );
		
		// Add nav menu
		register_nav_menu( 'primary', __( 'Primary Menu', 'fukasawa' ) );
		
		// Make the theme translation ready
		load_theme_textdomain( 'fukasawa', get_template_directory() . '/languages' );
		
	}
	add_action( 'after_setup_theme', 'fukasawa_setup' );
endif;


/*	-----------------------------------------------------------------------------------------------
	REQUIRED FILES
	Include required files
--------------------------------------------------------------------------------------------------- */

// Handle Customizer settings
require get_template_directory() . '/inc/classes/class-fukasawa-customize.php';


/* ---------------------------------------------------------------------------------------------
   GET THEME VERSION
   --------------------------------------------------------------------------------------------- */

if ( ! function_exists( 'fukasawa_get_version' ) ) :
	function fukasawa_get_version() {

		return wp_get_theme( 'fukasawa' )->theme_version;

	}
endif;


/* ---------------------------------------------------------------------------------------------
   ENQUEUE SCRIPTS
   --------------------------------------------------------------------------------------------- */

if ( ! function_exists( 'fukasawa_load_javascript_files' ) ) :
	function fukasawa_load_javascript_files() {

		wp_register_script( 'fukasawa_flexslider', get_template_directory_uri() . '/assets/js/flexslider.js', '2.7.0', true );

		wp_enqueue_script( 'fukasawa_global', get_template_directory_uri() . '/assets/js/global.js', array( 'jquery', 'masonry', 'imagesloaded', 'fukasawa_flexslider' ), fukasawa_get_version(), true );

		if ( is_singular() ) wp_enqueue_script( 'comment-reply' );

	}
	add_action( 'wp_enqueue_scripts', 'fukasawa_load_javascript_files' );
endif;


/* ---------------------------------------------------------------------------------------------
   ENQUEUE STYLES
   --------------------------------------------------------------------------------------------- */

if ( ! function_exists( 'fukasawa_load_style' ) ) :
	function fukasawa_load_style() {

		if ( ! is_admin() ) {

			$dependencies = array();

			wp_register_style( 'fukasawa_googleFonts', get_theme_file_uri( '/assets/css/fonts.css' ) );
			$dependencies[] = 'fukasawa_googleFonts';

			wp_register_style( 'fukasawa_genericons', get_theme_file_uri( '/assets/fonts/genericons/genericons.css' ) );
			$dependencies[] = 'fukasawa_genericons';

			wp_enqueue_style( 'fukasawa_style', get_stylesheet_uri(), $dependencies, fukasawa_get_version() );
		}

	}
	add_action( 'wp_print_styles', 'fukasawa_load_style' );
endif;


/* ---------------------------------------------------------------------------------------------
   ADD EDITOR STYLES
   --------------------------------------------------------------------------------------------- */

if ( ! function_exists( 'fukasawa_add_editor_styles' ) ) :
	function fukasawa_add_editor_styles() {

		add_editor_style( array( 'assets/css/fukasawa-block-editor-styles.css', 'assets/css/fonts.css' ) );
		
	}
	add_action( 'init', 'fukasawa_add_editor_styles' );
endif;


/* ---------------------------------------------------------------------------------------------
   REGISTER WIDGET AREAS
   --------------------------------------------------------------------------------------------- */

if ( ! function_exists( 'fukasawa_sidebar_registration' ) ) :
	function fukasawa_sidebar_registration() {

		register_sidebar( array(
			'name' 			=> __( 'Sidebar', 'fukasawa' ),
			'id' 			=> 'sidebar',
			'description' 	=> __( 'Widgets in this area will be shown in the sidebar.', 'fukasawa' ),
			'before_title' 	=> '<h3 class="widget-title">',
			'after_title' 	=> '</h3>',
			'before_widget' => '<div id="%1$s" class="widget %2$s"><div class="widget-content clear">',
			'after_widget' 	=> '</div></div>'
		) );

	}
	add_action( 'widgets_init', 'fukasawa_sidebar_registration' ); 
endif;


/* ---------------------------------------------------------------------------------------------
   ADD THEME WIDGETS
   --------------------------------------------------------------------------------------------- */

require_once( get_template_directory() . '/widgets/flickr-widget.php' );
require_once( get_template_directory() . '/widgets/recent-comments.php' );
require_once( get_template_directory() . '/widgets/recent-posts.php' );


/* ---------------------------------------------------------------------------------------------
   DELIST WIDGETS REPLACED BY THEME ONES
   --------------------------------------------------------------------------------------------- */


if ( ! function_exists( 'fukasawa_unregister_default_widgets' ) ) {

	function fukasawa_unregister_default_widgets() {
		unregister_widget( 'WP_Widget_Recent_Comments' );
		unregister_widget( 'WP_Widget_Recent_Posts' );
	}
	add_action( 'widgets_init', 'fukasawa_unregister_default_widgets', 11 );

}


/* ---------------------------------------------------------------------------------------------
   CHECK FOR JAVASCRIPT SUPPORT
   --------------------------------------------------------------------------------------------- */


if ( ! function_exists( 'fukasawa_html_js_class' ) ) {

	function fukasawa_html_js_class () {
		echo '<script>document.documentElement.className = document.documentElement.className.replace("no-js","js");</script>'. "\n";
	}
	add_action( 'wp_head', 'fukasawa_html_js_class', 1 );

}


/* ---------------------------------------------------------------------------------------------
   ADD CLASSES TO PAGINATION
   --------------------------------------------------------------------------------------------- */


if ( ! function_exists( 'fukasawa_posts_link_attributes_1' ) ) {

	function fukasawa_posts_link_attributes_1() {
		return 'class="archive-nav-older fleft"';
	}
	add_filter( 'next_posts_link_attributes', 'fukasawa_posts_link_attributes_1' );

}


if ( ! function_exists( 'fukasawa_posts_link_attributes_2' ) ) {

	function fukasawa_posts_link_attributes_2() {
		return 'class="archive-nav-newer fright"';
	}
	add_filter( 'previous_posts_link_attributes', 'fukasawa_posts_link_attributes_2' );

}


/* ---------------------------------------------------------------------------------------------
   CHANGE LENGTH OF EXCERPTS
   --------------------------------------------------------------------------------------------- */


if ( ! function_exists( 'fukasawa_custom_excerpt_length' ) ) {

	function fukasawa_custom_excerpt_length( $length ) {
		return 28;
	}
	add_filter( 'excerpt_length', 'fukasawa_custom_excerpt_length', 999 );

}


/* ---------------------------------------------------------------------------------------------
   CHANGE EXCERPT SUFFIX
   --------------------------------------------------------------------------------------------- */


if ( ! function_exists( 'fukasawa_new_excerpt_more' ) ) {

	function fukasawa_new_excerpt_more( $more ) {
		return '...';
	}
	add_filter( 'excerpt_more', 'fukasawa_new_excerpt_more' );

}


/* ---------------------------------------------------------------------------------------------
   BODY CLASSES
   --------------------------------------------------------------------------------------------- */


if ( ! function_exists( 'fukasawa_body_classes' ) ) {
 
	function fukasawa_body_classes( $classes ){
	
		// Check for mobile visitor
		$classes[] = wp_is_mobile() ? 'wp-is-mobile' : 'wp-is-not-mobile';
		
		return $classes;
	}
	add_filter( 'body_class', 'fukasawa_body_classes' );

}


/* ---------------------------------------------------------------------------------------------
   GET COMMENT EXCERPT
   --------------------------------------------------------------------------------------------- */


if ( ! function_exists( 'fukasawa_get_comment_excerpt' ) ) {
	
	function fukasawa_get_comment_excerpt( $comment_ID = 0, $num_words = 20 ) {
		$comment = get_comment( $comment_ID );
		$comment_text = strip_tags( $comment->comment_content );
		$blah = explode( ' ', $comment_text );
		if ( count( $blah ) > $num_words ) {
			$k = $num_words;
			$use_dotdotdot = 1;
		} else {
			$k = count( $blah );
			$use_dotdotdot = 0;
		}
		$excerpt = '';
		for ( $i = 0; $i < $k; $i++ ) {
			$excerpt .= $blah[$i] . ' ';
		}
		$excerpt .= ( $use_dotdotdot ) ? '...' : '';
		return apply_filters( 'get_comment_excerpt', $excerpt );
	}

}


/* ---------------------------------------------------------------------------------------------
   ADD ADMIN CSS
   --------------------------------------------------------------------------------------------- */


if ( ! function_exists( 'fukasawa_admin_css' ) ) {

	function fukasawa_admin_css() { 
	echo '
		<style type="text/css">

			#postimagediv #set-post-thumbnail img {
				max-width: 100%;
				height: auto;
			}

		</style>';
	}
	add_action( 'admin_head', 'fukasawa_admin_css' );

}


/* ---------------------------------------------------------------------------------------------
   FLEXSLIDER FUNCTION
   --------------------------------------------------------------------------------------------- */


if ( ! function_exists( 'fukasawa_flexslider' ) ) {

	function fukasawa_flexslider( $size = 'thumbnail' ) {

		$attachment_parent = is_page() ? $post->ID : get_the_ID();

		$image_args = array(
			'numberposts'    => -1, // show all
			'orderby'        => 'menu_order',
			'order'          => 'ASC',
			'post_parent'    => $attachment_parent,
			'post_type'      => 'attachment',
			'post_status'    => null,
			'post_mime_type' => 'image',
		);

		$images = get_posts( $image_args );

		if ( $images ) : ?>
		
			<div class="flexslider">
			
				<ul class="slides">
		
					<?php foreach( $images as $image ) :

						$attimg = wp_get_attachment_image( $image->ID, $size ); ?>
						
						<li>
							<?php echo $attimg; ?>
						</li>
						
					<?php endforeach; ?>
			
				</ul>
				
			</div>
			
			<?php
			
		endif;
	}

}


/* ---------------------------------------------------------------------------------------------
   COMMENT FUNCTION
   --------------------------------------------------------------------------------------------- */


if ( ! function_exists( 'fukasawa_comment' ) ) {
	function fukasawa_comment( $comment, $args, $depth ) {
		switch ( $comment->comment_type ) :
			case 'pingback' :
			case 'trackback' :
		?>
		
		<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
		
			<?php __( 'Pingback:', 'fukasawa' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( 'Edit', 'fukasawa' ), '<span class="edit-link">', '</span>' ); ?>
			
		</li>
		<?php
				break;
			default :
			global $post;
		?>
		<li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
		
			<div id="comment-<?php comment_ID(); ?>" class="comment">
				
				<div class="comment-header">
				
					<?php echo get_avatar( $comment, 160 ); ?>
					
					<div class="comment-header-inner">
												
						<h4><?php echo get_comment_author_link(); ?></h4>
						
						<div class="comment-meta">
							<a class="comment-date-link" href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>"><?php echo get_comment_date( get_option( 'date_format' ) ); ?></a>
						</div><!-- .comment-meta -->
					
					</div><!-- .comment-header-inner -->
				
				</div>

				<div class="comment-content post-content">
				
					<?php comment_text(); ?>
					
				</div><!-- .comment-content -->
				
				<div class="comment-actions clear">
				
					<?php if ( 0 == $comment->comment_approved ) : ?>
					
						<p class="comment-awaiting-moderation fright"><?php _e( 'Your comment is awaiting moderation.', 'fukasawa' ); ?></p>
						
					<?php endif; ?>
					
					<div class="fleft">
				
						<?php 
						comment_reply_link( array( 
							'reply_text' 	=> __( 'Reply', 'fukasawa' ),
							'depth'			=> $depth, 
							'max_depth' 	=> $args['max_depth'],
							'before'		=> '',
							'after'			=> ''
							) 
						); 
						edit_comment_link( __( 'Edit', 'fukasawa' ), '<span class="sep">/</span>', '' ); 
						?>
					
					</div>
				
				</div><!-- .comment-actions -->
											
			</div><!-- .comment-## -->
					
		<?php
			break;
		endswitch;
	}
}


/* ---------------------------------------------------------------------------------------------
   SPECIFY BLOCK EDITOR SUPPORT
------------------------------------------------------------------------------------------------ */


if ( ! function_exists( 'fukasawa_add_gutenberg_features' ) ) :
	function fukasawa_add_gutenberg_features() {

		/* Block Editor Features ------------- */

		add_theme_support( 'align-wide' );

		/* Block Editor Palette -------------- */

		$accent_color = get_theme_mod( 'accent_color', '#019EBD' );

		add_theme_support( 'editor-color-palette', array(
			array(
				'name' 	=> _x( 'Accent', 'Name of the accent color in the Gutenberg palette', 'fukasawa' ),
				'slug' 	=> 'accent',
				'color' => $accent_color,
			),
			array(
				'name' 	=> _x( 'Black', 'Name of the black color in the Gutenberg palette', 'fukasawa' ),
				'slug' 	=> 'black',
				'color' => '#333',
			),
			array(
				'name' 	=> _x( 'Dark Gray', 'Name of the dark gray color in the Gutenberg palette', 'fukasawa' ),
				'slug' 	=> 'dark-gray',
				'color' => '#444',
			),
			array(
				'name' 	=> _x( 'Medium Gray', 'Name of the medium gray color in the Gutenberg palette', 'fukasawa' ),
				'slug' 	=> 'medium-gray',
				'color' => '#666',
			),
			array(
				'name' 	=> _x( 'Light Gray', 'Name of the light gray color in the Gutenberg palette', 'fukasawa' ),
				'slug' 	=> 'light-gray',
				'color' => '#767676',
			),
			array(
				'name' 	=> _x( 'White', 'Name of the white color in the Gutenberg palette', 'fukasawa' ),
				'slug' 	=> 'white',
				'color' => '#fff',
			),
		) );

		/* Block Editor Font Sizes ----------- */

		add_theme_support( 'editor-font-sizes', array(
			array(
				'name' 		=> _x( 'Small', 'Name of the small font size in Gutenberg', 'fukasawa' ),
				'shortName' => _x( 'S', 'Short name of the small font size in the Gutenberg editor.', 'fukasawa' ),
				'size' 		=> 16,
				'slug' 		=> 'small',
			),
			array(
				'name' 		=> _x( 'Regular', 'Name of the regular font size in Gutenberg', 'fukasawa' ),
				'shortName' => _x( 'M', 'Short name of the regular font size in the Gutenberg editor.', 'fukasawa' ),
				'size' 		=> 18,
				'slug' 		=> 'normal',
			),
			array(
				'name' 		=> _x( 'Large', 'Name of the large font size in Gutenberg', 'fukasawa' ),
				'shortName' => _x( 'L', 'Short name of the large font size in the Gutenberg editor.', 'fukasawa' ),
				'size' 		=> 24,
				'slug' 		=> 'large',
			),
			array(
				'name' 		=> _x( 'Larger', 'Name of the larger font size in Gutenberg', 'fukasawa' ),
				'shortName' => _x( 'XL', 'Short name of the larger font size in the Gutenberg editor.', 'fukasawa' ),
				'size' 		=> 27,
				'slug' 		=> 'larger',
			),
		) );

	}
	add_action( 'after_setup_theme', 'fukasawa_add_gutenberg_features' );
endif;


/* ---------------------------------------------------------------------------------------------
   BLOCK EDITOR STYLES
   --------------------------------------------------------------------------------------------- */


if ( ! function_exists( 'fukasawa_block_editor_styles' ) ) :
	function fukasawa_block_editor_styles() {

		$dependencies = array();

		wp_register_style( 'fukasawa-block-editor-styles-font', get_theme_file_uri( '/assets/css/fonts.css' ) );
		$dependencies[] = 'fukasawa-block-editor-styles-font';

		wp_register_style( 'fukasawa-block-editor-styles-genericons', get_theme_file_uri( '/assets/fonts/genericons/genericons.css' ) );
		$dependencies[] = 'fukasawa-block-editor-styles-genericons';

		// Enqueue the editor styles
		wp_enqueue_style( 'fukasawa-block-editor-styles', get_theme_file_uri( '/assets/css/fukasawa-block-editor-styles.css' ), $dependencies, fukasawa_get_version(), 'all' );

	}
	add_action( 'enqueue_block_editor_assets', 'fukasawa_block_editor_styles', 1 );
endif;