File: /var/www/vhosts/enlugo.es/httpdocs/wp-content/themes/rubine/functions.php
<?php
/*==================================== THEME SETUP ====================================*/
// Setup Function: Registers support for various WordPress features
add_action( 'after_setup_theme', 'rubine_setup' );
function rubine_setup() {
	// Set Content Width
	global $content_width;
	if ( ! isset( $content_width ) )
		$content_width = 675;
		
	// init Localization
	load_theme_textdomain('rubine', get_template_directory() . '/languages' );
	// Add Theme Support
	add_theme_support('post-thumbnails');
	add_theme_support('automatic-feed-links');
	add_editor_style();
	// Add Custom Background
	add_theme_support('custom-background', array('default-color' => 'f0f0f0'));
	// Add Custom Header
	add_theme_support('custom-header', array(
		'header-text' => false,
		'width'	=> 1320,
		'height' => 240,
		'flex-height' => true));
		
	// Add theme support for Jetpack Featured Content
	add_theme_support( 'featured-content', array(
		'featured_content_filter' => 'rubine_get_featured_content',
		'max_posts'  => 8
		)
	);
	// Register Navigation Menus
	register_nav_menus( array(
		'primary'   => __('Main Navigation', 'rubine'),
		'secondary' => __('Top Navigation', 'rubine'),
		'social' => __('Social Icons', 'rubine'),
		) 
	);
}
// Load default style.css and Javascripts
add_action('wp_enqueue_scripts', 'rubine_enqueue_scripts');
function rubine_enqueue_scripts() {
	// Register and Enqueue Stylesheet
	wp_enqueue_style('rubine-stylesheet', get_stylesheet_uri());
	
	// Register Genericons
	wp_enqueue_style('rubine-genericons', get_template_directory_uri() . '/css/genericons/genericons.css');
	// Register and enqueue navigation.js
	wp_enqueue_script('rubine-jquery-navigation', get_template_directory_uri() .'/js/navigation.js', array('jquery'));
	
	// Passing Parameters to Navigation.js Javascript
	wp_localize_script( 'rubine-jquery-navigation', 'rubine_navigation_params', array('menuTitle' => __('Menu', 'rubine')) );
}
// Load comment-reply.js if comment form is loaded and threaded comments activated
add_action( 'comment_form_before', 'rubine_enqueue_comment_reply' );
function rubine_enqueue_comment_reply() {
	if( get_option( 'thread_comments' ) ) {
		wp_enqueue_script( 'comment-reply' );
	}
}
// Add custom Image Sizes
add_action( 'after_setup_theme', 'rubine_add_image_sizes' );
function rubine_add_image_sizes() {
	// Add Custom Header Image Size
	add_image_size( 'featured-header-image', 1320, 240, true);
	// Add Featured Image Size
	add_image_size( 'post-thumbnail', 375, 210, true);
	// Add Featured Image Size
	add_image_size( 'featured-content', 460, 220, true);
}
// Register Sidebars
add_action( 'widgets_init', 'rubine_register_sidebars' );
function rubine_register_sidebars() {
	// Register Sidebars
	register_sidebar( array(
		'name' => __( 'Sidebar', 'rubine' ),
		'id' => 'sidebar',
		'description' => __( 'Appears on posts and pages except front page and fullwidth template.', 'rubine' ),
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
		'after_widget' => '</aside>',
		'before_title' => '<h3 class="widgettitle"><span>',
		'after_title' => '</span></h3>',
	));
	//Register Footer Widgets
	register_sidebar( array(
		'name' => __( 'Footer Left', 'rubine' ),
		'id' => 'footer-left',
		'description' => __( 'Appears on footer on the left hand side.', 'rubine' ),
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
		'after_widget' => '</aside>',
		'before_title' => '<h3 class="widgettitle">',
		'after_title' => '</h3>',
	));
	register_sidebar( array(
		'name' => __( 'Footer Center Left', 'rubine' ),
		'id' => 'footer-center-left',
		'description' => __( 'Appears on footer on center left position.', 'rubine' ),
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
		'after_widget' => '</aside>',
		'before_title' => '<h3 class="widgettitle">',
		'after_title' => '</h3>',
	));
	register_sidebar( array(
		'name' => __( 'Footer Center Right', 'rubine' ),
		'id' => 'footer-center-right',
		'description' => __( 'Appears on footer on center right position.', 'rubine' ),
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
		'after_widget' => '</aside>',
		'before_title' => '<h3 class="widgettitle">',
		'after_title' => '</h3>',
	));
	register_sidebar( array(
		'name' => __( 'Footer Right', 'rubine' ),
		'id' => 'footer-right',
		'description' => __( 'Appears on footer on the right hand side.', 'rubine' ),
		'before_widget' => '<aside id="%1$s" class="widget %2$s">',
		'after_widget' => '</aside>',
		'before_title' => '<h3 class="widgettitle">',
		'after_title' => '</h3>',
	));
}
/*==================================== THEME FUNCTIONS ====================================*/
// Creates a better title element text for output in the head section
add_filter( 'wp_title', 'rubine_wp_title', 10, 2 );
function rubine_wp_title( $title, $sep = '' ) {
	global $paged, $page;
	if ( is_feed() )
		return $title;
	// Add the site name.
	$title .= get_bloginfo( 'name' );
	// Add the site description for the home/front page.
	$site_description = get_bloginfo( 'description', 'display' );
	if ( $site_description && ( is_home() || is_front_page() ) )
		$title = "$title $sep $site_description";
	// Add a page number if necessary.
	if ( $paged >= 2 || $page >= 2 )
		$title = "$title $sep " . sprintf( __( 'Page %s', 'rubine' ), max( $paged, $page ) );
	return $title;
}
// Add Default Menu Fallback Function
function rubine_default_menu() {
	echo '<ul id="mainnav-menu" class="menu">'. wp_list_pages('title_li=&echo=0') .'</ul>';
}
// Get Featured Posts
function rubine_get_featured_content() {
	return apply_filters( 'rubine_get_featured_content', false );
}
// Check if featured posts exists
function rubine_has_featured_content() {
	return ! is_paged() && (bool) rubine_get_featured_content();
}
// Display Credit Link Function
function rubine_credit_link() {
	
	// Get Theme Options from Database
	$theme_options = rubine_theme_options();
	
	if ( isset($theme_options['credit_link']) and $theme_options['credit_link'] == true ) :
	
		printf(__( 'Powered by %1$s and %2$s.', 'rubine' ), 
				sprintf( '<a href="http://wordpress.org" title="WordPress">%s</a>', __( 'WordPress', 'rubine' ) ),
				sprintf( '<a href="http://themezee.com/themes/rubine/" title="Rubine WordPress Theme">%s</a>', __( 'Rubine', 'rubine' ) )
			);
		
	endif;
}
// Change Excerpt Length
add_filter('excerpt_length', 'rubine_excerpt_length');
function rubine_excerpt_length($length) {
    return 80;
}
// Slideshow Excerpt Length
function rubine_featured_content_excerpt_length($length) {
    return 15;
}
// Change Excerpt More
add_filter('excerpt_more', 'rubine_excerpt_more');
function rubine_excerpt_more($more) {
	// Get Theme Options from Database
	$theme_options = rubine_theme_options();
	// Return Excerpt Text
	if ( isset($theme_options['excerpt_text']) and $theme_options['excerpt_text'] == true) :
		return ' [...]';
	else :
		return '';
	endif;
}
// Custom Template for comments and pingbacks.
if ( ! function_exists( 'rubine_list_comments' ) ) :
	
	function rubine_list_comments($comment, $args, $depth) {
		$GLOBALS['comment'] = $comment;
		if( $comment->comment_type == 'pingback' or $comment->comment_type == 'trackback' ) : ?>
			<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
				<div class="comment-body">
					<?php _e( 'Pingback:', 'rubine' ); ?> <?php comment_author_link(); ?>
					<?php edit_comment_link( __( '(Edit)', 'rubine' ), '<span class="edit-link">', '</span>' ); ?>
				</div>
		<?php else : ?>
			<li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
				<div class="comment-body clearfix">
				
					<div class="comment-meta clearfix">
						<div class="comment-author vcard">
							<?php echo get_avatar( $comment, 75 ); ?>
							<?php printf('<span class="fn">%s</span>', get_comment_author_link()) ?>
						</div>
						
						<div class="commentmetadata">
							<a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>"><?php echo get_comment_date(); ?></a>
							<p><?php echo get_comment_time(); ?></p>
							<?php edit_comment_link(__('(Edit)', 'rubine'),'  ','') ?>
						</div>
					
					</div>
				
					<div class="comment-content">
						<div class="comment-entry clearfix">
							<?php comment_text(); ?>
							
							<?php if ($comment->comment_approved == '0') : ?>
								<p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.', 'rubine' ); ?></p>
							<?php endif; ?>
							
							<?php comment_reply_link(array_merge( $args, array('depth' => $depth, 'max_depth' => $args['max_depth']))) ?>
						</div>
					</div>
				</div>
	<?php
		endif;
	}
	
endif;
/*==================================== INCLUDE FILES ====================================*/
// include Theme Info page
require( get_template_directory() . '/inc/theme-info.php' );
// include Theme Customizer Options
require( get_template_directory() . '/inc/customizer/customizer.php' );
require( get_template_directory() . '/inc/customizer/default-options.php' );
// include Customization Files
require( get_template_directory() . '/inc/customizer/frontend/custom-colors.php' );
require( get_template_directory() . '/inc/customizer/frontend/custom-fonts.php' );
require( get_template_directory() . '/inc/customizer/frontend/custom-layout.php' );
// include Template Functions
require( get_template_directory() . '/inc/template-tags.php' );
// Include Featured Content class in case it does not exist yet (e.g. user has not Jetpack installed)
if ( ! class_exists( 'Featured_Content' ) && 'plugins.php' !== $GLOBALS['pagenow'] ) {
	require get_template_directory() . '/inc/featured-content.php';
}
?>