/**
* ThemeREX Framework: Services post type settings
*
* @package themerex
* @since themerex 1.0
*/
// Theme init
if (!function_exists('fivestars_services_theme_setup')) {
add_action( 'fivestars_action_before_init_theme', 'fivestars_services_theme_setup' );
function fivestars_services_theme_setup() {
// Detect current page type, taxonomy and title (for custom post_types use priority < 10 to fire it handles early, than for standard post types)
add_filter('fivestars_filter_get_blog_type', 'fivestars_services_get_blog_type', 9, 2);
add_filter('fivestars_filter_get_blog_title', 'fivestars_services_get_blog_title', 9, 2);
add_filter('fivestars_filter_get_current_taxonomy', 'fivestars_services_get_current_taxonomy', 9, 2);
add_filter('fivestars_filter_is_taxonomy', 'fivestars_services_is_taxonomy', 9, 2);
add_filter('fivestars_filter_get_stream_page_title', 'fivestars_services_get_stream_page_title', 9, 2);
add_filter('fivestars_filter_get_stream_page_link', 'fivestars_services_get_stream_page_link', 9, 2);
add_filter('fivestars_filter_get_stream_page_id', 'fivestars_services_get_stream_page_id', 9, 2);
add_filter('fivestars_filter_query_add_filters', 'fivestars_services_query_add_filters', 9, 2);
add_filter('fivestars_filter_detect_inheritance_key','fivestars_services_detect_inheritance_key', 9, 1);
// Extra column for services lists
if (fivestars_get_theme_option('show_overriden_posts')=='yes') {
add_filter('manage_edit-services_columns', 'fivestars_post_add_options_column', 9);
add_filter('manage_services_posts_custom_column', 'fivestars_post_fill_options_column', 9, 2);
}
// Add shortcodes [trx_services] and [trx_services_item]
add_action('fivestars_action_shortcodes_list', 'fivestars_services_add_shortcodes');
add_action('fivestars_action_shortcodes_list_vc', 'fivestars_services_add_shortcodes_vc');
if (function_exists('fivestars_require_shortcode')) {
fivestars_require_shortcode('trx_services', 'fivestars_sc_services');
fivestars_require_shortcode('trx_services_item', 'fivestars_sc_services_item');
}
if (function_exists('fivestars_require_data')) {
// Prepare type "Team"
fivestars_require_data( 'post_type', 'services', array(
'label' => esc_html__( 'Service item', 'fivestars' ),
'description' => esc_html__( 'Service Description', 'fivestars' ),
'labels' => array(
'name' => _x( 'Services', 'Post Type General Name', 'fivestars' ),
'singular_name' => _x( 'Service item', 'Post Type Singular Name', 'fivestars' ),
'menu_name' => esc_html__( 'Services', 'fivestars' ),
'parent_item_colon' => esc_html__( 'Parent Item:', 'fivestars' ),
'all_items' => esc_html__( 'All Services', 'fivestars' ),
'view_item' => esc_html__( 'View Item', 'fivestars' ),
'add_new_item' => esc_html__( 'Add New Service', 'fivestars' ),
'add_new' => esc_html__( 'Add New', 'fivestars' ),
'edit_item' => esc_html__( 'Edit Item', 'fivestars' ),
'update_item' => esc_html__( 'Update Item', 'fivestars' ),
'search_items' => esc_html__( 'Search Item', 'fivestars' ),
'not_found' => esc_html__( 'Not found', 'fivestars' ),
'not_found_in_trash' => esc_html__( 'Not found in Trash', 'fivestars' ),
),
'supports' => array( 'title', 'excerpt', 'editor', 'author', 'thumbnail', 'comments', 'custom-fields'),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'menu_icon' => 'dashicons-info',
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 25,
'can_export' => true,
'has_archive' => false,
'exclude_from_search' => false,
'publicly_queryable' => true,
'query_var' => true,
'capability_type' => 'page',
'rewrite' => true
)
);
// Prepare taxonomy for team
fivestars_require_data( 'taxonomy', 'services_group', array(
'post_type' => array( 'services' ),
'hierarchical' => true,
'labels' => array(
'name' => _x( 'Services Group', 'taxonomy general name', 'fivestars' ),
'singular_name' => _x( 'Group', 'taxonomy singular name', 'fivestars' ),
'search_items' => esc_html__( 'Search Groups', 'fivestars' ),
'all_items' => esc_html__( 'All Groups', 'fivestars' ),
'parent_item' => esc_html__( 'Parent Group', 'fivestars' ),
'parent_item_colon' => esc_html__( 'Parent Group:', 'fivestars' ),
'edit_item' => esc_html__( 'Edit Group', 'fivestars' ),
'update_item' => esc_html__( 'Update Group', 'fivestars' ),
'add_new_item' => esc_html__( 'Add New Group', 'fivestars' ),
'new_item_name' => esc_html__( 'New Group Name', 'fivestars' ),
'menu_name' => esc_html__( 'Services Group', 'fivestars' ),
),
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'services_group' ),
)
);
}
}
}
if ( !function_exists( 'fivestars_services_settings_theme_setup2' ) ) {
add_action( 'fivestars_action_before_init_theme', 'fivestars_services_settings_theme_setup2', 3 );
function fivestars_services_settings_theme_setup2() {
// Add post type 'services' and taxonomy 'services_group' into theme inheritance list
fivestars_add_theme_inheritance( array('services' => array(
'stream_template' => 'blog-services',
'single_template' => 'single-services',
'taxonomy' => array('services_group'),
'taxonomy_tags' => array(),
'post_type' => array('services'),
'override' => 'page'
) )
);
}
}
// Return true, if current page is services page
if ( !function_exists( 'fivestars_is_services_page' ) ) {
function fivestars_is_services_page() {
return get_query_var('post_type')=='services' || is_tax('services_group') || (is_page() && fivestars_get_template_page_id('blog-services')==get_the_ID());
}
}
// Filter to detect current page inheritance key
if ( !function_exists( 'fivestars_services_detect_inheritance_key' ) ) {
//add_filter('fivestars_filter_detect_inheritance_key', 'fivestars_services_detect_inheritance_key', 9, 1);
function fivestars_services_detect_inheritance_key($key) {
if (!empty($key)) return $key;
return fivestars_is_services_page() ? 'services' : '';
}
}
// Filter to detect current page slug
if ( !function_exists( 'fivestars_services_get_blog_type' ) ) {
//add_filter('fivestars_filter_get_blog_type', 'fivestars_services_get_blog_type', 9, 2);
function fivestars_services_get_blog_type($page, $query=null) {
if (!empty($page)) return $page;
if ($query && $query->is_tax('services_group') || is_tax('services_group'))
$page = 'services_category';
else if ($query && $query->get('post_type')=='services' || get_query_var('post_type')=='services')
$page = $query && $query->is_single() || is_single() ? 'services_item' : 'services';
return $page;
}
}
// Filter to detect current page title
if ( !function_exists( 'fivestars_services_get_blog_title' ) ) {
//add_filter('fivestars_filter_get_blog_title', 'fivestars_services_get_blog_title', 9, 2);
function fivestars_services_get_blog_title($title, $page) {
if (!empty($title)) return $title;
if ( fivestars_strpos($page, 'services')!==false ) {
if ( $page == 'services_category' ) {
$term = get_term_by( 'slug', get_query_var( 'services_group' ), 'services_group', OBJECT);
$title = $term->name;
} else if ( $page == 'services_item' ) {
$title = fivestars_get_post_title();
} else {
$title = esc_html__('All services', 'fivestars');
}
}
return $title;
}
}
// Filter to detect stream page title
if ( !function_exists( 'fivestars_services_get_stream_page_title' ) ) {
//add_filter('fivestars_filter_get_stream_page_title', 'fivestars_services_get_stream_page_title', 9, 2);
function fivestars_services_get_stream_page_title($title, $page) {
if (!empty($title)) return $title;
if (fivestars_strpos($page, 'services')!==false) {
if (($page_id = fivestars_services_get_stream_page_id(0, $page=='services' ? 'blog-services' : $page)) > 0)
$title = fivestars_get_post_title($page_id);
else
$title = esc_html__('All services', 'fivestars');
}
return $title;
}
}
// Filter to detect stream page ID
if ( !function_exists( 'fivestars_services_get_stream_page_id' ) ) {
//add_filter('fivestars_filter_get_stream_page_id', 'fivestars_services_get_stream_page_id', 9, 2);
function fivestars_services_get_stream_page_id($id, $page) {
if (!empty($id)) return $id;
if (fivestars_strpos($page, 'services')!==false) $id = fivestars_get_template_page_id('blog-services');
return $id;
}
}
// Filter to detect stream page URL
if ( !function_exists( 'fivestars_services_get_stream_page_link' ) ) {
//add_filter('fivestars_filter_get_stream_page_link', 'fivestars_services_get_stream_page_link', 9, 2);
function fivestars_services_get_stream_page_link($url, $page) {
if (!empty($url)) return $url;
if (fivestars_strpos($page, 'services')!==false) {
$id = fivestars_get_template_page_id('blog-services');
if ($id) $url = get_permalink($id);
}
return $url;
}
}
// Filter to detect current taxonomy
if ( !function_exists( 'fivestars_services_get_current_taxonomy' ) ) {
//add_filter('fivestars_filter_get_current_taxonomy', 'fivestars_services_get_current_taxonomy', 9, 2);
function fivestars_services_get_current_taxonomy($tax, $page) {
if (!empty($tax)) return $tax;
if ( fivestars_strpos($page, 'services')!==false ) {
$tax = 'services_group';
}
return $tax;
}
}
// Return taxonomy name (slug) if current page is this taxonomy page
if ( !function_exists( 'fivestars_services_is_taxonomy' ) ) {
//add_filter('fivestars_filter_is_taxonomy', 'fivestars_services_is_taxonomy', 9, 2);
function fivestars_services_is_taxonomy($tax, $query=null) {
if (!empty($tax))
return $tax;
else
return $query && $query->get('services_group')!='' || is_tax('services_group') ? 'services_group' : '';
}
}
// Add custom post type and/or taxonomies arguments to the query
if ( !function_exists( 'fivestars_services_query_add_filters' ) ) {
//add_filter('fivestars_filter_query_add_filters', 'fivestars_services_query_add_filters', 9, 2);
function fivestars_services_query_add_filters($args, $filter) {
if ($filter == 'services') {
$args['post_type'] = 'services';
}
return $args;
}
}
// ---------------------------------- [trx_services] ---------------------------------------
/*
[trx_services id="unique_id" columns="4" count="4" style="services-1|services-2|..." title="Block title" subtitle="xxx" description="xxxxxx"]
[trx_services_item icon="url" title="Item title" description="Item description" link="url" link_caption="Link text"]
[trx_services_item icon="url" title="Item title" description="Item description" link="url" link_caption="Link text"]
[/trx_services]
*/
if ( !function_exists( 'fivestars_sc_services' ) ) {
//fivestars_require_shortcode('trx_services', 'fivestars_sc_services');
function fivestars_sc_services($atts, $content=null){
if (fivestars_in_shortcode_blogger()) return '';
extract(fivestars_html_decode(shortcode_atts(array(
// Individual params
"style" => "services-5",
"columns" => 4,
"slider" => "no",
"controls" => "no",
"interval" => "",
"autoheight" => "no",
"align" => "",
"custom" => "no",
"type" => "icons", // icons | images
"ids" => "",
"cat" => "",
"count" => 4,
"offset" => "",
"orderby" => "date",
"order" => "desc",
"readmore" => esc_html__('Learn more', 'fivestars'),
"title" => "",
"subtitle" => "",
"description" => "",
"link_caption" => esc_html__('Learn more', 'fivestars'),
"link" => '',
// Common params
"id" => "",
"class" => "",
"animation" => "",
"css" => "",
"width" => "",
"height" => "",
"top" => "",
"bottom" => "",
"left" => "",
"right" => ""
), $atts)));
if (empty($id)) $id = "sc_services_".str_replace('.', '', mt_rand());
if (empty($width)) $width = "100%";
if (!empty($height) && fivestars_param_is_on($autoheight)) $autoheight = "no";
if (empty($interval)) $interval = mt_rand(5000, 10000);
$ms = fivestars_get_css_position_from_values($top, $right, $bottom, $left);
$ws = fivestars_get_css_position_from_values('', '', '', '', $width);
$hs = fivestars_get_css_position_from_values('', '', '', '', '', $height);
$css .= ($ms) . ($hs) . ($ws);
$count = max(1, (int) $count);
$columns = max(1, min(12, (int) $columns));
if (fivestars_param_is_off($custom) && $count < $columns) $columns = $count;
global $FIVESTARS_GLOBALS;
$FIVESTARS_GLOBALS['sc_services_id'] = $id;
$FIVESTARS_GLOBALS['sc_services_style'] = $style;
$FIVESTARS_GLOBALS['sc_services_columns'] = $columns;
$FIVESTARS_GLOBALS['sc_services_counter'] = 0;
$FIVESTARS_GLOBALS['sc_services_slider'] = $slider;
$FIVESTARS_GLOBALS['sc_services_css_wh'] = $ws . $hs;
$FIVESTARS_GLOBALS['sc_services_readmore'] = $readmore;
$output = '
0 ? ' data-interval="'.esc_attr($interval).'"' : '')
. ($columns > 1 ? ' data-slides-per-view="' . esc_attr($columns) . '"' : '')
. (!fivestars_param_is_off($animation) ? ' data-animation="'.esc_attr(fivestars_get_animation_classes($animation)).'"' : '')
. '>'
. (!empty($subtitle) ? '
' . trim(fivestars_strmacros($subtitle)) . ' ' : '')
. (!empty($title) ? '
' . trim(fivestars_strmacros($title)) . ' ' : '')
. (!empty($description) ? '
' . trim(fivestars_strmacros($description)) . '
' : '')
. (fivestars_param_is_on($slider)
? '
'
: ($columns > 1
? '
'
: '')
);
$content = do_shortcode($content);
if (fivestars_param_is_on($custom) && $content) {
$output .= $content;
} else {
global $post;
if (!empty($ids)) {
$posts = explode(',', $ids);
$count = count($posts);
}
$args = array(
'post_type' => 'services',
'post_status' => 'publish',
'posts_per_page' => $count,
'ignore_sticky_posts' => true,
'order' => $order=='asc' ? 'asc' : 'desc',
'readmore' => $readmore
);
if ($offset > 0 && empty($ids)) {
$args['offset'] = $offset;
}
$args = fivestars_query_add_sort_order($args, $orderby, $order);
$args = fivestars_query_add_posts_and_cats($args, $ids, 'services', $cat, 'services_group');
$query = new WP_Query( $args );
$post_number = 0;
while ( $query->have_posts() ) {
$query->the_post();
$post_number++;
$args = array(
'layout' => $style,
'show' => false,
'number' => $post_number,
'posts_on_page' => ($count > 0 ? $count : $query->found_posts),
"descr" => fivestars_get_custom_option('post_excerpt_maxlength'.($columns > 1 ? '_masonry' : '')),
"orderby" => $orderby,
'content' => false,
'terms_list' => false,
'readmore' => $readmore,
'tag_type' => $type,
'columns_count' => $columns,
'slider' => $slider,
'tag_id' => $id ? $id . '_' . $post_number : '',
'tag_class' => '',
'tag_animation' => '',
'tag_css' => '',
'tag_css_wh' => $ws . $hs
);
$output .= fivestars_show_post_layout($args);
}
wp_reset_postdata();
}
if (fivestars_param_is_on($slider)) {
$output .= '
'
. '
'
. '';
} else if ($columns > 1) {
$output .= '
';
}
$output .= (!empty($link) ? '
'.do_shortcode('[trx_button link="'.esc_url($link).'" icon="icon-right"]'.esc_html($link_caption).'[/trx_button]').'
' : '')
. '
';
return apply_filters('fivestars_shortcode_output', $output, 'trx_services', $atts, $content);
}
if (function_exists('fivestars_require_shortcode')) fivestars_require_shortcode('trx_services', 'fivestars_sc_services');
}
//fivestars_require_shortcode('trx_services_item', 'fivestars_sc_services_item');
if ( !function_exists( 'fivestars_sc_services_item' ) ) {
function fivestars_sc_services_item($atts, $content=null) {
if (fivestars_in_shortcode_blogger()) return '';
extract(fivestars_html_decode(shortcode_atts( array(
// Individual params
"icon" => "",
"image" => "",
"title" => "",
"link" => "",
"readmore" => "(none)",
// Common params
"id" => "",
"class" => "",
"animation" => "",
"css" => ""
), $atts)));
global $FIVESTARS_GLOBALS;
$FIVESTARS_GLOBALS['sc_services_counter']++;
$id = $id ? $id : ($FIVESTARS_GLOBALS['sc_services_id'] ? $FIVESTARS_GLOBALS['sc_services_id'] . '_' . $FIVESTARS_GLOBALS['sc_services_counter'] : '');
$descr = trim(chop(do_shortcode($content)));
$readmore = $readmore=='(none)' ? $FIVESTARS_GLOBALS['sc_services_readmore'] : $readmore;
$type = '';
if (!empty($icon)) {
$type = 'icons';
} else if (!empty($image)) {
$type = 'images';
if ($image > 0) {
$attach = wp_get_attachment_image_src( $image, 'full' );
if (isset($attach[0]) && $attach[0]!='')
$image = $attach[0];
}
$thumb_sizes = fivestars_get_thumb_sizes(array('layout' => $FIVESTARS_GLOBALS['sc_services_style']));
$image = fivestars_get_resized_image_tag($image, $thumb_sizes['w'], $thumb_sizes['h']);
}
$post_data = array(
'post_title' => $title,
'post_excerpt' => $descr,
'post_thumb' => $image,
'post_icon' => $icon,
'post_link' => $link
);
$args = array(
'layout' => $FIVESTARS_GLOBALS['sc_services_style'],
'number' => $FIVESTARS_GLOBALS['sc_services_counter'],
'columns_count' => $FIVESTARS_GLOBALS['sc_services_columns'],
'slider' => $FIVESTARS_GLOBALS['sc_services_slider'],
'show' => false,
'descr' => 0,
'readmore' => $readmore,
'tag_type' => $type,
'tag_id' => $id,
'tag_class' => $class,
'tag_animation' => $animation,
'tag_css' => $css,
'tag_css_wh' => $FIVESTARS_GLOBALS['sc_services_css_wh']
);
$output = fivestars_show_post_layout($args, $post_data);
return apply_filters('fivestars_shortcode_output', $output, 'trx_services_item', $atts, $content);
}
if (function_exists('fivestars_require_shortcode')) fivestars_require_shortcode('trx_services_item', 'fivestars_sc_services_item');
}
// ---------------------------------- [/trx_services] ---------------------------------------
// Add [trx_services] and [trx_services_item] in the shortcodes list
if (!function_exists('fivestars_services_add_shortcodes')) {
//add_filter('fivestars_action_shortcodes_list', 'fivestars_services_add_shortcodes');
function fivestars_services_add_shortcodes() {
global $FIVESTARS_GLOBALS;
if (isset($FIVESTARS_GLOBALS['shortcodes'])) {
$services_groups = fivestars_get_list_terms(false, 'services_group');
$services_styles = fivestars_get_list_templates('services');
$controls = fivestars_get_list_slider_controls();
fivestars_array_insert_after($FIVESTARS_GLOBALS['shortcodes'], 'trx_section', array(
// Services
"trx_services" => array(
"title" => esc_html__("Services", "fivestars"),
"desc" => esc_html__("Insert services list in your page (post)", "fivestars"),
"decorate" => true,
"container" => false,
"params" => array(
"title" => array(
"title" => esc_html__("Title", "fivestars"),
"desc" => esc_html__("Title for the block", "fivestars"),
"value" => "",
"type" => "text"
),
"subtitle" => array(
"title" => esc_html__("Subtitle", "fivestars"),
"desc" => esc_html__("Subtitle for the block", "fivestars"),
"value" => "",
"type" => "text"
),
"description" => array(
"title" => esc_html__("Description", "fivestars"),
"desc" => esc_html__("Short description for the block", "fivestars"),
"value" => "",
"type" => "textarea"
),
"style" => array(
"title" => esc_html__("Services style", "fivestars"),
"desc" => esc_html__("Select style to display services list", "fivestars"),
"value" => "",
"type" => "select",
"options" => $services_styles
),
"type" => array(
"title" => esc_html__("Icon's type", "fivestars"),
"desc" => esc_html__("Select type of icons: font icon or image", "fivestars"),
"value" => "icons",
"type" => "checklist",
"dir" => "horizontal",
"options" => array(
'icons' => esc_html__('Icons', 'fivestars'),
'images' => esc_html__('Images', 'fivestars')
)
),
"columns" => array(
"title" => esc_html__("Columns", "fivestars"),
"desc" => esc_html__("How many columns use to show services list", "fivestars"),
"value" => 4,
"min" => 2,
"max" => 6,
"step" => 1,
"type" => "spinner"
),
"slider" => array(
"title" => esc_html__("Slider", "fivestars"),
"desc" => esc_html__("Use slider to show services", "fivestars"),
"value" => "no",
"type" => "switch",
"options" => $FIVESTARS_GLOBALS['sc_params']['yes_no']
),
"controls" => array(
"title" => esc_html__("Controls", "fivestars"),
"desc" => esc_html__("Slider controls style and position", "fivestars"),
"dependency" => array(
'slider' => array('yes')
),
"divider" => true,
"value" => "",
"type" => "checklist",
"dir" => "horizontal",
"options" => $controls
),
"interval" => array(
"title" => esc_html__("Slides change interval", "fivestars"),
"desc" => esc_html__("Slides change interval (in milliseconds: 1000ms = 1s)", "fivestars"),
"dependency" => array(
'slider' => array('yes')
),
"value" => 7000,
"step" => 500,
"min" => 0,
"type" => "spinner"
),
"autoheight" => array(
"title" => esc_html__("Autoheight", "fivestars"),
"desc" => esc_html__("Change whole slider's height (make it equal current slide's height)", "fivestars"),
"dependency" => array(
'slider' => array('yes')
),
"value" => "yes",
"type" => "switch",
"options" => $FIVESTARS_GLOBALS['sc_params']['yes_no']
),
"align" => array(
"title" => esc_html__("Alignment", "fivestars"),
"desc" => esc_html__("Alignment of the services block", "fivestars"),
"divider" => true,
"value" => "",
"type" => "checklist",
"dir" => "horizontal",
"options" => $FIVESTARS_GLOBALS['sc_params']['align']
),
"custom" => array(
"title" => esc_html__("Custom", "fivestars"),
"desc" => esc_html__("Allow get services items from inner shortcodes (custom) or get it from specified group (cat)", "fivestars"),
"divider" => true,
"value" => "no",
"type" => "switch",
"options" => $FIVESTARS_GLOBALS['sc_params']['yes_no']
),
"cat" => array(
"title" => esc_html__("Categories", "fivestars"),
"desc" => esc_html__("Select categories (groups) to show services list. If empty - select services from any category (group) or from IDs list", "fivestars"),
"dependency" => array(
'custom' => array('no')
),
"divider" => true,
"value" => "",
"type" => "select",
"style" => "list",
"multiple" => true,
"options" => fivestars_array_merge(array(0 => esc_html__('- Select category -', 'fivestars')), $services_groups)
),
"count" => array(
"title" => esc_html__("Number of posts", "fivestars"),
"desc" => esc_html__("How many posts will be displayed? If used IDs - this parameter ignored.", "fivestars"),
"dependency" => array(
'custom' => array('no')
),
"value" => 3,
"min" => 1,
"max" => 100,
"type" => "spinner"
),
"offset" => array(
"title" => esc_html__("Offset before select posts", "fivestars"),
"desc" => esc_html__("Skip posts before select next part.", "fivestars"),
"dependency" => array(
'custom' => array('no')
),
"value" => 0,
"min" => 0,
"type" => "spinner"
),
"orderby" => array(
"title" => esc_html__("Post order by", "fivestars"),
"desc" => esc_html__("Select desired posts sorting method", "fivestars"),
"dependency" => array(
'custom' => array('no')
),
"value" => "title",
"type" => "select",
"options" => $FIVESTARS_GLOBALS['sc_params']['sorting']
),
"order" => array(
"title" => esc_html__("Post order", "fivestars"),
"desc" => esc_html__("Select desired posts order", "fivestars"),
"dependency" => array(
'custom' => array('no')
),
"value" => "asc",
"type" => "switch",
"size" => "big",
"options" => $FIVESTARS_GLOBALS['sc_params']['ordering']
),
"ids" => array(
"title" => esc_html__("Post IDs list", "fivestars"),
"desc" => esc_html__("Comma separated list of posts ID. If set - parameters above are ignored!", "fivestars"),
"dependency" => array(
'custom' => array('no')
),
"value" => "",
"type" => "text"
),
"readmore" => array(
"title" => esc_html__("Read more", "fivestars"),
"desc" => esc_html__("Caption for the Read more link (if empty - link not showed)", "fivestars"),
"value" => "",
"type" => "text"
),
"link" => array(
"title" => esc_html__("Button URL", "fivestars"),
"desc" => esc_html__("Link URL for the button at the bottom of the block", "fivestars"),
"value" => "",
"type" => "text"
),
"link_caption" => array(
"title" => esc_html__("Button caption", "fivestars"),
"desc" => esc_html__("Caption for the button at the bottom of the block", "fivestars"),
"value" => "",
"type" => "text"
),
"width" => fivestars_shortcodes_width(),
"height" => fivestars_shortcodes_height(),
"top" => $FIVESTARS_GLOBALS['sc_params']['top'],
"bottom" => $FIVESTARS_GLOBALS['sc_params']['bottom'],
"left" => $FIVESTARS_GLOBALS['sc_params']['left'],
"right" => $FIVESTARS_GLOBALS['sc_params']['right'],
"id" => $FIVESTARS_GLOBALS['sc_params']['id'],
"class" => $FIVESTARS_GLOBALS['sc_params']['class'],
"animation" => $FIVESTARS_GLOBALS['sc_params']['animation'],
"css" => $FIVESTARS_GLOBALS['sc_params']['css']
),
"children" => array(
"name" => "trx_services_item",
"title" => esc_html__("Service item", "fivestars"),
"desc" => esc_html__("Service item", "fivestars"),
"container" => true,
"params" => array(
"title" => array(
"title" => esc_html__("Title", "fivestars"),
"desc" => esc_html__("Item's title", "fivestars"),
"divider" => true,
"value" => "",
"type" => "text"
),
"icon" => array(
"title" => esc_html__("Item's icon", 'fivestars'),
"desc" => esc_html__('Select icon for the item from Fontello icons set', 'fivestars'),
"value" => "",
"type" => "icons",
"options" => $FIVESTARS_GLOBALS['sc_params']['icons']
),
"image" => array(
"title" => esc_html__("Item's image", "fivestars"),
"desc" => esc_html__("Item's image (if icon not selected)", "fivestars"),
"dependency" => array(
'icon' => array('is_empty', 'none')
),
"value" => "",
"readonly" => false,
"type" => "media"
),
"link" => array(
"title" => esc_html__("Link", "fivestars"),
"desc" => esc_html__("Link on service's item page", "fivestars"),
"divider" => true,
"value" => "",
"type" => "text"
),
"readmore" => array(
"title" => esc_html__("Read more", "fivestars"),
"desc" => esc_html__("Caption for the Read more link (if empty - link not showed)", "fivestars"),
"value" => "",
"type" => "text"
),
"_content_" => array(
"title" => esc_html__("Description", "fivestars"),
"desc" => esc_html__("Item's short description", "fivestars"),
"divider" => true,
"rows" => 4,
"value" => "",
"type" => "textarea"
),
"id" => $FIVESTARS_GLOBALS['sc_params']['id'],
"class" => $FIVESTARS_GLOBALS['sc_params']['class'],
"animation" => $FIVESTARS_GLOBALS['sc_params']['animation'],
"css" => $FIVESTARS_GLOBALS['sc_params']['css']
)
)
)
));
}
}
}
// Add [trx_services] and [trx_services_item] in the VC shortcodes list
if (!function_exists('fivestars_services_add_shortcodes_vc')) {
//add_filter('fivestars_action_shortcodes_list_vc', 'fivestars_services_add_shortcodes_vc');
function fivestars_services_add_shortcodes_vc() {
global $FIVESTARS_GLOBALS;
$services_groups = fivestars_get_list_terms(false, 'services_group');
$services_styles = fivestars_get_list_templates('services');
$controls = fivestars_get_list_slider_controls();
// Services
vc_map( array(
"base" => "trx_services",
"name" => esc_html__("Services", "fivestars"),
"description" => esc_html__("Insert services list", "fivestars"),
"category" => esc_html__('Content', 'js_composer'),
"icon" => 'icon_trx_services',
"class" => "trx_sc_columns trx_sc_services",
"content_element" => true,
"is_container" => true,
"show_settings_on_create" => true,
"as_parent" => array('only' => 'trx_services_item'),
"params" => array(
array(
"param_name" => "style",
"heading" => esc_html__("Services style", "fivestars"),
"description" => esc_html__("Select style to display services list", "fivestars"),
"class" => "",
"admin_label" => true,
"std" => "",
"value" => array_flip($services_styles),
"type" => "dropdown"
),
array(
"param_name" => "type",
"heading" => esc_html__("Icon's type", "fivestars"),
"description" => esc_html__("Select type of icons: font icon or image", "fivestars"),
"class" => "",
"admin_label" => true,
"value" => array(
esc_html__('Icons', 'fivestars') => 'icons',
esc_html__('Images', 'fivestars') => 'images'
),
"type" => "dropdown"
),
array(
"param_name" => "columns",
"heading" => esc_html__("Columns", "fivestars"),
"description" => esc_html__("How many columns use to show services list", "fivestars"),
"admin_label" => true,
"class" => "",
"value" => "4",
"type" => "textfield"
),
array(
"param_name" => "slider",
"heading" => esc_html__("Slider", "fivestars"),
"description" => esc_html__("Use slider to show services", "fivestars"),
"admin_label" => true,
"group" => esc_html__('Slider', 'fivestars'),
"class" => "",
"std" => "no",
"value" => array_flip($FIVESTARS_GLOBALS['sc_params']['yes_no']),
"type" => "dropdown"
),
array(
"param_name" => "controls",
"heading" => esc_html__("Controls", "fivestars"),
"description" => esc_html__("Slider controls style and position", "fivestars"),
"admin_label" => true,
"group" => esc_html__('Slider', 'fivestars'),
'dependency' => array(
'element' => 'slider',
'value' => 'yes'
),
"class" => "",
"std" => "no",
"value" => array_flip($controls),
"type" => "dropdown"
),
array(
"param_name" => "interval",
"heading" => esc_html__("Slides change interval", "fivestars"),
"description" => esc_html__("Slides change interval (in milliseconds: 1000ms = 1s)", "fivestars"),
"group" => esc_html__('Slider', 'fivestars'),
'dependency' => array(
'element' => 'slider',
'value' => 'yes'
),
"class" => "",
"value" => "7000",
"type" => "textfield"
),
array(
"param_name" => "autoheight",
"heading" => esc_html__("Autoheight", "fivestars"),
"description" => esc_html__("Change whole slider's height (make it equal current slide's height)", "fivestars"),
"group" => esc_html__('Slider', 'fivestars'),
'dependency' => array(
'element' => 'slider',
'value' => 'yes'
),
"class" => "",
"value" => array("Autoheight" => "yes" ),
"type" => "checkbox"
),
array(
"param_name" => "align",
"heading" => esc_html__("Alignment", "fivestars"),
"description" => esc_html__("Alignment of the services block", "fivestars"),
"class" => "",
"value" => array_flip($FIVESTARS_GLOBALS['sc_params']['align']),
"type" => "dropdown"
),
array(
"param_name" => "custom",
"heading" => esc_html__("Custom", "fivestars"),
"description" => esc_html__("Allow get services from inner shortcodes (custom) or get it from specified group (cat)", "fivestars"),
"class" => "",
"value" => array("Custom services" => "yes" ),
"type" => "checkbox"
),
array(
"param_name" => "title",
"heading" => esc_html__("Title", "fivestars"),
"description" => esc_html__("Title for the block", "fivestars"),
"admin_label" => true,
"group" => esc_html__('Captions', 'fivestars'),
"class" => "",
"value" => "",
"type" => "textfield"
),
array(
"param_name" => "subtitle",
"heading" => esc_html__("Subtitle", "fivestars"),
"description" => esc_html__("Subtitle for the block", "fivestars"),
"group" => esc_html__('Captions', 'fivestars'),
"class" => "",
"value" => "",
"type" => "textfield"
),
array(
"param_name" => "description",
"heading" => esc_html__("Description", "fivestars"),
"description" => esc_html__("Description for the block", "fivestars"),
"group" => esc_html__('Captions', 'fivestars'),
"class" => "",
"value" => "",
"type" => "textarea"
),
array(
"param_name" => "cat",
"heading" => esc_html__("Categories", "fivestars"),
"description" => esc_html__("Select category to show services. If empty - select services from any category (group) or from IDs list", "fivestars"),
"group" => esc_html__('Query', 'fivestars'),
'dependency' => array(
'element' => 'custom',
'is_empty' => true
),
"class" => "",
"value" => array_flip(fivestars_array_merge(array(0 => esc_html__('- Select category -', 'fivestars')), $services_groups)),
"type" => "dropdown"
),
array(
"param_name" => "count",
"heading" => esc_html__("Number of posts", "fivestars"),
"description" => esc_html__("How many posts will be displayed? If used IDs - this parameter ignored.", "fivestars"),
"admin_label" => true,
"group" => esc_html__('Query', 'fivestars'),
'dependency' => array(
'element' => 'custom',
'is_empty' => true
),
"class" => "",
"value" => "3",
"type" => "textfield"
),
array(
"param_name" => "offset",
"heading" => esc_html__("Offset before select posts", "fivestars"),
"description" => esc_html__("Skip posts before select next part.", "fivestars"),
"group" => esc_html__('Query', 'fivestars'),
'dependency' => array(
'element' => 'custom',
'is_empty' => true
),
"class" => "",
"value" => "0",
"type" => "textfield"
),
array(
"param_name" => "orderby",
"heading" => esc_html__("Post sorting", "fivestars"),
"description" => esc_html__("Select desired posts sorting method", "fivestars"),
"group" => esc_html__('Query', 'fivestars'),
'dependency' => array(
'element' => 'custom',
'is_empty' => true
),
"class" => "",
"value" => array_flip($FIVESTARS_GLOBALS['sc_params']['sorting']),
"type" => "dropdown"
),
array(
"param_name" => "order",
"heading" => esc_html__("Post order", "fivestars"),
"description" => esc_html__("Select desired posts order", "fivestars"),
"group" => esc_html__('Query', 'fivestars'),
'dependency' => array(
'element' => 'custom',
'is_empty' => true
),
"class" => "",
"value" => array_flip($FIVESTARS_GLOBALS['sc_params']['ordering']),
"type" => "dropdown"
),
array(
"param_name" => "ids",
"heading" => esc_html__("Team member's IDs list", "fivestars"),
"description" => esc_html__("Comma separated list of team members's ID. If set - parameters above (category, count, order, etc.) are ignored!", "fivestars"),
"group" => esc_html__('Query', 'fivestars'),
'dependency' => array(
'element' => 'custom',
'is_empty' => true
),
"class" => "",
"value" => "",
"type" => "textfield"
),
array(
"param_name" => "readmore",
"heading" => esc_html__("Read more", "fivestars"),
"description" => esc_html__("Caption for the Read more link (if empty - link not showed)", "fivestars"),
"admin_label" => true,
"group" => esc_html__('Captions', 'fivestars'),
"class" => "",
"value" => "",
"type" => "textfield"
),
array(
"param_name" => "link",
"heading" => esc_html__("Button URL", "fivestars"),
"description" => esc_html__("Link URL for the button at the bottom of the block", "fivestars"),
"group" => esc_html__('Captions', 'fivestars'),
"class" => "",
"value" => "",
"type" => "textfield"
),
array(
"param_name" => "link_caption",
"heading" => esc_html__("Button caption", "fivestars"),
"description" => esc_html__("Caption for the button at the bottom of the block", "fivestars"),
"group" => esc_html__('Captions', 'fivestars'),
"class" => "",
"value" => "",
"type" => "textfield"
),
fivestars_vc_width(),
fivestars_vc_height(),
$FIVESTARS_GLOBALS['vc_params']['margin_top'],
$FIVESTARS_GLOBALS['vc_params']['margin_bottom'],
$FIVESTARS_GLOBALS['vc_params']['margin_left'],
$FIVESTARS_GLOBALS['vc_params']['margin_right'],
$FIVESTARS_GLOBALS['vc_params']['id'],
$FIVESTARS_GLOBALS['vc_params']['class'],
$FIVESTARS_GLOBALS['vc_params']['animation'],
$FIVESTARS_GLOBALS['vc_params']['css']
),
'default_content' => '
[trx_services_item title="' . esc_html__( 'Service item 1', 'fivestars' ) . '"][/trx_services_item]
[trx_services_item title="' . esc_html__( 'Service item 2', 'fivestars' ) . '"][/trx_services_item]
[trx_services_item title="' . esc_html__( 'Service item 3', 'fivestars' ) . '"][/trx_services_item]
[trx_services_item title="' . esc_html__( 'Service item 4', 'fivestars' ) . '"][/trx_services_item]
',
'js_view' => 'VcTrxColumnsView'
) );
vc_map( array(
"base" => "trx_services_item",
"name" => esc_html__("Services item", "fivestars"),
"description" => esc_html__("Custom services item - all data pull out from shortcode parameters", "fivestars"),
"show_settings_on_create" => true,
"class" => "trx_sc_collection trx_sc_column_item trx_sc_services_item",
"content_element" => true,
"is_container" => true,
'icon' => 'icon_trx_services_item',
"as_child" => array('only' => 'trx_services'),
"as_parent" => array('except' => 'trx_services'),
"params" => array(
array(
"param_name" => "title",
"heading" => esc_html__("Title", "fivestars"),
"description" => esc_html__("Item's title", "fivestars"),
"admin_label" => true,
"class" => "",
"value" => "",
"type" => "textfield"
),
array(
"param_name" => "icon",
"heading" => esc_html__("Icon", "fivestars"),
"description" => esc_html__("Select icon for the item from Fontello icons set", "fivestars"),
"class" => "",
"value" => $FIVESTARS_GLOBALS['sc_params']['icons'],
"type" => "dropdown"
),
array(
"param_name" => "image",
"heading" => esc_html__("Image", "fivestars"),
"description" => esc_html__("Item's image (if icon is empty)", "fivestars"),
"class" => "",
"value" => "",
"type" => "attach_image"
),
array(
"param_name" => "link",
"heading" => esc_html__("Link", "fivestars"),
"description" => esc_html__("Link on item's page", "fivestars"),
"class" => "",
"value" => "",
"type" => "textfield"
),
array(
"param_name" => "readmore",
"heading" => esc_html__("Read more", "fivestars"),
"description" => esc_html__("Caption for the Read more link (if empty - link not showed)", "fivestars"),
"class" => "",
"value" => "",
"type" => "textfield"
),
$FIVESTARS_GLOBALS['vc_params']['id'],
$FIVESTARS_GLOBALS['vc_params']['class'],
$FIVESTARS_GLOBALS['vc_params']['animation'],
$FIVESTARS_GLOBALS['vc_params']['css']
),
'js_view' => 'VcTrxColumnItemView'
) );
class WPBakeryShortCode_Trx_Services extends FIVESTARS_VC_ShortCodeColumns {}
class WPBakeryShortCode_Trx_Services_Item extends FIVESTARS_VC_ShortCodeCollection {}
}
}
?>
/* Tribe Events (TE) support functions
------------------------------------------------------------------------------- */
// Theme init
if (!function_exists('fivestars_tribe_events_theme_setup')) {
add_action( 'fivestars_action_before_init_theme', 'fivestars_tribe_events_theme_setup' );
function fivestars_tribe_events_theme_setup() {
if (fivestars_exists_tribe_events()) {
//if (fivestars_is_tribe_events_page()) {
// Detect current page type, taxonomy and title (for custom post_types use priority < 10 to fire it handles early, than for standard post types)
add_filter('fivestars_filter_get_blog_type', 'fivestars_tribe_events_get_blog_type', 9, 2);
add_filter('fivestars_filter_get_blog_title', 'fivestars_tribe_events_get_blog_title', 9, 2);
add_filter('fivestars_filter_get_current_taxonomy', 'fivestars_tribe_events_get_current_taxonomy', 9, 2);
add_filter('fivestars_filter_is_taxonomy', 'fivestars_tribe_events_is_taxonomy', 9, 2);
add_filter('fivestars_filter_get_stream_page_title', 'fivestars_tribe_events_get_stream_page_title', 9, 2);
add_filter('fivestars_filter_get_stream_page_link', 'fivestars_tribe_events_get_stream_page_link', 9, 2);
add_filter('fivestars_filter_get_stream_page_id', 'fivestars_tribe_events_get_stream_page_id', 9, 2);
add_filter('fivestars_filter_get_period_links', 'fivestars_tribe_events_get_period_links', 9, 3);
add_filter('fivestars_filter_detect_inheritance_key', 'fivestars_tribe_events_detect_inheritance_key', 9, 1);
//}
add_action( 'fivestars_action_add_styles', 'fivestars_tribe_events_frontend_scripts' );
add_filter('fivestars_filter_list_post_types', 'fivestars_tribe_events_list_post_types', 10, 1);
// Advanced Calendar filters
add_filter('fivestars_filter_calendar_get_month_link', 'fivestars_tribe_events_calendar_get_month_link', 9, 2);
add_filter('fivestars_filter_calendar_get_prev_month', 'fivestars_tribe_events_calendar_get_prev_month', 9, 2);
add_filter('fivestars_filter_calendar_get_next_month', 'fivestars_tribe_events_calendar_get_next_month', 9, 2);
add_filter('fivestars_filter_calendar_get_curr_month_posts', 'fivestars_tribe_events_calendar_get_curr_month_posts', 9, 2);
// Extra column for events lists
if (fivestars_get_theme_option('show_overriden_posts')=='yes') {
add_filter('manage_edit-'.Tribe__Events__Main::POSTTYPE.'_columns', 'fivestars_post_add_options_column', 9);
add_filter('manage_'.Tribe__Events__Main::POSTTYPE.'_posts_custom_column', 'fivestars_post_fill_options_column', 9, 2);
}
}
}
}
if ( !function_exists( 'fivestars_tribe_events_settings_theme_setup2' ) ) {
add_action( 'fivestars_action_before_init_theme', 'fivestars_tribe_events_settings_theme_setup2', 3 );
function fivestars_tribe_events_settings_theme_setup2() {
if (fivestars_exists_tribe_events()) {
fivestars_add_theme_inheritance( array('tribe_events' => array(
'stream_template' => 'tribe-events/default-template',
'single_template' => '',
'taxonomy' => array(Tribe__Events__Main::TAXONOMY),
'taxonomy_tags' => array(),
'post_type' => array(
Tribe__Events__Main::POSTTYPE,
Tribe__Events__Main::VENUE_POST_TYPE,
Tribe__Events__Main::ORGANIZER_POST_TYPE
),
'override' => 'post'
) )
);
}
}
}
// Check if Tribe Events installed and activated
if (!function_exists('fivestars_exists_tribe_events')) {
function fivestars_exists_tribe_events() {
return class_exists( 'Tribe__Events__Main' );
}
}
// Return true, if current page is any TE page
if ( !function_exists( 'fivestars_is_tribe_events_page' ) ) {
function fivestars_is_tribe_events_page() {
return !is_search() && class_exists('Tribe__Events__Main')
? tribe_is_event() || tribe_is_event_query() || tribe_is_event_category() || tribe_is_event_venue() || tribe_is_event_organizer()
: false;
}
}
// Filter to detect current page inheritance key
if ( !function_exists( 'fivestars_tribe_events_detect_inheritance_key' ) ) {
//add_filter('fivestars_filter_detect_inheritance_key', 'fivestars_tribe_events_detect_inheritance_key', 9, 1);
function fivestars_tribe_events_detect_inheritance_key($key) {
if (!empty($key)) return $key;
return fivestars_is_tribe_events_page() ? 'tribe_events' : '';
}
}
// Filter to detect current page slug
if ( !function_exists( 'fivestars_tribe_events_get_blog_type' ) ) {
//add_filter('fivestars_filter_get_blog_type', 'fivestars_tribe_events_get_blog_type', 10, 2);
function fivestars_tribe_events_get_blog_type($page, $query=null) {
if (!empty($page)) return $page;
if (!is_search() && fivestars_is_tribe_events_page()) {
//$tribe_ecp = Tribe__Events__Main::instance();
if (/*tribe_is_day()*/ isset($query->query_vars['eventDisplay']) && $query->query_vars['eventDisplay']=='day') $page = 'tribe_day';
else if (/*tribe_is_month()*/ isset($query->query_vars['eventDisplay']) && $query->query_vars['eventDisplay']=='month') $page = 'tribe_month';
else if (is_single()) $page = 'tribe_event';
else if (/*tribe_is_event_venue()*/ isset($query->tribe_is_event_venue) && $query->tribe_is_event_venue) $page = 'tribe_venue';
else if (/*tribe_is_event_organizer()*/ isset($query->tribe_is_event_organizer) && $query->tribe_is_event_organizer) $page = 'tribe_organizer';
else if (/* tribe_is_event_category()*/ isset($query->tribe_is_event_category) && $query->tribe_is_event_category) $page = 'tribe_category';
else if (/*is_tax($tribe_ecp->get_event_taxonomy())*/ is_tag()) $page = 'tribe_tag';
else if (isset($query->query_vars['eventDisplay']) && $query->query_vars['eventDisplay']=='upcoming') $page = 'tribe_list';
else $page = 'tribe';
}
return $page;
}
}
// Filter to detect current page title
if ( !function_exists( 'fivestars_tribe_events_get_blog_title' ) ) {
//add_filter('fivestars_filter_get_blog_title', 'fivestars_tribe_events_get_blog_title', 10, 2);
function fivestars_tribe_events_get_blog_title($title, $page) {
if (!empty($title)) return $title;
if ( fivestars_strpos($page, 'tribe')!==false ) {
//return tribe_get_events_title();
if ( $page == 'tribe_category' ) {
$cat = get_term_by( 'slug', get_query_var( 'tribe_events_cat' ), 'tribe_events_cat', ARRAY_A);
$title = $cat['name'];
} else if ( $page == 'tribe_tag' ) {
$title = sprintf( esc_html__( 'Tag: %s', 'fivestars' ), single_tag_title( '', false ) );
} else if ( $page == 'tribe_venue' ) {
$title = sprintf( esc_html__( 'Venue: %s', 'fivestars' ), tribe_get_venue());
} else if ( $page == 'tribe_organizer' ) {
$title = sprintf( esc_html__( 'Organizer: %s', 'fivestars' ), tribe_get_organizer());
} else if ( $page == 'tribe_day' ) {
$title = sprintf( esc_html__( 'Daily Events: %s', 'fivestars' ), date_i18n(tribe_get_date_format(true), strtotime(get_query_var( 'start_date' ))) );
} else if ( $page == 'tribe_month' ) {
$title = sprintf( esc_html__( 'Monthly Events: %s', 'fivestars' ), date_i18n(tribe_get_option('monthAndYearFormat', 'F Y' ), strtotime(tribe_get_month_view_date())));
} else if ( $page == 'tribe_event' ) {
$title = fivestars_get_post_title();
} else {
$title = esc_html__( 'Tribe Events', 'fivestars' );
}
}
return $title;
}
}
// Filter to detect stream page title
if ( !function_exists( 'fivestars_tribe_events_get_stream_page_title' ) ) {
//add_filter('fivestars_filter_get_stream_page_title', 'fivestars_tribe_events_get_stream_page_title', 9, 2);
function fivestars_tribe_events_get_stream_page_title($title, $page) {
if (!empty($title)) return $title;
if (fivestars_strpos($page, 'tribe')!==false) {
if (($page_id = fivestars_tribe_events_get_stream_page_id(0, $page)) > 0)
$title = fivestars_get_post_title($page_id);
else
$title = esc_html__( 'All Events', 'fivestars');
}
return $title;
}
}
// Filter to detect stream page ID
if ( !function_exists( 'fivestars_tribe_events_get_stream_page_id' ) ) {
//add_filter('fivestars_filter_get_stream_page_id', 'fivestars_tribe_events_get_stream_page_id', 9, 2);
function fivestars_tribe_events_get_stream_page_id($id, $page) {
if (!empty($id)) return $id;
if (fivestars_strpos($page, 'tribe')!==false) $id = fivestars_get_template_page_id('tribe-events/default-template');
return $id;
}
}
// Filter to detect stream page URL
if ( !function_exists( 'fivestars_tribe_events_get_stream_page_link' ) ) {
//add_filter('fivestars_filter_get_stream_page_link', 'fivestars_tribe_events_get_stream_page_link', 9, 2);
function fivestars_tribe_events_get_stream_page_link($url, $page) {
if (!empty($url)) return $url;
if (fivestars_strpos($page, 'tribe')!==false) $url = tribe_get_events_link();
return $url;
}
}
// Filter to return breadcrumbs links to the parent period
if ( !function_exists( 'fivestars_tribe_events_get_period_links' ) ) {
//add_filter('fivestars_filter_get_period_links', 'fivestars_tribe_events_get_period_links', 9, 3);
function fivestars_tribe_events_get_period_links($links, $page, $delimiter='') {
if (!empty($links)) return $links;
global $post;
if ($page == 'tribe_day' && is_object($post))
$links = '' . date_i18n(tribe_get_option('monthAndYearFormat', 'F Y' ), strtotime(tribe_get_month_view_date())) . ' ';
return $links;
}
}
// Filter to detect current taxonomy
if ( !function_exists( 'fivestars_tribe_events_get_current_taxonomy' ) ) {
//add_filter('fivestars_filter_get_current_taxonomy', 'fivestars_tribe_events_get_current_taxonomy', 9, 2);
function fivestars_tribe_events_get_current_taxonomy($tax, $page) {
if (!empty($tax)) return $tax;
if ( fivestars_strpos($page, 'tribe')!==false ) {
$tax = Tribe__Events__Main::TAXONOMY;
}
return $tax;
}
}
// Return taxonomy name (slug) if current page is this taxonomy page
if ( !function_exists( 'fivestars_tribe_events_is_taxonomy' ) ) {
//add_filter('fivestars_filter_is_taxonomy', 'fivestars_tribe_events_is_taxonomy', 10, 2);
function fivestars_tribe_events_is_taxonomy($tax, $query=null) {
if (!empty($tax))
return $tax;
else
return $query && isset($query->tribe_is_event_category) && $query->tribe_is_event_category || is_tax(Tribe__Events__Main::TAXONOMY) ? Tribe__Events__Main::TAXONOMY : '';
}
}
// Add custom post type into list
if ( !function_exists( 'fivestars_tribe_events_list_post_types' ) ) {
//add_filter('fivestars_filter_list_post_types', 'fivestars_tribe_events_list_post_types', 10, 1);
function fivestars_tribe_events_list_post_types($list) {
$list['tribe_events'] = esc_html__('Events', 'fivestars');
return $list;
}
}
// Return previous month and year with published posts
if ( !function_exists( 'fivestars_tribe_events_calendar_get_month_link' ) ) {
//add_filter('fivestars_filter_calendar_get_month_link', 'fivestars_tribe_events_calendar_get_month_link', 9, 2);
function fivestars_tribe_events_calendar_get_month_link($link, $opt) {
if (!empty($opt['posts_types']) && in_array(Tribe__Events__Main::POSTTYPE, $opt['posts_types']) && count($opt['posts_types'])==1) {
$events = Tribe__Events__Main::instance();
$link = $events->getLink('month', ($opt['year']).'-'.($opt['month']), null);
}
return $link;
}
}
// Return previous month and year with published posts
if ( !function_exists( 'fivestars_tribe_events_calendar_get_prev_month' ) ) {
//add_filter('fivestars_filter_calendar_get_prev_month', 'fivestars_tribe_events_calendar_get_prev_month', 9, 2);
function fivestars_tribe_events_calendar_get_prev_month($prev, $opt) {
if (!empty($opt['posts_types']) && !in_array(Tribe__Events__Main::POSTTYPE, $opt['posts_types'])) return;
if (!empty($prev['done']) && in_array(Tribe__Events__Main::POSTTYPE, $prev['done'])) return;
$args = array(
'post_type' => Tribe__Events__Main::POSTTYPE,
'post_status' => current_user_can('read_private_pages') && current_user_can('read_private_posts') ? array('publish', 'private') : 'publish',
'posts_per_page' => 1,
'ignore_sticky_posts' => true,
'orderby' => 'meta_value',
'meta_key' => '_EventStartDate',
'order' => 'desc',
'meta_query' => array(
array(
'key' => '_EventStartDate',
'value' => ($opt['year']).'-'.($opt['month']).'-01',
'compare' => '<',
'type' => 'DATE'
)
)
);
$q = new WP_Query($args);
$month = $year = 0;
if ($q->have_posts()) {
while ($q->have_posts()) { $q->the_post();
$dt = strtotime(get_post_meta(get_the_ID(), '_EventStartDate', true));
$year = date('Y', $dt);
$month = date('m', $dt);
}
wp_reset_postdata();
}
if (empty($prev) || ($year+$month > 0 && ($prev['year']+$prev['month']==0 || ($prev['year']).($prev['month']) < ($year).($month)))) {
$prev['year'] = $year;
$prev['month'] = $month;
}
if (empty($prev['done'])) $prev['done'] = array();
$prev['done'][] = Tribe__Events__Main::POSTTYPE;
return $prev;
}
}
// Return next month and year with published posts
if ( !function_exists( 'fivestars_tribe_events_calendar_get_next_month' ) ) {
//add_filter('fivestars_filter_calendar_get_next_month', 'fivestars_tribe_events_calendar_get_next_month', 9, 2);
function fivestars_tribe_events_calendar_get_next_month($next, $opt) {
if (!empty($opt['posts_types']) && !in_array(Tribe__Events__Main::POSTTYPE, $opt['posts_types'])) return;
if (!empty($next['done']) && in_array(Tribe__Events__Main::POSTTYPE, $next['done'])) return;
$args = array(
'post_type' => Tribe__Events__Main::POSTTYPE,
'post_status' => current_user_can('read_private_pages') && current_user_can('read_private_posts') ? array('publish', 'private') : 'publish',
'posts_per_page' => 1,
'orderby' => 'meta_value',
'ignore_sticky_posts' => true,
'meta_key' => '_EventStartDate',
'order' => 'asc',
'meta_query' => array(
array(
'key' => '_EventStartDate',
'value' => ($opt['year']).'-'.($opt['month']).'-'.($opt['last_day']).' 23:59:59',
'compare' => '>',
'type' => 'DATE'
)
)
);
$q = new WP_Query($args);
$month = $year = 0;
if ($q->have_posts()) {
while ($q->have_posts()) { $q->the_post();
$dt = strtotime(get_post_meta(get_the_ID(), '_EventStartDate', true));
$year = date('Y', $dt);
$month = date('m', $dt);
}
wp_reset_postdata();
}
if (empty($next) || ($year+$month > 0 && ($next['year']+$next['month'] ==0 || ($next['year']).($next['month']) > ($year).($month)))) {
$next['year'] = $year;
$next['month'] = $month;
}
if (empty($next['done'])) $next['done'] = array();
$next['done'][] = Tribe__Events__Main::POSTTYPE;
return $next;
}
}
// Return current month published posts
if ( !function_exists( 'fivestars_tribe_events_calendar_get_curr_month_posts' ) ) {
//add_filter('fivestars_filter_calendar_get_curr_month_posts', 'fivestars_tribe_events_calendar_get_curr_month_posts', 9, 2);
function fivestars_tribe_events_calendar_get_curr_month_posts($posts, $opt) {
if (!empty($opt['posts_types']) && !in_array(Tribe__Events__Main::POSTTYPE, $opt['posts_types'])) return;
if (!empty($posts['done']) && in_array(Tribe__Events__Main::POSTTYPE, $posts['done'])) return;
$args = array(
'post_type' => Tribe__Events__Main::POSTTYPE,
'post_status' => current_user_can('read_private_pages') && current_user_can('read_private_posts') ? array('publish', 'private') : 'publish',
'posts_per_page' => -1,
'ignore_sticky_posts' => true,
'orderby' => 'meta_value',
'meta_key' => '_EventStartDate',
'order' => 'asc',
'meta_query' => array(
array(
'key' => '_EventStartDate',
'value' => array(($opt['year']).'-'.($opt['month']).'-01', ($opt['year']).'-'.($opt['month']).'-'.($opt['last_day']).' 23:59:59'),
'compare' => 'BETWEEN',
'type' => 'DATE'
)
)
);
$q = new WP_Query($args);
if ($q->have_posts()) {
if (empty($posts)) $posts = array();
$events = Tribe__Events__Main::instance();
while ($q->have_posts()) { $q->the_post();
$dt = strtotime(get_post_meta(get_the_ID(), '_EventStartDate', true));
$day = (int) date('d', $dt);
$title = get_the_title(); //apply_filters('the_title', get_the_title());
if (empty($posts[$day]))
$posts[$day] = array();
if (empty($posts[$day]['link']) && count($opt['posts_types'])==1)
$posts[$day]['link'] = $events->getLink('day', ($opt['year']).'-'.($opt['month']).'-'.($day), null);
if (empty($posts[$day]['titles']))
$posts[$day]['titles'] = $title;
else
$posts[$day]['titles'] = is_int($posts[$day]['titles']) ? $posts[$day]['titles']+1 : 2;
if (empty($posts[$day]['posts'])) $posts[$day]['posts'] = array();
$posts[$day]['posts'][] = array(
'post_id' => get_the_ID(),
'post_type' => get_post_type(),
'post_date' => date(get_option('date_format'), $dt),
'post_title' => $title,
'post_link' => get_permalink()
);
}
wp_reset_postdata();
}
if (empty($posts['done'])) $posts['done'] = array();
$posts['done'][] = Tribe__Events__Main::POSTTYPE;
return $posts;
}
}
// Enqueue Tribe Events custom styles
if ( !function_exists( 'fivestars_tribe_events_frontend_scripts' ) ) {
//add_action( 'fivestars_action_add_styles', 'fivestars_tribe_events_frontend_scripts' );
function fivestars_tribe_events_frontend_scripts() {
global $wp_styles;
$wp_styles->done[] = 'tribe-events-custom-jquery-styles';
fivestars_enqueue_style( 'tribe-style', fivestars_get_file_url('css/tribe-style.css'), array(), null );
}
}
// Before main content
if ( !function_exists( 'fivestars_tribe_events_wrapper_start' ) ) {
//add_filter('tribe_events_before_html', 'fivestars_tribe_events_wrapper_start');
function fivestars_tribe_events_wrapper_start($html) {
return '
' . ($html);
}
}
// After main content
if ( !function_exists( 'fivestars_tribe_events_wrapper_end' ) ) {
//add_filter('tribe_events_after_html', 'fivestars_tribe_events_wrapper_end');
function fivestars_tribe_events_wrapper_end($html) {
return $html . '
';
}
}
?>
// Autoload layouts in this folder
$name = pathinfo(__FILE__);
fivestars_autoload_folder( 'templates/'.trim($name['filename']) );
?>
Mistral – Botargo Suites
Mistral Start from $520/night
Room Type: Double Max Guests: 4 Bed Type: Double Room Faces: Forest WiFi: Yes Breakfast: Yes Room service: Yes Airport pickup: No
Mistral
Air Condition
2 Επίπεδες TV
Ελεύθερο WiFi
Δορυφορική Τηλεόραση
Καναπές / Κρεβάτι 2 ατόμων
Σκεύη Μαγειρικής
Αυτόνομο WC
Τζάκι
Στα δύο επίπεδα της σουίτας Mistral μπορούν να απολαύσουν την εξαιρετική φιλοξενία των 70 m2 4 άτομα. Η ιδιαίτερη διαρρύθμιση του πρώτου επιπέδου περιλαμβάνει το ντυμένο με μάρμαρο σαλόνι, το τζάκι, τη λειτουργική κουζίνα και ένα αυτόνομο WC, ενώ το δεύτερο επίπεδο προσφέρει την εξαιρετική άνεση του διπλού υπνοδωματίου με το ιδιαίτερου γούστου μπάνιο.
Η λειτουργικότητα και η άνεση ήταν το πρωταρχικό μέλημα για τη διαμόρφωση των εσωτερικών χώρων του Botargo. Το υπνοδωμάτιο του δεύτερου επιπέδου υπόσχεται χαλάρωση και ηρεμία στον επισκέπτη, ενώ το σαλόνι του πρώτου επιπέδου δημιουργεί όλες τις προϋποθέσεις απόλαυσης της διαμονής, μέσα από τη λειτουργικότητα και το προσεγμένο στυλ του.
{
"necessary": {
"name": "Necessary",
"description": "
Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.
"
},
"functional": {
"name": "Functional",
"description": "
Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.
"
},
"analytics": {
"name": "Analytics",
"description": "
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.
"
},
"performance": {
"name": "Performance",
"description": "
Performance cookies are used to understand and analyse the key performance indexes of the website which helps in delivering a better user experience for the visitors.
"
},
"advertisement": {
"name": "Advertisement",
"description": "
Advertisement cookies are used to provide visitors with customised advertisements based on the pages you visited previously and to analyse the effectiveness of the ad campaigns.
"
}
}
/*! Select2 4.0.13 | https://github.com/select2/select2/blob/master/LICENSE.md */
!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/tk",[],function(){return{errorLoading:function(){return"Netije ýüklenmedi."},inputTooLong:function(e){return e.input.length-e.maximum+" harp bozuň."},inputTooShort:function(e){return"Ýene-de iň az "+(e.minimum-e.input.length)+" harp ýazyň."},loadingMore:function(){return"Köpräk netije görkezilýär…"},maximumSelected:function(e){return"Diňe "+e.maximum+" sanysyny saýlaň."},noResults:function(){return"Netije tapylmady."},searching:function(){return"Gözlenýär…"},removeAllItems:function(){return"Remove all items"}}}),e.define,e.require}();