<?php
/**
* Define custom or extra function which needed for VMag
*
* @package VMag
*/
$vmag_theme = wp_get_theme();
$vmag_version = $vmag_theme->get( 'Version' );
add_action( 'admin_enqueue_scripts', 'vmag_admin_scripts' );
function vmag_admin_scripts() {
global $vmag_version;
if ( function_exists( 'wp_enqueue_media' ) ) {
wp_enqueue_media();
}
wp_register_script( 'of-media-uploader', get_template_directory_uri() . '/inc/js/media-uploader.js', array('jquery'), 1.70);
wp_enqueue_script( 'of-media-uploader' );
wp_localize_script( 'of-media-uploader', 'vmag_l10n', array(
'upload' => esc_html__( 'Upload', 'vmag' ),
'remove' => esc_html__( 'Remove', 'vmag' )
));
wp_enqueue_script( 'vmag-admin-script', get_template_directory_uri() .'/inc/js/vmag-admin-scripts.js', array( 'jquery' ), $vmag_version, true );
wp_enqueue_style( 'vmag-admin-style', get_template_directory_uri() . '/inc/css/admin-style.css', $vmag_version );
}
/**
* Enqueue scripts and styles.
*/
function vmag_scripts() {
global $vmag_version;
wp_enqueue_script( 'lightslider', get_template_directory_uri() .'/js/lightslider.js', array( 'jquery' ), '1.1.5', true );
wp_enqueue_script( 'wow', get_template_directory_uri() .'/js/wow.js', array( 'jquery' ), '1.1.2', true );
wp_register_script( 'vmag-custom-script', get_template_directory_uri() .'/js/vmag-custom.js', array( 'jquery' ), $vmag_version, true );
/**
* wp localize
*/
$animation_option = get_theme_mod( 'vmag_wow_animation_option', 'enable' );
wp_localize_script( 'vmag-custom-script', 'WowOption', array(
'mode'=> $animation_option
) );
wp_enqueue_script( 'vmag-custom-script' );
$vmag_font_args = array(
'family' => 'Open+Sans:400,600,700,400italic,300|Roboto:400,500,700,300,400italic',
);
wp_enqueue_style( 'vmag-google-fonts', add_query_arg( $vmag_font_args, "//fonts.googleapis.com/css" ) );
wp_enqueue_style( 'vmag-style', get_stylesheet_uri(), array(), $vmag_version );
wp_enqueue_style( 'lightslider-style', get_template_directory_uri() .'/css/lightslider.css', array( 'vmag-style' ), '1.1.5' );
wp_enqueue_style( 'font-awesome', get_template_directory_uri() .'/css/font-awesome.css', array('vmag-style'), '4.5.0' );
wp_enqueue_style( 'animate-css', get_template_directory_uri() .'/css/animate.css', array('vmag-style'), '3.5.1' );
wp_enqueue_style( 'vmag-responsive-style', get_template_directory_uri(). '/css/responsive.css', array(), $vmag_version );
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
add_action( 'wp_enqueue_scripts', 'vmag_scripts' );
if ( ! function_exists( 'vmag_the_custom_logo' ) ) :
/**
* Displays the optional custom logo.
*
* Does nothing if the custom logo is not available.
*/
function vmag_the_custom_logo() {
if ( function_exists( 'the_custom_logo' ) ) {
the_custom_logo();
}
}
endif;
if( ! function_exists( 'vmag_news_ticker_hook' ) ):
/**
* Display news ticker
*/
function vmag_news_ticker_hook() {
$vmag_ticker_option = get_theme_mod( 'vmag_ticker_option', 'show' );
$vmag_ticker_caption = get_theme_mod( 'vmag_ticker_caption', esc_html__( 'Recent News', 'vmag' ) );
if( $vmag_ticker_option != 'hide' ) {
?>
<div class="vmag-ticker-caption">
<span><?php echo esc_html( $vmag_ticker_caption ); ?></span>
</div>
<?php
$vmag_ticker_args = array(
'post_type' => 'post',
'posts_per_page' => 5,
'ignore_sticky_posts' => 1
);
$vmag_ticker_query = new WP_Query( $vmag_ticker_args );
if( $vmag_ticker_query->have_posts() ) {
echo '<ul id="vmag-news-ticker" class="cS-hidden">';
while( $vmag_ticker_query->have_posts() ) {
$vmag_ticker_query->the_post();
?>
<li>
<div class="single-news"><a href="<?php the_permalink(); ?>"><?php the_title();?></a></div>
</li>
<?php
}
echo '</li>';
}
}
}
endif;
add_action( 'vmag_news_ticker', 'vmag_news_ticker_hook' );
/**
* Define categories lists in array
*/
$vmag_categories = get_categories( array( 'hide_empty' => 0 ) );
foreach ( $vmag_categories as $vmag_category ) {
$vmag_cat_array[$vmag_category->term_id] = $vmag_category->cat_name;
}
//categories in dropdown
$vmag_cat_dropdown['0'] = esc_html__( 'Select Category', 'vmag' );
foreach ( $vmag_categories as $vmag_category ) {
$vmag_cat_dropdown[$vmag_category->term_id] = $vmag_category->cat_name;
}
/**
* radio option for types
*/
$vmag_posts_type = array(
'latest_posts' => esc_html__( 'From Latest Posts', 'vmag' ),
'category_posts' => esc_html__( 'From Selected Category', 'vmag' )
);
/**
* Select options for column
*/
$vmag_column_choice = array(
'' => esc_html__( 'Select No.of Column', 'vmag' ),
'1' => esc_html__( '1 Column', 'vmag' ),
'2' => esc_html__( '2 Columns', 'vmag' ),
'3' => esc_html__( '3 Columns', 'vmag' ),
'4' => esc_html__( '4 Columns', 'vmag' )
);
/**
* Function about custom query arguments
*
* @param string $vmag_query_type (required options "latest_posts" or " ")
* @param int $vmag_post_count
* @param int $vmag_cat_id
* @return array $vmag_args
*/
if( ! function_exists( 'vmag_query_args' ) ) :
function vmag_query_args( $vmag_query_type, $vmag_post_count, $vmag_cat_id = null ) {
if( $vmag_query_type == 'category_posts' && !empty( $vmag_query_type ) ) {
$vmag_args = array(
'post_type' => 'post',
'category__in' => $vmag_cat_id,
'posts_per_page'=> $vmag_post_count
);
} else {
$vmag_args = array(
'post_type' => 'post',
'posts_per_page'=> $vmag_post_count,
'ignore_sticky_posts' => 1
);
}
return $vmag_args;
}
endif;
/**
* Function to display current date
*/
add_action( 'vmag_header_date', 'vmag_header_date_hook' );
if( ! function_exists( 'vmag_header_date_hook' ) ):
function vmag_header_date_hook() {
$vmag_date_option = get_theme_mod( 'vmag_header_date_option', 'show' );
if( $vmag_date_option != 'hide' ) {
?>
<div class="vmag-current-date"><?php echo esc_html( date_i18n( 'l, F j, Y' ) ); ?></div>
<?php
}
}
endif;
/**
* Changed excerpt more
*/
add_filter( 'excerpt_more', 'vmag_custom_excerpt_more' );
if( ! function_exists( 'vmag_custom_excerpt_more' ) ):
function vmag_custom_excerpt_more( $more ) {
return '...';
}
endif;
/**
* Get media attachment id from url
*/
if ( ! function_exists( 'vmag_get_attachment_id_from_url' ) ):
function vmag_get_attachment_id_from_url( $attachment_url ) {
global $wpdb;
$attachment_id = false;
// If there is no url, return.
if ( '' == $attachment_url )
return;
// Get the upload directory paths
$upload_dir_paths = wp_upload_dir();
// Make sure the upload path base directory exists in the attachment URL, to verify that we're working with a media library image
if ( false !== strpos( $attachment_url, $upload_dir_paths['baseurl'] ) ) {
// If this is the URL of an auto-generated thumbnail, get the URL of the original image
$attachment_url = preg_replace( '/-\d+x\d+(?=\.(jpg|jpeg|png|gif)$)/i', '', $attachment_url );
// Remove the upload path base directory from the attachment URL
$attachment_url = str_replace( $upload_dir_paths['baseurl'] . '/', '', $attachment_url );
// Finally, run a custom database query to get the attachment ID from the modified attachment URL
$attachment_id = $wpdb->get_var( $wpdb->prepare( "SELECT wposts.ID FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = '_wp_attached_file' AND wpostmeta.meta_value = '%s' AND wposts.post_type = 'attachment'", $attachment_url ) );
}
return $attachment_id;
}
endif;
/**
* Widgets count in widget area
*/
function vmag_widgets_count( $sidebar_id ) {
global $_wp_sidebars_widgets;
if ( empty( $_wp_sidebars_widgets ) ) {
$_wp_sidebars_widgets = get_option( 'sidebars_widgets', array() );
}
$sidebars_widgets_count = $_wp_sidebars_widgets;
if ( isset( $sidebars_widgets_count[ $sidebar_id ] ) ) {
$widget_count = count( $sidebars_widgets_count[ $sidebar_id ] );
$widget_classes = 'widget-column-' . count( $sidebars_widgets_count[ $sidebar_id ] );
return $widget_classes;
}
}
/**
* Function define about page/post/archive sidebar
*/
if( ! function_exists( 'vmag_get_sidebar' ) ):
function vmag_get_sidebar() {
global $post;
if( $post ) {
$sidebar_meta_option = get_post_meta( $post->ID, 'vmag_page_sidebar', true );
}
if( is_home() ) {
$set_id = get_option( 'page_for_posts' );
$sidebar_meta_option = get_post_meta( $set_id, 'vmag_page_sidebar', true );
}
if( empty( $sidebar_meta_option ) || is_archive() || is_search() ) {
$sidebar_meta_option = 'default_sidebar';
}
$vmag_archive_sidebar = get_theme_mod( 'vmag_archive_sidebar', 'right_sidebar' );
$vmag_post_default_sidebar = get_theme_mod( 'vmag_default_post_sidebar', 'right_sidebar' );
$vmag_page_default_sidebar = get_theme_mod( 'vmag_default_page_sidebar', 'right_sidebar' );
if( $sidebar_meta_option == 'default_sidebar' ) {
if( is_single() ) {
if( $vmag_post_default_sidebar == 'right_sidebar' ) {
get_sidebar();
} elseif( $vmag_post_default_sidebar == 'left_sidebar' ) {
get_sidebar( 'left' );
}
} elseif( is_page() ) {
if( $vmag_page_default_sidebar == 'right_sidebar' ) {
get_sidebar();
} elseif( $vmag_page_default_sidebar == 'left_sidebar' ) {
get_sidebar( 'left' );
}
} elseif( $vmag_archive_sidebar == 'right_sidebar' ) {
get_sidebar();
} elseif( $vmag_archive_sidebar == 'left_sidebar' ) {
get_sidebar( 'left' );
}
} elseif( $sidebar_meta_option == 'right_sidebar' ) {
get_sidebar();
} elseif( $sidebar_meta_option == 'left_sidebar' ) {
get_sidebar( 'left' );
}
}
endif;
/**
* Related posts
*/
add_action( 'vmag_related_posts', 'vmag_related_posts_hook' );
if( !function_exists( 'vmag_related_posts_hook' ) ):
function vmag_related_posts_hook() {
$vmag_related_posts_option = get_theme_mod( 'vmag_related_posts_option', 'show' );
$vmag_related_post_title = get_theme_mod( 'vmag_related_posts_title', esc_html__( 'Related Articles', 'vmag' ) );
if( $vmag_related_posts_option != 'hide' ) {
?>
<div class="vmag-related-wrapper">
<h4 class="related-title"><?php echo esc_attr( $vmag_related_post_title ); ?></h4>
<?php
wp_reset_postdata();
global $post;
if( empty( $post ) ) {
$post_id = '';
} else {
$post_id = $post->ID;
}
$vmag_related_posts_type = get_theme_mod( 'vmag_related_post_type', 'related_cat' );
$vmag_perpage_value = 3;
$vmag_perpage_value = apply_filters( 'related_posts_count', $vmag_perpage_value );
// Define related post arguments
$related_args = array(
'no_found_rows' => true,
'update_post_meta_cache' => false,
'update_post_term_cache' => false,
'ignore_sticky_posts' => 1,
'orderby' => 'rand',
'post__not_in' => array( $post_id ),
'posts_per_page' => $vmag_perpage_value
);
if ( $vmag_related_posts_type == 'related_tag' ) {
$tags = wp_get_post_tags( $post_id );
if ( $tags ) {
$tag_ids = array();
foreach( $tags as $individual_tag ) $tag_ids[] = $individual_tag->term_id;
$related_args['tag__in'] = $tag_ids;
}
} else {
$categories = get_the_category( $post_id );
if ( $categories ) {
$category_ids = array();
foreach( $categories as $individual_category ) {
$category_ids[] = $individual_category->term_id;
}
$related_args['category__in'] = $category_ids;
}
}
$related_query = new WP_Query( $related_args );
if( $related_query->have_posts() ) {
echo '<div class="related-posts-wrapper clearfix">';
while( $related_query->have_posts() ) {
$related_query->the_post();
$image_id = get_post_thumbnail_id();
$image_path = wp_get_attachment_image_src( $image_id, 'vmag-rectangle-thumb', true );
$image_alt = get_post_meta( $image_id, '_wp_attachment_image_alt', true );
?>
<div class="single-post">
<div class="post-thumb">
<?php if( has_post_thumbnail() ) { ?>
<a href="<?php the_permalink(); ?>">
<img src="<?php echo esc_url( $image_path[0] ); ?>" alt="<?php echo esc_attr( $image_alt ); ?>" title="<?php the_title(); ?>" />
</a>
<?php } ?>
</div>
<h3 class="small-font"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
</div><!--. single-post -->
<?php
}
echo '</div>';
}
wp_reset_query();
?>
</div><!-- .vmag-related-wrapper -->
<?php
}
}
endif;
/**
* Function to get author info
*/
add_action( 'vmag_author_info', 'vmag_author_info_hook' );
if( ! function_exists( 'vmag_author_info_hook' ) ):
function vmag_author_info_hook() {
global $post;
$author_id = $post->post_author;
$author_avatar = get_avatar( $author_id, '132' );
$author_nickname = get_the_author_meta( 'display_name' );
$vmag_author_option = get_theme_mod( 'vmag_author_info_option', 'show' );
if( $vmag_author_option != 'hide' ) {
?>
<div class="vmag-author-metabox clearfix">
<div class="author-avatar">
<a class="author-image" href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) );?>"><?php echo $author_avatar; ?></a>
</div><!-- .author-avatar -->
<div class="author-desc-wrapper">
<a class="author-title" href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) );?>"><?php echo esc_html( $author_nickname ); ?></a>
<div class="author-description"><?php echo get_the_author_meta('description');?></div>
<a href="<?php echo esc_url( get_the_author_meta( 'user_url' ) );?>" target="_blank"><?php echo esc_url( get_the_author_meta( 'user_url' ) );?></a>
</div><!-- .author-desc-wrapper-->
</div><!--vmag-author-metabox-->
<?php
}
}
endif;
/**
* Move comment fields at bottom
*/
function vmag_move_comment_field_to_bottom( $fields ) {
$comment_field = $fields['comment'];
unset( $fields['comment'] );
$fields['comment'] = $comment_field;
return $fields;
}
add_filter( 'comment_form_fields', 'vmag_move_comment_field_to_bottom' );
/**
* Icons in menu section
*/
add_action( 'vmag_menu_search_icon', 'vmag_menu_search_icon_hook' );
if( ! function_exists( 'vmag_menu_search_icon_hook' ) ):
function vmag_menu_search_icon_hook() {
$vmag_search_icon = get_theme_mod( 'vmag_menu_search_option', 'show' );
if( $vmag_search_icon != 'hide' ) {
?>
<div class="vmag-search-form-primary"><?php get_search_form(); ?></div>
<span class="icon-search vmag-search-in-primary"></span>
<?php
}
}
endif;
add_action( 'vmag_menu_random_icon', 'vmag_menu_random_icon_hook' );
if( ! function_exists( 'vmag_menu_random_icon_hook' ) ):
function vmag_menu_random_icon_hook() {
$vmag_random_icon = get_theme_mod( 'vmag_menu_random_option', 'show' );
if( $vmag_random_icon != 'hide' ) {
$vmag_random_post_args = array(
'posts_per_page' => 1,
'post_type' => 'post',
'ignore_sticky_posts' => true,
'orderby' => 'rand'
);
$vmag_random_post_query = new WP_Query( $vmag_random_post_args );
while( $vmag_random_post_query->have_posts() ) {
$vmag_random_post_query->the_post();
?>
<a href="<?php the_permalink(); ?>" class="icon-random" title="<?php _e( 'View a random post', 'vmag' ); ?>"></a>
<?php
}
wp_reset_query();
}
}
endif;
/**
* Filter the except length to required characters.
*
* @param int $length Excerpt length.
* @return int (Maybe) modified excerpt length.
*/
/*function vmag_get_excerpt_content_length( $length ) {
return $length;
}
add_filter( 'excerpt_length', 'vmag_get_excerpt_content_length', 999 );*/
/**
* Function for excerpt length
*/
if( ! function_exists( 'vmag_get_excerpt_content' ) ):
function vmag_get_excerpt_content( $content, $limit ) {
$striped_content = strip_tags( $content );
$striped_content = strip_shortcodes( $striped_content );
$limit_content = mb_substr( $striped_content, 0 , $limit );
if( $limit_content < $content ){
$limit_content .= "...";
}
return $limit_content;
}
endif;
/**
* Function for excerpt length in archive
*/
if( ! function_exists( 'vmag_archive_excerpt' ) ):
function vmag_archive_excerpt( $content, $limit ) {
$content = strip_tags( $content );
$content = strip_shortcodes( $content );
$words = explode( ' ', $content );
return implode( ' ', array_slice( $words, 0, $limit ));
}
endif;
/**
* Function to escaping hex color
*/
function vmag_esc_hex_color( $color ) {
if ( '' === $color )
return '';
// 3 or 6 hex digits, or the empty string.
if ( preg_match('|^#([A-Fa-f0-9]{3}){1,2}$|', $color ) )
return $color;
}
/**
* Single post format
*/
add_action( 'vmag_post_format_icon', 'vmag_post_format_icon_hook' );
if( !function_exists( 'vmag_post_format_icon_hook' ) ):
function vmag_post_format_icon_hook() {
global $post;
$post_id = $post->ID;
$vmag_post_format = get_post_format( $post_id );
switch ( $vmag_post_format ) {
case 'video':
$post_format_icon = '<i class="fa fa-play"></i>';
break;
case 'audio':
$post_format_icon = '<i class="fa fa-volume-up"></i>';
break;
default:
$post_format_icon = '';
break;
}
if( $post_format_icon ) {
echo '<span class="format-icon">'. wp_kses_post( $post_format_icon ) .'</span>';
}
}
endif;