| Server IP : 162.214.67.83 / Your IP : 216.73.217.9 Web Server : Apache System : Linux dedi-13542965.clustter.com.br 5.14.0-687.20.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Jun 30 06:22:49 EDT 2026 x86_64 User : pjacortinas ( 1096) PHP Version : 8.3.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/pjacortinas/www/wp-content/themes/betheme/functions/ |
Upload File : |
<?php
/**
* Theme functions.
*
* @package Betheme
* @author Muffin group
* @link http://muffingroup.com
*/
/* ---------------------------------------------------------------------------
* Theme support
* --------------------------------------------------------------------------- */
if( false ) add_editor_style( '/css/style-editor.css' );
add_theme_support( 'automatic-feed-links' );
add_theme_support( 'post-formats', array( 'image', 'video', 'quote', 'link' ) );
add_theme_support( 'post-thumbnails' );
add_theme_support( 'title-tag' );
/* ---------------------------------------------------------------------------
* Image Size | Add
*
* TIP: add_image_size ( string $name, int $width, int $height, bool|array $crop = false )
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_add_image_size' ) )
{
function mfn_add_image_size() {
// Backend --------------------------------------------
/*
* Featured Image
*/
set_post_thumbnail_size( 260, 146, false );
/*
* List Thumbnail for custom post formats
*/
add_image_size( '50x50', 50, 50, false );
// Builder Items --------------------------------------
/*
* Clients | do NOT crop logos
*/
add_image_size( 'clients-slider', 150, 75, false );
/*
* Slider | Muffin Builder Item
*
* TODO: Verify proportions (? size)
*/
add_image_size( 'slider-content', 1630, 860, true );
/*
* Testimonials
*
* TODO: change it to 200x200
*/
add_image_size( 'testimonials', 85, 85, true );
/*
* Sticky Navigation | Blog, Portfolio & Shop
* Widget: Recent Posts
*
* TODO: connect with testimonials & change it to 200x200
*/
add_image_size( 'blog-navi', 80, 80, true );
// Blog & Portfolio -----------------------------------
/*
* Portfolio | Style: Masonry flat
*
* TODO: SIZE too big? (use cover/width 100%? ipad?)
*/
add_image_size( 'portfolio-mf', 1280, 1000, true );
add_image_size( 'portfolio-mf-w', 1280, 500, true ); /* Wide */
add_image_size( 'portfolio-mf-t', 768, 1200, true ); /* Tall */
/*
* Portfolio | Style: List
*
* TODO: Verify proportions (? size)
*/
add_image_size( 'portfolio-list', 1920, 750, true );
// Blog & Portfolio | Dynamic sizes -------------------
/*
* Blog & Portfolio | List
*/
$archivesW = mfn_opts_get( 'featured-blog-portfolio-width', 960 );
$archivesH = mfn_opts_get( 'featured-blog-portfolio-height', 750 );
$archivesC = mfn_opts_get( 'featured-blog-portfolio-crop', 'crop' );
$archivesC = ( $archivesC == 'resize' ) ? false : true;
add_image_size( 'blog-portfolio', $archivesW, $archivesH, $archivesC );
/*
* Blog & Portfolio | Single
*/
$singleW = mfn_opts_get( 'featured-single-width', 1200 );
$singleH = mfn_opts_get( 'featured-single-height', 480 );
$singleC = mfn_opts_get( 'featured-single-crop', 'crop' );
$singleC = ( $singleC == 'resize' ) ? false : true;
add_image_size( 'blog-single', $singleW, $singleH, $singleC );
}
}
add_action( 'after_setup_theme', 'mfn_add_image_size', 11 );
/* ---------------------------------------------------------------------------
* Image size | Get size dimensions
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_get_image_sizes' ) )
{
function mfn_get_image_sizes( $size, $string = false ){
$sizes = array();
$sizes['width'] = get_option( "{$size}_size_w" );
$sizes['height'] = get_option( "{$size}_size_h" );
$sizes['crop'] = (bool) get_option( "{$size}_crop" );
if( $string ){
$crop = $sizes['crop'] ? ', crop' : '';
return 'max width: '. $sizes['width'] .', max height: '. $sizes['height'] . $crop;
}
return $sizes;
}
}
/* ---------------------------------------------------------------------------
* Excerpt | Lenght
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_excerpt_length' ) )
{
function mfn_excerpt_length( $length ) {
return mfn_opts_get( 'excerpt-length', 26 );
}
}
add_filter( 'excerpt_length', 'mfn_excerpt_length', 999 );
/* ---------------------------------------------------------------------------
* Excerpt | Wrap [...] into <span>
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_trim_excerpt' ) )
{
function mfn_trim_excerpt( $text ) {
return '<span class="excerpt-hellip"> […]</span>';
}
}
add_filter( 'excerpt_more', 'mfn_trim_excerpt' );
/* ---------------------------------------------------------------------------
* Excerpt | for Pages
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_add_excerpts_to_pages' ) )
{
function mfn_add_excerpts_to_pages() {
add_post_type_support( 'page', 'excerpt' );
}
}
add_action( 'init', 'mfn_add_excerpts_to_pages' );
/* ---------------------------------------------------------------------------
* Slug | Generate
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_slug' ) )
{
function mfn_slug( $string = false ){
return strtolower( trim ( preg_replace( '/[^A-Za-z0-9-]+/', '-', $string ) ) );
}
}
/* ---------------------------------------------------------------------------
* Blog Page | Order
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_blog_order' ) )
{
function mfn_blog_order( $query ){
if( $query->is_main_query() ){
if( is_home() || is_category() || is_tag() ){
$orderby = mfn_opts_get( 'blog-orderby', 'date' );
$order = mfn_opts_get( 'blog-order', 'DESC' );
if( $orderby == 'date' && $order == 'DESC' ){
return true;
}
$query->set( 'orderby', $orderby );
$query->set( 'order', $order );
}
}
return $query;
}
}
add_action( 'pre_get_posts', 'mfn_blog_order' );
/* ---------------------------------------------------------------------------
* Blog Page | Exclude category
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_get_excluded_categories' ) )
{
function mfn_get_excluded_categories(){
$categories = array();
if( $exclude = mfn_opts_get( 'exclude-category' ) ){
$exclude = str_replace( ' ', '', $exclude );
$exclude = explode( ',', $exclude );
if( is_array( $exclude ) ){
$categories = $exclude;
}
}
return $categories;
}
}
if( ! function_exists( 'mfn_exclude_category' ) )
{
function mfn_exclude_category( $query ) {
if( is_home() && $query->is_main_query() ){
$exclude_ids = array();
if( $exclude = mfn_get_excluded_categories() ){
foreach( $exclude as $slug ){
$category = get_category_by_slug( $slug );
$exclude_ids[] = $category->term_id * -1;
}
}
$exclude_ids = implode( ',', $exclude_ids );
$query->set( 'cat', $exclude_ids );
}
return $query;
}
}
add_filter( 'pre_get_posts', 'mfn_exclude_category' );
/* ---------------------------------------------------------------------------
* SSL | Compatibility
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_ssl' ) )
{
function mfn_ssl( $echo = false ){
$ssl = '';
if( is_ssl() ){
$ssl = 's';
}
if( $echo ){
echo $ssl;
}
return $ssl;
}
}
/* ---------------------------------------------------------------------------
* SSL | Attachments
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_ssl_attachments' ) )
{
function mfn_ssl_attachments( $url ){
if( is_ssl() ){
return str_replace( 'http://', 'https://', $url );
}
return $url;
}
}
add_filter( 'wp_get_attachment_url', 'mfn_ssl_attachments' );
/* ---------------------------------------------------------------------------
* White Label | Admin Body Class
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_white_label_class' ) )
{
function mfn_white_label_class( $classes ){
if( WHITE_LABEL ){
$classes .= ' white-label ';
}
return $classes;
}
}
add_filter( 'admin_body_class', 'mfn_white_label_class' );
/* ---------------------------------------------------------------------------
* Get Real Post ID
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_ID' ) )
{
function mfn_ID(){
global $post;
$postID = false;
if( ! is_404() ){
if( function_exists( 'is_woocommerce' ) && is_woocommerce() ){
// WooCommerce
// WC < 2.7 backward compatibility
if( version_compare( WC_VERSION, '2.7', '<' ) ){
$postID = woocommerce_get_page_id( 'shop' );
} else {
$postID = wc_get_page_id( 'shop' );
}
} elseif( is_search() ){
$postID = false;
} elseif( is_tax() ){
// taxonomy-portfolio-types.php
$postID = mfn_opts_get( 'portfolio-page' );
} elseif( in_array( get_post_type(), array( 'post', 'tribe_events' ) ) && ! is_singular() ){
// index.php
if( get_option( 'page_for_posts' ) ){
// Setings / Reading
$postID = get_option( 'page_for_posts' );
} elseif( mfn_opts_get( 'blog-page' ) ){
// Theme Options / Getting Started / Blog
$postID = mfn_wpml_ID( mfn_opts_get( 'blog-page' ) );
}
} else {
// default
$postID = get_the_ID();
}
}
return $postID;
}
}
/* ---------------------------------------------------------------------------
* Get Layout ID
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_layout_ID' ) )
{
function mfn_layout_ID(){
$layoutID = false;
if( mfn_ID() ){
if( is_single() && get_post_type() == 'post' ){
// Theme Options | Single Post
$layoutID = mfn_opts_get( 'blog-single-layout' );
} elseif( is_single() && get_post_type() == 'portfolio' ) {
if( get_post_meta( mfn_ID(), 'mfn-post-custom-layout', true ) ){
// Page Options | Single Portfolio
$layoutID = get_post_meta( mfn_ID(), 'mfn-post-custom-layout', true );
} else {
// Theme Options | Single Portfolio
$layoutID = mfn_opts_get( 'portfolio-single-layout' );
}
} else {
// Page Options | Page
$layoutID = get_post_meta( mfn_ID(), 'mfn-post-custom-layout', true );
}
}
return $layoutID;
}
}
/* ---------------------------------------------------------------------------
* Slider | Isset
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_slider_isset' ) )
{
function mfn_slider_isset( $id = false ){
$slider = false;
// Global Slider Shortcode
if( is_page() && mfn_opts_get( 'slider-shortcode' ) ){
return 'global';
}
if( $id || is_home() || is_category() || is_tax() || get_post_type() == 'page' || ( get_post_type( mfn_ID() ) == 'portfolio' && get_post_meta( mfn_ID(), 'mfn-post-slider-header', true ) ) ){
if( ! $id ) $id = mfn_ID(); // do NOT move it before IF
if( get_post_meta( $id, 'mfn-post-slider', true ) ){
// Revolution Slider
$slider = 'rev';
} elseif( get_post_meta( $id, 'mfn-post-slider-layer', true ) ) {
// Layer Slider
$slider = 'layer';
} elseif( get_post_meta( $id, 'mfn-post-slider-shortcode', true ) ) {
// Custom Slider
$slider = 'custom';
}
}
return $slider;
}
}
/* ---------------------------------------------------------------------------
* Slider | Get
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_slider' ) )
{
function mfn_slider( $id = false ){
$slider = false;
$slider_type = mfn_slider_isset( $id );
if( ! $id ) $id = mfn_ID(); // do NOT move it before IF
switch ($slider_type) {
case 'global':
$slider = '<div class="mfn-main-slider" id="mfn-global-slider">';
$slider .= do_shortcode( mfn_opts_get('slider-shortcode') );
$slider .= '</div>';
break;
case 'rev':
$slider = '<div class="mfn-main-slider" id="mfn-rev-slider">';
$slider .= do_shortcode('[rev_slider '. get_post_meta( $id, 'mfn-post-slider', true ) .']');
$slider .= '</div>';
break;
case 'layer':
$slider = '<div class="mfn-main-slider" id="mfn-layer-slider">';
$slider .= do_shortcode('[layerslider id="'. get_post_meta( $id, 'mfn-post-slider-layer', true ) .'"]');
$slider .= '</div>';
break;
case 'custom':
$slider = '<div class="mfn-main-slider" id="mfn-custom-slider">';
$slider .= do_shortcode( get_post_meta( $id, 'mfn-post-slider-shortcode', true ) );
$slider .= '</div>';
break;
}
return $slider;
}
}
/* ---------------------------------------------------------------------------
* Share
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_share' ) )
{
function mfn_share( $container = false ){
$type = false;
$class = false;
if( ! mfn_opts_get( 'share' ) ){
return false;
}
$style = mfn_opts_get( 'share-style', 'classic' );
// type
if( ( $container == 'header' ) && ( $style == 'classic' ) ){
$type = 'classic';
}
if( $container == 'intro' ){
if( $style == 'simple' ){
$type = 'simple';
} else {
$type = 'classic';
}
}
if( ( $container == 'footer' ) && ( $style == 'simple' ) ){
$type = 'simple';
}
if( $container == 'item' ){
$type = $style;
$class = 'share_item';
}
// output
$output = '';
if( $type == 'simple' ){
// simple
$translate[ 'share' ] = mfn_opts_get( 'translate' ) ? mfn_opts_get( 'translate-share', 'Share' ) : __( 'Share', 'betheme' );
$output .= '<div class="share-simple-wrapper '. $class .'">';
$output .= '<span class="share-label">'. $translate[ 'share' ] .'</span>';
$output .= '<div class="icons">';
$output .= '<a target="_blank" class="facebook" href="https://www.facebook.com/sharer/sharer.php?u='. urlencode( get_permalink() ) .'"><i class="icon-facebook"></i></a>';
$output .= '<a target="_blank" class="twitter" href="https://twitter.com/intent/tweet?text='. wp_get_document_title() .'. '. get_permalink() .'"><i class="icon-twitter"></i></a>';
$output .= '<a target="_blank" class="google" href="https://plus.google.com/share?url='. urlencode( get_permalink() ) .'"><i class="icon-gplus"></i></a>';
$output .= '<a target="_blank" class="linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url='. urlencode( get_permalink() ) .'&title='. wp_get_document_title() .'"><i class="icon-linkedin"></i></a>';
$output .= '<a target="_blank" class="pinterest" href="https://pinterest.com/pin/find/?url='. urlencode( get_permalink() ) .'"><i class="icon-pinterest"></i></a>';
$output .= '</div>';
if( $container != 'item' ){
$output .= '<div class="button-love">'. mfn_love() .'</div>';
}
$output .= '</div>';
} elseif( $type == 'classic' ) {
// classic
$output .= '<div class="share_wrapper '. $class .'">';
$output .= '<span class="st_facebook_vcount"></span>';
$output .= '<span class="st_twitter_vcount"></span>';
$output .= '<span class="st_pinterest_vcount"></span>';
$output .= '<script src="http'. mfn_ssl() .'://w'. mfn_ssl() .'.sharethis.com/button/buttons.js"></script>';
$output .= '<script>stLight.options({publisher:"1390eb48-c3c3-409a-903a-ca202d50de91",doNotHash:false,doNotCopy:false,hashAddressBar:false});</script>';
$output .= '</div>';
}
return $output;
}
}
/* ---------------------------------------------------------------------------
* WP Mobile Detect | Quick FIX: parallax on mobile
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_is_mobile' ) )
{
function mfn_is_mobile(){
$mobile = wp_is_mobile();
if( mfn_opts_get( 'responsive-parallax' ) ){
$mobile = false;
}
return $mobile;
}
}
/* ---------------------------------------------------------------------------
* User OS
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_user_os' ) )
{
function mfn_user_os(){
$os = false;
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if( strpos( $user_agent, 'iPad;' ) || strpos( $user_agent, 'iPhone;' ) ){
$os = ' ios';
}
return $os;
}
}
/* ---------------------------------------------------------------------------
* User Agent | For: Prallax - Safari detect & future use
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_user_agent' ) )
{
function mfn_user_agent(){
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if( stripos( $user_agent, 'Chrome/') !== false ){
$user_agent = 'chrome';
} elseif( ( stripos( $user_agent, 'Safari/') !== false ) && ( stripos( $user_agent, 'Mobile/') !== false ) ){
$user_agent = 'safari mobile';
} elseif( stripos( $user_agent, 'Safari/') !== false ){
$user_agent = 'safari';
} else {
// for future use
$user_agent = false;
}
return $user_agent;
}
}
/* ---------------------------------------------------------------------------
* Paralllax | Plugin
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_parallax_plugin' ) )
{
function mfn_parallax_plugin(){
$parallax = mfn_opts_get( 'parallax' );
if( $parallax == 'translate3d no-safari' ){
if( mfn_user_agent() == 'safari' ){
$parallax = 'enllax';
} else {
$parallax = 'translate3d';
}
}
return $parallax;
}
}
/* ---------------------------------------------------------------------------
* Paralllax | Code - Section & wrapper background
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_parallax_data' ) )
{
function mfn_parallax_data(){
$parallax = mfn_parallax_plugin();
if( $parallax == 'translate3d' ){
$parallax = 'data-parallax="3d"';
} elseif( $parallax == 'stellar' ){
$parallax = 'data-stellar-background-ratio="0.5"';
} else {
$parallax = 'data-enllax-ratio="-0.3"';
}
return $parallax;
}
}
/* ---------------------------------------------------------------------------
* Pagination for Blog and Portfolio
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_pagination' ) )
{
function mfn_pagination( $query = false, $load_more = false ){
global $wp_query;
$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : ( ( get_query_var( 'page' ) ) ? get_query_var( 'page' ) : 1 );
// default $wp_query
if( ! $query ) $query = $wp_query;
$translate['prev'] = mfn_opts_get('translate') ? mfn_opts_get('translate-prev','‹ Prev page') : __('Prev page','betheme');
$translate['next'] = mfn_opts_get('translate') ? mfn_opts_get('translate-next','Next page ›') : __('Next page','betheme');
$translate['load-more'] = mfn_opts_get('translate') ? mfn_opts_get('translate-load-more','Load more') : __('Load more','betheme');
$query->query_vars['paged'] > 1 ? $current = $query->query_vars['paged'] : $current = 1;
if( empty( $paged ) ) $paged = 1;
$prev = $paged - 1;
$next = $paged + 1;
$end_size = 1;
$mid_size = 2;
$show_all = mfn_opts_get('pagination-show-all');
$dots = false;
if( ! $total = $query->max_num_pages ) $total = 1;
$output = '';
if( $total > 1 )
{
if( $load_more ){
// ajax load more -------------------------------------------------
if( $paged < $total ){
$output .= '<div class="column one pager_wrapper pager_lm">';
$output .= '<a class="pager_load_more button button_js" href="'. get_pagenum_link( $next ) .'">';
$output .= '<span class="button_icon"><i class="icon-layout"></i></span>';
$output .= '<span class="button_label">'. $translate['load-more'] .'</span>';
$output .= '</a>';
$output .= '</div>';
}
} else {
// default --------------------------------------------------------
$output .= '<div class="column one pager_wrapper">';
$output .= '<div class="pager">';
if( $paged >1 ){
$output .= '<a class="prev_page" href="'. get_pagenum_link( $prev ) .'"><i class="icon-left-open"></i>'. $translate['prev'] .'</a>';
}
$output .= '<div class="pages">';
for( $i=1; $i <= $total; $i++ ){
if ( $i == $current ){
$output .= '<a href="'. get_pagenum_link($i) .'" class="page active">'. $i .'</a>';
$dots = true;
} else {
if ( $show_all || ( $i <= $end_size || ( $current && $i >= $current - $mid_size && $i <= $current + $mid_size ) || $i > $total - $end_size ) ){
$output .= '<a href="'. get_pagenum_link($i) .'" class="page">'. $i .'</a>';
$dots = true;
} elseif ( $dots && ! $show_all ) {
$output .= '<span class="page">...</span>';
$dots = false;
}
}
}
$output .= '</div>';
if( $paged < $total ){
$output .= '<a class="next_page" href="'. get_pagenum_link( $next ) .'">'. $translate['next'] .'<i class="icon-right-open"></i></a>';
}
$output .= '</div>';
$output .= '</div>'."\n";
}
}
return $output;
}
}
/* ---------------------------------------------------------------------------
* No sidebar message for templates with sidebar
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_nosidebar' ) )
{
function mfn_nosidebar(){
echo 'This template supports the sidebar\'s widgets. <a href="'. home_url() .'/wp-admin/widgets.php">Add one</a> or use Full Width layout.';
}
}
/* ---------------------------------------------------------------------------
* New Walker Category for categories menu
* --------------------------------------------------------------------------- */
if( ! class_exists( 'New_Walker_Category' ) )
{
class New_Walker_Category extends Walker_Category {
function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
extract($args);
$cat_name = esc_attr( $category->name );
$cat_name = apply_filters( 'list_cats', $cat_name, $category );
$link = '<a href="' . esc_attr( get_term_link($category) ) . '" ';
if ( $use_desc_for_title == 0 || empty($category->description) )
$link .= 'title="' . esc_attr( sprintf(__('View all posts filed under %s','betheme'), $cat_name) ) . '"';
else
$link .= 'title="' . esc_attr( strip_tags( apply_filters( 'category_description', $category->description, $category ) ) ) . '"';
$link .= '>';
$link .= $cat_name;
if ( !empty($show_count) )
$link .= ' <span>(' . intval($category->count) . ')</span>';
$link .= '</a>';
if ( 'list' == $args['style'] ) {
$output .= "\t<li";
$class = 'cat-item cat-item-' . $category->term_id;
if ( !empty($current_category) ) {
$_current_category = get_term( $current_category, $category->taxonomy );
if ( $category->term_id == $current_category )
$class .= ' current-cat';
elseif ( $category->term_id == $_current_category->parent )
$class .= ' current-cat-parent';
}
$output .= ' class="' . $class . '"';
$output .= ">$link\n";
} else {
$output .= "\t$link\n";
}
}
}
}
/* ---------------------------------------------------------------------------
* Current page URL
* --------------------------------------------------------------------------- */
if( ! function_exists( 'curPageURL' ) )
{
function curPageURL(){
$pageURL = 'http';
if( is_ssl() ) $pageURL .= "s";
$pageURL .= "://";
if( $_SERVER["SERVER_PORT"] != "80" ) {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
}
/* ---------------------------------------------------------------------------
* Subheader | Page Title
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_page_title' ) )
{
function mfn_page_title( $echo = false ){
if( is_home() ){
// Blog ---------------------------------------
$title = get_the_title( mfn_ID() );
} elseif( function_exists( 'tribe_is_month' ) && ( tribe_is_event_query() || tribe_is_month() || tribe_is_event() || tribe_is_day() || tribe_is_venue() ) ){
// The Events Calendar ------------------------
$title = tribe_get_events_title();
} elseif( is_tag() ){
// Blog | Tag ---------------------------------
$title = single_tag_title('', false);
} elseif( is_category() ){
// Blog | Category ----------------------------
$title = single_cat_title('', false);
} elseif( is_author() ){
// Blog | Author ------------------------------
$title = get_the_author();
} elseif( is_day() ){
// Blog | Day ---------------------------------
$title = get_the_time('d');
} elseif( is_month() ){
// Blog | Month -------------------------------
$title = get_the_time('F');
} elseif( is_year() ){
// Blog | Year --------------------------------
$title = get_the_time('Y');
} elseif( is_single() || is_page() ){
// Single -------------------------------------
$title = get_the_title( mfn_ID() );
} elseif( get_post_taxonomies() ){
// Taxonomy -----------------------------------
$title = single_cat_title('', false);
} else {
// Default ------------------------------------
$title = get_the_title( mfn_ID() );
}
if( $echo ) echo $title;
return $title;
}
}
/* ---------------------------------------------------------------------------
* Breadcrumbs
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_breadcrumbs' ) )
{
function mfn_breadcrumbs( $class = false ){
global $post;
$translate['home'] = mfn_opts_get('translate') ? mfn_opts_get('translate-home','Home') : __('Home','betheme');
$homeLink = home_url();
$separator = ' <span><i class="icon-right-open"></i></span>';
// Plugin | bbPress -----------------------------------
if( function_exists('is_bbpress') && is_bbpress() ){
bbp_breadcrumb( array(
'before' => '<ul class="breadcrumbs">',
'after' => '</ul>',
'sep' => '<i class="icon-right-open"></i>',
'crumb_before' => '<li>',
'crumb_after' => '</li>',
'home_text' => $translate['home'],
) );
return true;
} // end: bbPress -------------------------------------
// Default breadcrumbs --------------------------------
$breadcrumbs = array();
// Home prefix --------------------------------
$breadcrumbs[] = '<a href="'. $homeLink .'">'. $translate['home'] .'</a>';
// Blog -------------------------------------------
if( get_post_type() == 'post' ){
$blogID = false;
if( get_option( 'page_for_posts' ) ){
$blogID = get_option( 'page_for_posts' ); // Setings / Reading
} elseif( mfn_opts_get( 'blog-page' ) ){
// remove it: do not need to show blog if the blog is on the homepage
// $blogID = mfn_opts_get( 'blog-page' ); // Theme Options / Getting Started / Blog
}
if( $blogID ){
$blog_post = get_post( $blogID );
// Blog Page has parent
if( $blog_post && $blog_post->post_parent ){
$parent_id = $blog_post->post_parent;
$parents = array();
while( $parent_id ) {
$page = get_page( $parent_id );
$parents[] = '<a href="' . get_permalink( $page->ID ) . '">' . get_the_title( $page->ID ) . '</a>';
$parent_id = $page->post_parent;
}
$parents = array_reverse( $parents );
$breadcrumbs = array_merge_recursive($breadcrumbs, $parents);
}
$breadcrumbs[] = '<a href="'. get_permalink( $blogID ) .'">'. get_the_title( $blogID ) .'</a>';
}
}
if( is_front_page() || is_home() ){
// do nothing
// Plugin | Events Calendar -------------------------------------------
} elseif( function_exists( 'tribe_is_month' ) && ( tribe_is_event_query() || tribe_is_month() || tribe_is_event() || tribe_is_day() || tribe_is_venue() ) ) {
if( function_exists( 'tribe_get_events_link' ) ){
$breadcrumbs[] = '<a href="'. tribe_get_events_link() .'">'. tribe_get_events_title() .'</a>';
}
// Blog | Tag -------------------------------------
} elseif( is_tag() ){
$breadcrumbs[] = '<a href="'. curPageURL() .'">' . single_tag_title('', false) . '</a>';
// Blog | Category --------------------------------
} elseif( is_category() ){
$cat = get_term_by('name', single_cat_title('',false), 'category');
if( $cat && $cat->parent ){
$breadcrumbs[] = get_category_parents( $cat->parent, true, $separator );
}
$breadcrumbs[] = '<a href="'. curPageURL() .'">' . single_cat_title('', false) . '</a>';
// Blog | Author ----------------------------------
} elseif( is_author() ){
$breadcrumbs[] = '<a href="'. curPageURL() .'">' . get_the_author() . '</a>';
// Blog | Day -------------------------------------
} elseif( is_day() ){
$breadcrumbs[] = '<a href="'. get_year_link( get_the_time('Y') ) . '">'. get_the_time('Y') .'</a>';
$breadcrumbs[] = '<a href="'. get_month_link( get_the_time('Y'), get_the_time('m') ) .'">'. get_the_time('F') .'</a>';
$breadcrumbs[] = '<a href="'. curPageURL() .'">'. get_the_time('d') .'</a>';
// Blog | Month -----------------------------------
} elseif( is_month() ){
$breadcrumbs[] = '<a href="' . get_year_link( get_the_time('Y') ) . '">' . get_the_time('Y') . '</a>';
$breadcrumbs[] = '<a href="'. curPageURL() .'">'. get_the_time('F') .'</a>';
// Blog | Year ------------------------------------
} elseif( is_year() ){
$breadcrumbs[] = '<a href="'. curPageURL() .'">'. get_the_time('Y') .'</a>';
// Single -----------------------------------------
} elseif( is_single() && ! is_attachment() ){
// Custom Post Type -----------------
if( get_post_type() != 'post' ){
$post_type = get_post_type_object(get_post_type());
$slug = $post_type->rewrite;
$portfolio_page_id = mfn_wpml_ID( mfn_opts_get('portfolio-page') );
// Portfolio Page ------------
if( $slug['slug'] == mfn_opts_get( 'portfolio-slug', 'portfolio-item' ) && $portfolio_page_id ){
$breadcrumbs[] = '<a href="' . get_page_link( $portfolio_page_id ) . '">'. get_the_title( $portfolio_page_id ) .'</a>';
}
// Category ----------
if( $portfolio_page_id ){
$terms = get_the_terms( get_the_ID(), 'portfolio-types' );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
$term = $terms[0];
$breadcrumbs[] = '<a href="'. get_term_link( $term ) .'">'. $term->name .'</a>';
}
}
// Single Item --------
$breadcrumbs[] = '<a href="' . curPageURL() . '">'. get_the_title().'</a>';
// Blog | Single --------------------
} else {
$cat = get_the_category();
if( ! empty( $cat ) ){
$breadcrumbs[] = get_category_parents( $cat[0], true, $separator );
}
$breadcrumbs[] = '<a href="' . curPageURL() . '">'. get_the_title() .'</a>';
}
// Taxonomy ---------------------------------------
} elseif( ! is_page() && get_post_taxonomies() ){
// Portfolio ------------------------
$post_type = get_post_type_object( get_post_type() );
if( $post_type->name == 'portfolio' && $portfolio_page_id = mfn_wpml_ID( mfn_opts_get('portfolio-page') ) ) {
$breadcrumbs[] = '<a href="' . get_page_link( $portfolio_page_id ) . '">'. get_the_title( $portfolio_page_id ) .'</a>';
}
$breadcrumbs[] = '<a href="' . curPageURL() . '">' . single_cat_title('', false) . '</a>';
// Page with parent -------------------------------
} elseif( is_page() && $post->post_parent ){
$parent_id = $post->post_parent;
$parents = array();
while( $parent_id ) {
$page = get_page( $parent_id );
$parents[] = '<a href="' . get_permalink( $page->ID ) . '">' . get_the_title( $page->ID ) . '</a>';
$parent_id = $page->post_parent;
}
$parents = array_reverse( $parents );
$breadcrumbs = array_merge_recursive($breadcrumbs, $parents);
$breadcrumbs[] = '<a href="' . curPageURL() . '">'. get_the_title( mfn_ID() ) .'</a>';
// Default ----------------------------------------
} else {
$breadcrumbs[] = '<a href="' . curPageURL() . '">'. get_the_title( mfn_ID() ) .'</a>';
}
// PRINT ------------------------------------------------------------------
echo '<ul class="breadcrumbs '. $class .'">';
$count = count( $breadcrumbs );
$i = 1;
foreach( $breadcrumbs as $bk => $bc ){
if( strpos( $bc , $separator ) ){
// Category parents fix
echo '<li>'. $bc .'</li>';
} else {
if( $i == $count ) $separator = '';
echo '<li>'. $bc . $separator .'</li>';
}
$i++;
}
echo '</ul>';
}
}
/* ---------------------------------------------------------------------------
* Hex 2 rgba
* --------------------------------------------------------------------------- */
if( ! function_exists( 'hex2rgba' ) )
{
function hex2rgba( $hex, $alpha = 1, $echo = false ) {
$hex = str_replace("#", "", $hex);
if(strlen($hex) == 3) {
$r = hexdec(substr($hex,0,1).substr($hex,0,1));
$g = hexdec(substr($hex,1,1).substr($hex,1,1));
$b = hexdec(substr($hex,2,1).substr($hex,2,1));
} else {
$r = hexdec(substr($hex,0,2));
$g = hexdec(substr($hex,2,2));
$b = hexdec(substr($hex,4,2));
}
$rgba = 'rgba('. $r.', '. $g .', '. $b .', '. $alpha .')';
if( $echo ){
echo $rgba;
return true;
}
return $rgba;
}
}
/* ---------------------------------------------------------------------------
* Is dark color
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_brightness' ) )
{
function mfn_brightness( $hex, $tolerance = 169, $oposite_color = false ) {
$hex = str_replace("#", "", $hex);
$r = hexdec(substr( $hex, 0, 2 ));
$g = hexdec(substr( $hex, 2, 2 ));
$b = hexdec(substr( $hex, 4, 2 ));
$brightness = ( ($r * 299) + ($g * 587) + ($b * 114) ) / 1000;
if( $brightness > $tolerance ){
$brightness = 'light';
} else {
$brightness = 'dark';
}
if( $oposite_color ){
if( $brightness == 'light' ){
$brightness = 'black';
} else {
$brightness = 'white';
}
}
return $brightness;
}
}
/* ---------------------------------------------------------------------------
* jPlayer HTML
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_jplayer_html' ) )
{
function mfn_jplayer_html( $video_m4v, $poster = false ){
$player_id = mt_rand( 0, 999 );
$output = '<div id="jp_container_'. $player_id .'" class="jp-video mfn-jcontainer">';
$output .= '<div class="jp-type-single">';
$output .= '<div id="jquery_jplayer_'. $player_id .'" class="jp-jplayer mfn-jplayer" data-m4v="'. $video_m4v .'" data-img="'. $poster .'" data-swf="'. THEME_URI .'/assets/jplayer"></div>';
$output .= '<div class="jp-gui">';
$output .= '<div class="jp-video-play">';
$output .= '<a href="javascript:;" class="jp-video-play-icon" tabindex="1">play</a>';
$output .= '</div>';
$output .= '<div class="jp-interface">';
$output .= '<div class="jp-progress">';
$output .= '<div class="jp-seek-bar">';
$output .= '<div class="jp-play-bar"></div>';
$output .= '</div>';
$output .= '</div>';
$output .= '<div class="jp-current-time"></div>';
$output .= '<div class="jp-duration"></div>';
$output .= '<div class="jp-controls-holder">';
$output .= '<ul class="jp-controls">';
$output .= '<li><a href="javascript:;" class="jp-play" tabindex="1">play</a></li>';
$output .= '<li><a href="javascript:;" class="jp-pause" tabindex="1">pause</a></li>';
$output .= '<li><a href="javascript:;" class="jp-stop" tabindex="1">stop</a></li>';
$output .= '<li><a href="javascript:;" class="jp-mute" tabindex="1" title="mute">mute</a></li>';
$output .= '<li><a href="javascript:;" class="jp-unmute" tabindex="1" title="unmute">unmute</a></li>';
$output .= '<li><a href="javascript:;" class="jp-volume-max" tabindex="1" title="max volume">max volume</a></li>';
$output .= '</ul>';
$output .= '<div class="jp-volume-bar"><div class="jp-volume-bar-value"></div></div>';
$output .= '<ul class="jp-toggles">';
$output .= '<li><a href="javascript:;" class="jp-full-screen" tabindex="1" title="full screen">full screen</a></li>';
$output .= '<li><a href="javascript:;" class="jp-restore-screen" tabindex="1" title="restore screen">restore screen</a></li>';
$output .= '<li><a href="javascript:;" class="jp-repeat" tabindex="1" title="repeat">repeat</a></li>';
$output .= '<li><a href="javascript:;" class="jp-repeat-off" tabindex="1" title="repeat off">repeat off</a></li>';
$output .= '</ul>';
$output .= '</div>';
$output .= '<div class="jp-title"><ul><li>jPlayer Video Title</li></ul></div>';
$output .= '</div>';
$output .= '</div>';
$output .= '<div class="jp-no-solution"><span>Update Required</span>To play the media you will need to either update your browser to a recent version or update your <a href="https://get.adobe.com/flashplayer/" target="_blank">Flash plugin</a></div>';
$output .= '</div>';
$output .= '</div>'."\n";
return $output;
}
}
/* ---------------------------------------------------------------------------
* jPlayer
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_jplayer' ) )
{
function mfn_jplayer( $postID, $sizeH = 'full' ){
// masonry square video fix
if($sizeH == 'blog-masonry') $sizeH = 'blog-square';
$video_m4v = get_post_meta( $postID, 'mfn-post-video-mp4', true );
$poster = wp_get_attachment_image_src( get_post_thumbnail_id( $postID ), $sizeH );
$poster = $poster[0];
return mfn_jplayer_html( $video_m4v, $poster );
}
}
/* ---------------------------------------------------------------------------
* Post Format
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_post_format' ) )
{
function mfn_post_format( $postID ){
if( get_post_type( $postID ) == 'portfolio' && is_single( $postID ) ){
// portfolio
if ( get_post_meta( get_the_ID(), 'mfn-post-video', true ) ){
// Video - embed
$format = 'video';
} elseif( get_post_meta( get_the_ID(), 'mfn-post-video-mp4', true ) ){
// Video - HTML5
$format = 'video';
} else {
// Image
$format = false;
}
} else {
// blog
$format = get_post_format( $postID );
}
return $format;
}
}
/* ---------------------------------------------------------------------------
* Attachment | GET attachment ID by URL
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_get_attachment_id_url' ) )
{
function mfn_get_attachment_id_url( $image_url ){
global $wpdb;
$image_url = esc_url( $image_url );
$attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid='%s';", $image_url ) );
if( isset( $attachment[0] ) ){
return $attachment[0];
}
// QUICK FIX https
$image_url = str_replace( 'https://', 'http://', $image_url );
$attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE guid='%s';", $image_url ) );
if( isset( $attachment[0] ) ){
return $attachment[0];
}
}
}
/* ---------------------------------------------------------------------------
* Attachment | GET attachment data
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_get_attachment_data' ) )
{
function mfn_get_attachment_data( $image, $data, $with_key = false ){
$size = $return = false;
if( ! is_numeric( $image ) ){
$image = mfn_get_attachment_id_url( $image );
}
// WPML workaround
$image = apply_filters( 'wpml_object_id', $image, 'attachment', TRUE );
$meta = wp_prepare_attachment_for_js( $image );
if( is_array( $meta ) && isset( $meta[ $data ] ) ){
$return = $meta[ $data ];
// if looking for alt and it isn't specified use image title
if( $data == 'alt' && ! $return ){
$return = $meta[ 'title' ];
}
}
if( $return && $with_key ){
$return = $data. '="'. $return .'"';
}
return $return;
}
}
/* ---------------------------------------------------------------------------
* Post Thumbnail | GET post thumbnail type
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_post_thumbnail_type' ) )
{
function mfn_post_thumbnail_type( $postID ){
$type = 'image';
$post_format = mfn_post_format( $postID );
if( $post_format == 'image' ){
$type = 'image';
} elseif( $post_format == 'video' && get_post_meta( $postID, 'mfn-post-video', true ) ){
$type = 'video embed';
} elseif( $post_format == 'video' && get_post_meta( $postID, 'mfn-post-video-mp4', true ) ){
$type = 'video html5';
} elseif( get_post_meta( $postID, 'mfn-post-slider', true ) || get_post_meta( $postID, 'mfn-post-slider-layer', true ) ){
$type = 'slider';
}
return $type;
}
}
/* ---------------------------------------------------------------------------
* Post Thumbnail | GET post thumbnail
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_post_thumbnail' ) )
{
function mfn_post_thumbnail( $postID, $type = false, $style = false, $featured_image = false ){
$output = '';
// Image Size ---------------------------------------------------------
if( $type == 'portfolio' ){
// Portfolio ----------------------
if( $style == 'list' ){
// Portfolio | List ----------------------
$sizeH = 'portfolio-list';
} elseif( $style == 'masonry-flat' ) {
// Portfolio | Masonry Flat ----------------------
$size = get_post_meta( $postID, 'mfn-post-size', true );
if( $size == 'wide' ){
$sizeH = 'portfolio-mf-w';
} elseif( $size == 'tall' ) {
$sizeH = 'portfolio-mf-t';
} else {
$sizeH = 'portfolio-mf';
}
} elseif( $style == 'masonry-minimal' ) {
// Portfolio | Masonry Minimal ----------------------
$sizeH = 'full';
} else {
// Portfolio | Default ----------------------
$sizeH = 'blog-portfolio';
}
} elseif( $type == 'blog' && $style == 'photo' ){
// Blog | Photo ----------------------
$sizeH = 'blog-single';
$sizeV = 'blog-single';
} elseif( $type == 'related' ){
// Related Posts ----------------------
$sizeH = 'blog-portfolio';
} elseif( is_single( $postID ) ){
// Blog & Portfolio | Single ----------------------
$sizeH = 'blog-single';
$sizeV = 'full';
} else {
// Default ----------------------
$sizeH = 'blog-portfolio';
$sizeV = 'full';
}
// Link Wrap ----------------------------------------------------------
$large_image_url = wp_get_attachment_image_src( get_post_thumbnail_id( $postID ), 'large' );
if( is_single( $postID ) ){
// Single -----------------------------------------
$link_before = '<a href="'. $large_image_url[0] .'" rel="prettyphoto">';
$link_before .= '<div class="mask"></div>';
$link_after = '</a>';
$link_after .= '<div class="image_links">';
$link_after .= '<a href="'. $large_image_url[0] .'" class="zoom" rel="prettyphoto"><i class="icon-search"></i></a>';
$link_after .= '</div>';
// Single | Post
if( get_post_type() == 'post' ){
// Blog | Single - Disable Image Zoom
if( ! mfn_opts_get( 'blog-single-zoom' ) ){
$link_before = '';
$link_after = '';
}
// Blog | Single | Structured data
if( mfn_opts_get( 'mfn-seo-schema-type' ) ){
$link_before .= '<div itemprop="image" itemscope itemtype="https://schema.org/ImageObject">';
$image_url = wp_get_attachment_image_src( get_post_thumbnail_id( $postID ), 'full' );
$link_after_schema = '<meta itemprop="url" content="'. $image_url[0] .'"/>';
$link_after_schema .= '<meta itemprop="width" content="'. mfn_get_attachment_data( $image_url[0], 'width' ) .'"/>';
$link_after_schema .= '<meta itemprop="height" content="'. mfn_get_attachment_data( $image_url[0], 'height' ) .'"/>';
$link_after_schema .= '</div>';
$link_after = $link_after_schema . $link_after;
}
}
} elseif( $type == 'portfolio' ){
// Portfolio --------------------------------------
$external = mfn_opts_get( 'portfolio-external' );
// External Link to Project Page
if( $image_links = ( get_post_meta( get_the_ID(), 'mfn-post-link', true ) ) ){
$image_links_class = 'triple';
} elseif( ! in_array( $external, array( '_self', '_blank' ) ) ){
$image_links_class = 'double';
} else {
$image_links_class = 'single';
}
// Image Link
if( $external == 'popup' ){
// link popup
$link_before = '<a href="'. $large_image_url[0] .'" rel="prettyphoto">';
$link_title = '<a href="'. $large_image_url[0] .'" rel="prettyphoto">';
} elseif( $external == 'disable' ){
// disable details
$link_before = '<a href="'. $large_image_url[0] .'" rel="prettyphoto[portfolio]">';
$link_title = '<a href="'. $large_image_url[0] .'" rel="prettyphoto">';
} elseif( $external && $image_links ){
// link to project website
$image_links_class = 'double';
$link_before = '<a href="'. $image_links .'" target="'. $external .'">';
$link_title = '<a href="'. $image_links .'" target="'. $external .'">';
} else {
// link to project details
$link_before = '<a href="'. get_permalink() .'">';
$link_title = '<a href="'. get_permalink() .'">';
}
$link_before .= '<div class="mask"></div>';
$link_after = '</a>';
// Hover
if( mfn_opts_get( 'portfolio-hover-title' ) ){
// Hover | Title
$link_after .= '<div class="image_links hover-title">';
$link_after .= $link_title . get_the_title() .'</a>';
$link_after .= '</div>';
} elseif( $external != 'disable' ) {
// Hover | Icons
$link_after .= '<div class="image_links '. $image_links_class .'">';
if( ! in_array( $external, array( '_self', '_blank' ) ) ){
$link_after .= '<a href="'. $large_image_url[0] .'" class="zoom" rel="prettyphoto"><i class="icon-search"></i></a>';
}
if( $image_links ){
$link_after .= '<a target="_blank" href="'. $image_links .'" class="external"><i class="icon-forward"></i></a>';
}
$link_after .= '<a href="'. get_permalink() .'" class="link"><i class="icon-link"></i></a>';
$link_after .= '</div>';
}
} else {
// Blog -------------------------------------------
$link_before = '<a href="'. get_permalink() .'">';
$link_before .= '<div class="mask"></div>';
$link_after = '</a>';
$link_after .= '<div class="image_links double">';
$link_after .= '<a href="'. $large_image_url[0] .'" class="zoom" rel="prettyphoto"><i class="icon-search"></i></a>';
$link_after .= '<a href="'. get_permalink() .'" class="link"><i class="icon-link"></i></a>';
$link_after .= '</div>';
}
// Post Format --------------------------------------------------------
$post_format = mfn_post_format( $postID );
// Featured images | available types ---
// no slider if load more
if( $featured_image == 'no_slider' ){
$type = 'portfolio';
}
// images only option
if( $featured_image == 'image' ){
if( ! in_array( $post_format, array( 'quote', 'link', 'image' ) ) ){
$post_format = 'image-only';
}
}
switch( $post_format ){
case 'quote':
case 'link':
// quote - Quote - without image
return false;
break;
case 'image':
// image - Vertical Image
if( has_post_thumbnail() ){
$output .= $link_before;
$output .= get_the_post_thumbnail( $postID, $sizeV, array( 'class'=>'scale-with-grid' ) );
$output .= $link_after;
}
break;
case 'video':
// video - Video
if( $video = get_post_meta( $postID, 'mfn-post-video', true ) ){
if( is_numeric($video) ){
// Vimeo
$output .= '<iframe class="scale-with-grid" src="http'. mfn_ssl() .'://player.vimeo.com/video/'. $video .'" allowFullScreen></iframe>'."\n";
} else {
// YouTube
$output .= '<iframe class="scale-with-grid" src="http'. mfn_ssl() .'://www.youtube.com/embed/'. $video .'?wmode=opaque&rel=0" allowfullscreen></iframe>'."\n";
}
} elseif( get_post_meta( $postID, 'mfn-post-video-mp4', true ) ){
$output .= mfn_jplayer( $postID );
}
break;
case 'image-only':
// images only option
if( has_post_thumbnail() ){
$output .= $link_before;
$output .= get_the_post_thumbnail( $postID, $sizeH, array( 'class'=>'scale-with-grid' ) );
$output .= $link_after;
}
break;
default:
// standard - Text, Horizontal Image, Slider
$rev_slider = get_post_meta( $postID, 'mfn-post-slider', true );
$lay_slider = get_post_meta( $postID, 'mfn-post-slider-layer', true );
if( ( 'portfolio' != $type ) && ( $rev_slider || $lay_slider ) ){
if( $rev_slider ){
// Revolution Slider
$output .= do_shortcode('[rev_slider '. $rev_slider .']');
} elseif( $lay_slider ){
// Layer Slider
$output .= do_shortcode('[layerslider id="'. $lay_slider .'"]');
}
} elseif( has_post_thumbnail() ){
// Image
$output .= $link_before;
$output .= get_the_post_thumbnail( $postID, $sizeH, array( 'class'=>'scale-with-grid' ) );
$output .= $link_after;
}
}
return $output;
}
}
/* ---------------------------------------------------------------------------
* Single Post Navigation | SET query order
* --------------------------------------------------------------------------- */
// previous ----------
if( ! function_exists( 'mfn_filter_previous_post_sort' ) )
{
function mfn_filter_previous_post_sort( $sort ){
if( mfn_get_portfolio_order() == 'ASC' ){
$order = 'DESC';
} else {
$order = 'ASC';
}
$sort = "ORDER BY p.". esc_sql( mfn_get_portfolio_orderby() ) ." ". $order ." LIMIT 1";
return $sort;
}
}
if( ! function_exists( 'mfn_filter_previous_post_where' ) )
{
function mfn_filter_previous_post_where( $where ){
global $post, $wpdb;
$orderby = mfn_get_portfolio_orderby();
$where = preg_replace( "/(.*)p.post_type/", "AND p.post_type", $where );
if( mfn_get_portfolio_order() == 'ASC' ){
$where_pre = $wpdb->prepare( "WHERE p.". esc_sql( $orderby ) ." < %s", $post->$orderby );
} else {
$where_pre = $wpdb->prepare( "WHERE p.". esc_sql( $orderby ) ." > %s", $post->$orderby );
}
$where = $where_pre.' '.$where;
return $where;
}
}
// next ----------
if( ! function_exists( 'mfn_filter_next_post_sort' ) )
{
function mfn_filter_next_post_sort( $sort ){
$sort = "ORDER BY p.". esc_sql( mfn_get_portfolio_orderby() ) ." ". esc_sql( mfn_get_portfolio_order() ) ." LIMIT 1";
return $sort;
}
}
if( ! function_exists( 'mfn_filter_next_post_where' ) )
{
function mfn_filter_next_post_where( $where ){
global $post, $wpdb;
$orderby = mfn_get_portfolio_orderby();
$where = preg_replace( "/(.*)p.post_type/", "AND p.post_type", $where );
if( mfn_get_portfolio_order() == 'ASC' ){
$where_pre = $wpdb->prepare( "WHERE p.". esc_sql( $orderby ) ." > %s", $post->$orderby );
} else {
$where_pre = $wpdb->prepare( "WHERE p.". esc_sql( $orderby ) ." < %s", $post->$orderby );
}
$where = $where_pre.' '.$where;
return $where;
}
}
// helpers ----------
if( ! function_exists( 'mfn_get_portfolio_order' ) )
{
function mfn_get_portfolio_order(){
return mfn_opts_get( 'portfolio-order', 'DESC' );
}
}
if( ! function_exists( 'mfn_get_portfolio_orderby' ) )
{
function mfn_get_portfolio_orderby(){
$orderby = mfn_opts_get( 'portfolio-orderby', 'date' );
switch( $orderby ){
case 'title':
$orderby = 'post_title';
break;
case 'menu_order':
$orderby = 'menu_order';
break;
default:
$orderby = 'post_date';
}
return $orderby;
}
}
// filters ----------
if( ! function_exists( 'mfn_post_navigation_sort' ) )
{
function mfn_post_navigation_sort(){
add_filter( 'get_previous_post_sort', 'mfn_filter_previous_post_sort' );
add_filter( 'get_previous_post_where', 'mfn_filter_previous_post_where' );
add_filter( 'get_next_post_sort', 'mfn_filter_next_post_sort' );
add_filter( 'get_next_post_where', 'mfn_filter_next_post_where' );
}
}
/* ---------------------------------------------------------------------------
* Single Post Navigation | GET header navigation
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_post_navigation_header' ) )
{
function mfn_post_navigation_header( $post_prev, $post_next, $post_home, $translate = array() ){
$style = mfn_opts_get( 'prev-next-style' );
$output = '<div class="column one post-nav '. $style .'">';
if( $style == 'minimal' ){
// minimal -----
if( $post_prev ) $output .= '<a class="prev" href="'. get_permalink( $post_prev ) .'"><i class="icon icon-left-open-big"></i></a>';
if( $post_next ) $output .= '<a class="next" href="'. get_permalink( $post_next ) .'"><i class="icon icon-right-open-big"></i></a>';
if( $post_home ) $output .= '<a class="home" href="'. get_permalink( $post_home ) .'"><svg class="icon" width="22" height="22" xmlns="https://www.w3.org/2000/svg"><path d="M7,2v5H2V2H7 M9,0H0v9h9V0L9,0z"/><path d="M20,2v5h-5V2H20 M22,0h-9v9h9V0L22,0z"/><path d="M7,15v5H2v-5H7 M9,13H0v9h9V13L9,13z"/><path d="M20,15v5h-5v-5H20 M22,13h-9v9h9V13L22,13z"/></svg></a>';
} else {
// default -----
$output .= '<ul class="next-prev-nav">';
if( $post_prev ) $output .= '<li class="prev"><a class="button button_js" href="'. get_permalink( $post_prev ) .'"><span class="button_icon"><i class="icon-left-open"></i></span></a></li>';
if( $post_next ) $output .= '<li class="next"><a class="button button_js" href="'. get_permalink( $post_next ) .'"><span class="button_icon"><i class="icon-right-open"></i></span></a></li>';
$output .= '</ul>';
if( $post_home ) $output .= '<a class="list-nav" href="'. get_permalink( $post_home ) .'"><i class="icon-layout"></i>'. $translate['all'] .'</a>';
}
$output .= '</div>';
return $output;
}
}
/* ---------------------------------------------------------------------------
* Single Post Navigation | GET sticky navigation
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_post_navigation_sticky' ) )
{
function mfn_post_navigation_sticky( $post, $next_prev, $icon ){
$output = '';
if( is_object( $post ) ){
// move this DOM element with JS
$style = mfn_opts_get( 'prev-next-sticky-style', 'default' );
$output .= '<a class="fixed-nav fixed-nav-'. $next_prev .' format-'. get_post_format( $post ) .' style-'. $style .'" href="'. get_permalink( $post ) .'">';
$output .= '<span class="arrow"><i class="'. $icon .'"></i></span>';
$output .= '<div class="photo">';
$output .= get_the_post_thumbnail( $post->ID, 'blog-navi' );
$output .= '</div>';
$output .= '<div class="desc">';
$output .= '<h6>'. get_the_title( $post ) .'</h6>';
$output .= '<span class="date"><i class="icon-clock"></i>'. get_the_date(get_option('date_format'), $post->ID) .'</span>';
$output .= '</div>';
$output .= '</a>';
}
return $output;
}
}
/* ---------------------------------------------------------------------------
* Search | SET add custom fields to search query
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_search' ) )
{
function mfn_search( $search_query ) {
global $wpdb;
if( is_search() && $search_query->is_main_query() && $search_query->is_search() ){
$keyword = get_search_query();
if( ! $keyword ) return false;
// WooCommerce uses default search Query
if( function_exists('is_woocommerce') && is_woocommerce() ){
return false;
}
$keyword = '%' . $wpdb->esc_like( $keyword ) . '%';
// Post Title & Post Content
$post_ids_title = $wpdb->get_col( $wpdb->prepare( "
SELECT DISTINCT ID FROM {$wpdb->posts}
WHERE post_title LIKE '%s'
", $keyword ) );
// Post Title & Post Content
$post_ids_content = $wpdb->get_col( $wpdb->prepare( "
SELECT DISTINCT ID FROM {$wpdb->posts}
WHERE post_content LIKE '%s'
", $keyword ) );
// Custom Fields
$post_ids_meta = $wpdb->get_col( $wpdb->prepare( "
SELECT DISTINCT post_id FROM {$wpdb->postmeta}
WHERE meta_key = 'mfn-page-items-seo'
AND meta_value LIKE '%s'
", $keyword ) );
$post_ids = array_merge( $post_ids_title, $post_ids_content, $post_ids_meta );
if( ! count( $post_ids ) ) return false;
$search_query->set( 's', false );
$search_query->set( 'post__in', $post_ids );
$search_query->set( 'orderby', 'post__in' );
}
}
}
add_action( 'pre_get_posts', 'mfn_search' );
/* ---------------------------------------------------------------------------
* Posts per page & pagination fix
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_option_posts_per_page' ) )
{
function mfn_option_posts_per_page( $value ) {
if ( is_tax( 'portfolio-types' ) ) {
$posts_per_page = mfn_opts_get( 'portfolio-posts', 6, true );
} else {
$posts_per_page = mfn_opts_get( 'blog-posts', 5, true );
}
return $posts_per_page;
}
}
if( ! function_exists( 'mfn_posts_per_page' ) )
{
function mfn_posts_per_page() {
add_filter( 'option_posts_per_page', 'mfn_option_posts_per_page' );
}
}
add_action( 'init', 'mfn_posts_per_page', 0 );
/* ---------------------------------------------------------------------------
* Comments number with text
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_comments_number' ) )
{
function mfn_comments_number() {
$translate['comment'] = mfn_opts_get('translate') ? mfn_opts_get('translate-comment','comment') : __('comment','betheme');
$translate['comments'] = mfn_opts_get('translate') ? mfn_opts_get('translate-comments','comments') : __('comments','betheme');
$translate['comments-off'] = mfn_opts_get('translate') ? mfn_opts_get('translate-comments-off','comments off') : __('comments off','betheme');
$num_comments = get_comments_number(); // get_comments_number returns only a numeric value
if ( comments_open() ) {
if ( $num_comments != 1 ) {
$comments = '<a href="' . get_comments_link() .'">'. $num_comments.'</a> '. $translate['comments'];
} else {
$comments = '<a href="' . get_comments_link() .'">1</a> '. $translate['comment'];
}
} else {
$comments = $translate['comments-off'];
}
return $comments;
}
}
/* ---------------------------------------------------------------------------
* Menu title in selected location
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_get_menu_name' ) )
{
function mfn_get_menu_name($location){
if( ! has_nav_menu($location) ){
return false;
}
$menus = get_nav_menu_locations();
$menu_title = wp_get_nav_menu_object($menus[$location])->name;
return $menu_title;
}
}
/* ---------------------------------------------------------------------------
* GET | WordPress Authors
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_get_authors' ) )
{
function mfn_get_authors(){
$authors = get_users();
if( is_array($authors) ){
foreach( $authors as $ka => $author ){
$remove = true;
if( in_array( 'author', $author->roles ) ) $remove = false;
if( in_array( 'editor', $author->roles ) ) $remove = false;
if( in_array( 'administrator', $author->roles ) ) $remove = false;
if( $remove ) unset( $authors[$ka] );
}
}
return $authors;
}
}
/* ---------------------------------------------------------------------------
* Under Construction
* --------------------------------------------------------------------------- */
if( ! function_exists('mfn_under_construction') )
{
function mfn_under_construction(){
if( mfn_opts_get('construction') ){
if( isset( $_POST['_wpcf7'] ) ){
// do nothing
} else {
if( ! is_user_logged_in() && ! is_admin()
&& basename( $_SERVER['PHP_SELF']) != 'wp-login.php'
&& basename( $_SERVER['PHP_SELF']) != 'wp-cron.php'
&& basename( $_SERVER['PHP_SELF']) != 'xmlrpc.php' ){
get_template_part('under-construction');
exit();
}
}
}
}
}
add_action('init', 'mfn_under_construction', 30);
/* ---------------------------------------------------------------------------
* Set Max Content Width
* --------------------------------------------------------------------------- */
if ( ! isset( $content_width ) ) $content_width = 1200;
/* ---------------------------------------------------------------------------
* WPML | Date Format
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_wpml_date_format' ) )
{
function mfn_wpml_date_format( $format ) {
if (function_exists('icl_translate'))
$format = icl_translate('Formats', $format, $format);
return $format;
}
}
add_filter('option_date_format', 'mfn_wpml_date_format');
/* ---------------------------------------------------------------------------
* WPML | ID
* @param type string – 'post', 'page', 'post_tag' or 'category'
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_wpml_ID' ) )
{
function mfn_wpml_ID( $id, $type = 'page' ) {
if( function_exists('icl_object_id') ) {
return icl_object_id( $id, $type, true );
} else {
return $id;
}
}
}
/* ---------------------------------------------------------------------------
* WPML | Term slug
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_wpml_term_slug' ) )
{
function mfn_wpml_term_slug( $slug, $type, $multi = false ){
if( function_exists( 'icl_object_id' ) ){
if( $multi ){
// multiple categories
$slugs = explode( ',', $slug );
if( is_array( $slugs ) ){
foreach( $slugs as $slug_k => $slug ){
$slug = trim( $slug );
$term = get_term_by( 'slug', $slug, $type );
$term = apply_filters( 'wpml_object_id', $term->term_id, $type, true );
$slug = get_term_by( 'term_id', $term, $type )->slug;
$slugs[$slug_k] = $slug;
}
}
$slug = implode( ',', $slugs );
} else {
// single category
$term = get_term_by( 'slug', $slug, $type );
$term = apply_filters( 'wpml_object_id', $term->term_id, $type, true );
$slug = get_term_by( 'term_id', $term, $type )->slug;
}
}
return $slug;
}
}
/* ---------------------------------------------------------------------------
* Schema | Auto Get Schema Type By Post Type
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_tag_schema' ) )
{
function mfn_tag_schema(){
$schema = 'http'. mfn_ssl() .'://schema.org/';
// Is Woocommerce product
if( function_exists( 'is_product' ) && is_product() ){
$type = false;
} elseif( is_single() && get_post_type() == 'post' ) {
// Single post
$type = "Article";
} elseif( is_author() ) {
// Author page
$type = 'ProfilePage';
} elseif( is_search() ) {
// Search results
$type = 'SearchResultsPage';
} else {
// Default
$type = 'WebPage';
}
if( mfn_opts_get( 'mfn-seo-schema-type' ) && $type ){
echo ' itemscope itemtype="' . $schema . $type . '"';
}
return true;
}
}
/* ---------------------------------------------------------------------------
* Registration | Is hosted
* --------------------------------------------------------------------------- */
function mfn_is_hosted(){
return defined( 'ENVATO_HOSTED_KEY' ) ? true : false;
}
/* ---------------------------------------------------------------------------
* Registration | Is registered
* --------------------------------------------------------------------------- */
function mfn_is_registered(){
return true;
if( mfn_is_hosted() ){
return mfn_is_hosted();
}
return get_site_option( 'betheme_registered' );
}
/* ---------------------------------------------------------------------------
* Registration | Get purchase code
* --------------------------------------------------------------------------- */
function mfn_get_purchase_code(){
if( mfn_is_hosted() ){
return SUBSCRIPTION_CODE;
}
return get_site_option( 'betheme_purchase_code' );
}
/* ---------------------------------------------------------------------------
* Registration | Get purchase code with asterisk
* --------------------------------------------------------------------------- */
function mfn_get_purchase_code_hidden(){
$code = mfn_get_purchase_code();
if( $code ){
$code = substr( $code, 0, 13 );
$code = $code .'-****-****-************';
}
return $code;
}
/* ---------------------------------------------------------------------------
* Registration | Get ish
* --------------------------------------------------------------------------- */
function mfn_get_ish(){
if( ! defined( 'ENVATO_HOSTED_KEY' ) ){
return false;
}
return substr( ENVATO_HOSTED_KEY, 0, 16 );
}
/** --------------------------------------------------------------------------
* DEPRECATED
* --------------------------------------------------------------------------- */
/* ---------------------------------------------------------------------------
* Excerpt
* @deprecated
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_excerpt' ) )
{
function mfn_excerpt($post, $length = 55, $tags_to_keep = '<a><b><h1><h2><h3><h4><h5><h6><strong>', $extra = ' [...]') {
if(is_int($post)) {
$post = get_post($post);
} elseif(!is_object($post)) {
return false;
}
if(has_excerpt($post->ID)) {
$the_excerpt = $post->post_excerpt;
return apply_filters('the_content', $the_excerpt);
} else {
$the_excerpt = $post->post_content;
}
$the_excerpt = strip_shortcodes(strip_tags($the_excerpt, $tags_to_keep));
$the_excerpt = preg_split('/\b/', $the_excerpt, $length * 2+1);
$excerpt_waste = array_pop($the_excerpt);
$the_excerpt = implode($the_excerpt);
if( $excerpt_waste ) $the_excerpt .= $extra;
return apply_filters('the_content', $the_excerpt);
}
}
/* ---------------------------------------------------------------------------
* Get Comment Excerpt
* @deprecated since 12.5
* --------------------------------------------------------------------------- */
if( ! function_exists( 'mfn_get_comment_excerpt' ) )
{
function mfn_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);
}
}