type-sharetwitter-text-before']); } else { $twitter_share_text_before = ""; } if(!empty($layer['settings']['link-type-sharetwitter-text-after'])){ $twitter_share_text_after = str_replace(array("%title%","%excerpt%"), array($title,$excerpt), $layer['settings']['link-type-sharetwitter-text-after']); } else { $twitter_share_text_after = ""; } $twitter_share_text = $twitter_share_text_before.$twitter_share_url.$twitter_share_text_after; $text = ''.$text.''; break; case 'likepost': if(!empty($this->post['ID'])) $text = ''.$text.''; //javascript-link else $text = ''; break; } if($link_to !== 'none') $do_display = true; //set back to true if a link is set on layer $text = trim($text); //check for special styling coming from post option and set css to the queue if(isset($layer['id'])) $this->set_meta_element_changes($layer['id'], $unique_class); $post_class = (!isset($post['ID'])) ? '' : ' eg-post-'.$post['ID']; if($base->text_has_certain_tag($text, 'a') && !$do_ignore_styles){ //check if a tag exists, if yes, class will be set to a tags and not the wrapping div, also the div will receive the position and other stylings // && @$layer['settings']['source'] !== 'text' if($is_woo_cats && strpos($text, 'class="') !== false || $is_woo_button || $is_filter_cat && strpos($text, 'class="') !== false){ //add to the classes instead of creating own class attribute if it is woocommerce cats AND a class can be found $text = str_replace('class="', 'class="'.$unique_class.$post_class.$lb_class.' ', $text); }elseif($is_html_source && strpos($text, 'class="') !== false){ $text = str_replace('', '', $text); //moved to more global css generation process @version: 2.0 //$this->add_css_wrap[$unique_class]['a']['display'] = $do_display; //do_display defines if we should write display: block; //$this->add_css_wrap[$unique_class]['a']['full'] = $do_full; //do full styles (for categories and tags separator) $unique_class .= '-a'; } if($do_ignore_styles) $unique_class = 'eg-'.esc_attr($this->handle).'-nostyle-element-'.$layer['id']; //replace all the normal shortcodes if(function_exists('qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage')){ //use qTranslate $text = qtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($text); }elseif(function_exists('ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage')){ //use qTranslate plus $text = ppqtrans_useCurrentLanguageIfNotFoundUseDefaultLanguage($text); }elseif(function_exists('qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage')){ //use qTranslate X $text = qtranxf_useCurrentLanguageIfNotFoundUseDefaultLanguage($text); } $text = do_shortcode($text); if($special_item == 'true' && $special_item_type == 'line-break'){ //line break element echo ' '."\n"; }elseif(trim($text) !== ''){ //}elseif(!empty($text)){ $use_tag = $base->getVar($layer['settings'], 'tag-type', 'div'); echo ' <'.$use_tag.' class="esg-'.$class.$post_class.$video_play.$ajax_class.' '.$hideunderClass.$unique_class.$transition.'"'.$ajax_attr.$transition_split.$delay.$hideunderHTML; echo ($demo == 'custom') ? $demo_element_type : ''; echo $data_transition_transition . '>'; echo $text; echo ''."\n"; } } /** * Retrieve the value of post elements */ public function get_post_value($handle, $separator, $function, $meta, $catmax = '-1', $taxonomy = ""){ $base = new Essential_Grid_Base(); $text = ''; /* 2.1.5 category max option */ $adjustMax = false; if( in_array( $handle, array( 'cat_list','tag_list','taxonomy') ) ) { if(!empty($catmax) && $catmax !== '-1' && is_numeric($catmax) && intval($catmax) > 0) { $catmax = intval($catmax); $adjustMax = true; } } switch($handle){ //Post elements case 'post_id': $text = $base->getVar($this->post, 'ID', ''); break; case 'post_url': $post_id = $base->getVar($this->post, 'ID', ''); $text = get_permalink($post_id); break; case 'title': $text = $base->getVar($this->post, 'post_title', ''); break; case 'caption': case 'excerpt': $text = trim($base->getVar($this->post, 'post_excerpt')); if(empty($text)){ //strip essential grid shortcode here $text = do_shortcode($base->strip_essential_shortcode($base->getVar($this->post, 'post_content'))); $text = preg_replace("/]*>(.*?)<\\/style>/s", "", $text); $text = preg_replace("/]*>(.*?)<\\/script>/s", "", $text); } $text = strip_tags($text); //,"

" break; case 'meta': $m = new Essential_Grid_Meta(); $text = $m->get_meta_value_by_handle($base->getVar($this->post, 'ID', ''),$meta); break; case 'likespost': $post_id = $base->getVar($this->post, 'ID', ''); if(!empty($post_id)){ $count = get_post_meta($post_id, "eg_votes_count", 0); if(!$count) $count[0] = 0; if(is_array($count)){ $text = ''.$count[0].''; } } else{ $text = ''; } break; case 'alias': $text = $base->getVar($this->post, 'post_name'); break; case 'content': $text = apply_filters('the_content', $base->getVar($this->post, 'post_content')); break; case 'link': $text = get_permalink($base->getVar($this->post, 'ID', '')); break; case 'date': $postDate = $base->getVar($this->post, "post_date_gmt"); $text = $base->convert_post_date($postDate); break; case 'date_day': $postDate = $base->getVar($this->post, "post_date_gmt"); $text = date('dd',strtotime($postDate)); break; case 'date_month': $postDate = $base->getVar($this->post, "post_date_gmt"); $text = date('m',strtotime($postDate)); break; case 'date_month_abbr': $postDate = $base->getVar($this->post, "post_date_gmt"); $text = date('M',strtotime($postDate)); break; case 'date_year': $postDate = $base->getVar($this->post, "post_date_gmt"); $text = date('Y',strtotime($postDate)); break; case 'date_year_abbr': $postDate = $base->getVar($this->post, "post_date_gmt"); $text = date('y',strtotime($postDate)); break; case 'date_modified': $dateModified = $base->getVar($this->post, "post_modified"); $text = $base->convert_post_date($dateModified); break; case 'author_name': $authorID = $base->getVar($this->post, 'post_author'); $text = get_the_author_meta('display_name', $authorID); break; case 'author_posts': $authorID = $base->getVar($this->post, 'post_author'); $text = get_author_posts_url($authorID ); break; case 'author_profile': $authorID = $base->getVar($this->post, 'post_author'); $meta_value = get_the_author_meta('url', $authorID); break; case 'author_avatar_32': $authorID = $base->getVar($this->post, 'post_author'); $meta_value = get_avatar( $authorID, 32); break; case 'author_avatar_64': $authorID = $base->getVar($this->post, 'post_author'); $meta_value = get_avatar( $authorID, 64); break; case 'author_avatar_96': $authorID = $base->getVar($this->post, 'post_author'); $meta_value = get_avatar( $authorID, 96); break; case 'author_avatar_512': $authorID = $base->getVar($this->post, 'post_author'); $meta_value = get_avatar( $authorID, 512); break; case 'num_comments': $text = $base->getVar($this->post, 'comment_count'); break; case 'cat_list': $use_taxonomies = false; $postCatsIDs = $base->getVar($this->post, 'post_category'); if(empty($postCatsIDs) && isset($this->post['post_type'])){ $postCatsIDs = array(); $obj = get_object_taxonomies($this->post['post_type']); if(!empty($obj) && is_array($obj)){ foreach($obj as $tax){ if($tax == 'post_tag') continue; $use_taxonomies[] = $tax; $new_terms = get_the_terms($base->getVar($this->post, 'ID', ''), $tax); if(is_array($new_terms) && !empty($new_terms)){ foreach($new_terms as $term){ $postCatsIDs[$term->term_id] = $term->term_id; } } } } } /* 2.1.5 category max option */ if($adjustMax && is_array($postCatsIDs)) $postCatsIDs = array_slice($postCatsIDs, 0, $catmax, true); $text = $base->get_categories_html_list($postCatsIDs, $function, $separator, $use_taxonomies); break; case 'tag_list': if(!$adjustMax) { $text = $base->get_tags_html_list($base->getVar($this->post, 'ID', ''), $separator, $function); } else { $text = $base->get_tags_html_list($base->getVar($this->post, 'ID', ''), $separator, $function, $catmax); } break; case 'taxonomy': if(!$adjustMax) { $text = $base->get_tax_html_list($base->getVar($this->post, 'ID', ''), $taxonomy, $separator, $function); } else { $text = $base->get_tax_html_list($base->getVar($this->post, 'ID', ''), $taxonomy, $separator, $function, $catmax); } break; /* case 'iframe': print '

HELLO!

'; die(); break; */ default: $text = apply_filters('essgrid_post_meta_content', $text, $handle, $base->getVar($this->post, 'ID', ''), $this->post); break; } return $text; } /** * Retrieve the value of post elements */ public function get_custom_element_value($handle, $separator, $meta = ''){ $base = new Essential_Grid_Base(); $m = new Essential_Grid_Meta(); $text = ''; $text = $base->getVar($this->layer_values, $handle, ''); if($text == '' && $meta != '') $text = $base->getVar($this->layer_values, $meta, ''); if(intval($text) > 0){ //we may be an image from the metas $custom_meta = $m->get_all_meta(false); if(!empty($custom_meta)){ foreach($custom_meta as $cmeta){ if($cmeta['handle'] == $handle){ if($cmeta['type'] == 'image'){ $img = wp_get_attachment_image_src($text, $this->media_sources_type); if($img !== false){ $text = $img[0]; //replace with URL } } break; } } } } return $text; } /** * Retrieve the value of event elements */ public function get_event_manager_value($handle){ $base = new Essential_Grid_Base(); $text = ''; switch($handle){ //check for event manager case 'event_start_date': break; case 'event_end_date': break; case 'event_start_time': break; case 'event_end_time': break; case 'event_event_id': break; case 'event_location_name': break; case 'event_location_slug': break; case 'event_location_address': break; case 'event_location_town': break; case 'event_location_state': break; case 'event_location_postcode': break; case 'event_location_region': break; case 'event_location_country': break; } return $text; } /** * Retrieve the value of woocommerce elements */ public function get_woocommerce_value($meta, $separator, $catmax = false){ $text = ''; if(isset($this->post['ID'])){ if(Essential_Grid_Woocommerce::is_woo_exists()){ $base = new Essential_Grid_Base(); $m = new Essential_Grid_Meta(); /* 2.1.5 category max option */ $adjustMax = false; if($meta === 'wc_categories') { if(!empty($catmax) && $catmax !== '-1' && is_numeric($catmax) && intval($catmax) > 0) { $catmax = intval($catmax); $adjustMax = true; } } if($adjustMax) { $text = Essential_Grid_Woocommerce::get_value_by_meta($this->post['ID'], $meta, $separator, $catmax); } else { $text = Essential_Grid_Woocommerce::get_value_by_meta($this->post['ID'], $meta, $separator); } } } return $text; } } How I find the best places to stay when I travel - Dear Alyne

When I travel and share pictures of the places I stay at on Instagram, people always flood me with messages asking me how I found such a beautiful place and how I got it so cheap.

For example, I stayed in this beautiful villa in Albania for just $58/night. This kind of place in other countries would be unaffordable. (By the way if you haven’t used AirBnb before, get a free voucher from me here). 

To be fair, Albania is a pretty affordable country, but I still stand by the statement that it’s possible to get cheap and good accommodation wherever you travel. So here are the top four sites I visit to get the best places to stay when I travel.

1) CouchSurfing

I love CouchSurfing because it’s completely free and you get to stay with awesome locals who can make your travels a lot more interesting. Sometimes they share fun stories or even bring you around to cool places in the area.

Just make sure you do your due diligence by checking if the host is verified, if they have good reviews, etc. If you’re a woman try only to stay with other women or families as many male hosts unfortunately have begun to use CouchSurfing as a way to take advantage of women.

2) Hostel World

This site is one of the best places to check out hostels, no matter where you’re travelling. There are so many options and so many pictures and reviews to help you make sure you’re making the right decision.

Hostels are pretty cheap too. You can find them as cheap as $10-$20 per night depending on the location, how many people you share a room with, and the standard of the hostel.

3) AirBnb

AirBnb is my next favourite option. It’s usually more expensive than hostels, but sometimes you find hidden gems. And if you didn’t know, you can save money on your AirBnb if it’s your first time by using my voucher!

I like AirBnbs for the homely vibes and the ability to cook and do laundry however you’d like. Sometimes it’s cool to stay with a family, but sometimes if you want your own privacy, you can rent it without a host. I love that flexibility and sometimes it warrants paying a bit more.

And as for how I find such beautiful AirBnbs? Just keep searching. It takes a bit of patience and you gotta keep looking at the listings individually, because sometimes the cover picture alone doesn’t show how awesome a place is.

4) Hotels.com

Now if I don’t care too much about price or I just want all my needs taken care of for me, I go and book a hotel on Hotels.com. Also if you’re traveling with another person sometimes a hotel can be just as cheap as a hostel if you’re splitting the price!

It’s trusted and easy to use, and there are so many filters it makes the process a lot easier. Like, I could filter the hotels I want according to the neighbourhoods or landmarks I want to stay close to. Or I could pick the kinds of facilities I want, like a pool or gym.

——–

So those are the four sites I check to find the best places when I travel. I hope it helps you, especially if you’re planning a trip and you don’t know where to start.

Leave a Reply

Your email address will not be published. Required fields are marked *

*
*