PageRenderTime 102ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 1ms

/web/app/themes/salient/functions.php

https://bitbucket.org/mikestivala/vinciarchitects
PHP | 6143 lines | 4171 code | 1592 blank | 380 comment | 1515 complexity | 86b7cd6d5001ee9e1c952845cf7b4cdd MD5 | raw file
Possible License(s): MIT, Apache-2.0
  1. <?php
  2. #-----------------------------------------------------------------#
  3. # Default theme constants
  4. #-----------------------------------------------------------------#
  5. define('NECTAR_FRAMEWORK_DIRECTORY', get_template_directory_uri() . '/nectar/');
  6. define('NECTAR_THEME_NAME', 'salient');
  7. #-----------------------------------------------------------------#
  8. # Load text domain
  9. #-----------------------------------------------------------------#
  10. add_action('after_setup_theme', 'lang_setup');
  11. function lang_setup(){
  12. load_theme_textdomain(NECTAR_THEME_NAME, get_template_directory() . '/lang');
  13. }
  14. #-----------------------------------------------------------------#
  15. # Register/Enqueue JS
  16. #-----------------------------------------------------------------#
  17. $options = get_nectar_theme_options();
  18. $nectar_get_template_directory_uri = get_template_directory_uri();
  19. function nectar_register_js() {
  20. global $options;
  21. global $post;
  22. global $nectar_get_template_directory_uri;
  23. if (!is_admin()) {
  24. // Register
  25. wp_register_script('modernizer', $nectar_get_template_directory_uri . '/js/modernizr.js', 'jquery', '2.6.2', TRUE);
  26. wp_register_script('respond', $nectar_get_template_directory_uri . '/js/respond.js', 'jquery', '1.1', TRUE);
  27. wp_register_script('superfish', $nectar_get_template_directory_uri . '/js/superfish.js', 'jquery', '1.4.8', TRUE);
  28. wp_register_script('respond', $nectar_get_template_directory_uri . '/js/respond.js', 'jquery', '1.1',TRUE);
  29. wp_register_script('touchswipe', $nectar_get_template_directory_uri . '/js/touchswipe.min.js', 'jquery', '1.0', TRUE);
  30. wp_register_script('flexslider', $nectar_get_template_directory_uri . '/js/flexslider.min.js', array('jquery', 'touchswipe'), '2.1', TRUE);
  31. wp_register_script('orbit', $nectar_get_template_directory_uri . '/js/orbit.js', 'jquery', '1.4', TRUE);
  32. wp_register_script('flickity', $nectar_get_template_directory_uri . '/js/flickity.min.js', 'jquery', '1.1.1', TRUE);
  33. wp_register_script('nicescroll', $nectar_get_template_directory_uri . '/js/nicescroll.js', 'jquery', '3.5.4' ,TRUE);
  34. wp_register_script('sticky', $nectar_get_template_directory_uri . '/js/sticky.js', 'jquery', '8.5', TRUE);
  35. wp_register_script('magnific', $nectar_get_template_directory_uri . '/js/magnific.js', 'jquery', '7.0.1', TRUE);
  36. wp_register_script('fancyBox', $nectar_get_template_directory_uri . '/js/jquery.fancybox.min.js', 'jquery', '7.0.1', TRUE);
  37. wp_register_script('nectar_parallax', $nectar_get_template_directory_uri . '/js/parallax.js', 'jquery', '1.0', TRUE);
  38. wp_register_script('isotope', $nectar_get_template_directory_uri . '/js/isotope.min.js', 'jquery', '7.6' ,TRUE);
  39. wp_register_script('select2', $nectar_get_template_directory_uri . '/js/select2.min.js', 'jquery', '3.5.2' ,TRUE);
  40. wp_register_script('nectarSlider', $nectar_get_template_directory_uri . '/js/nectar-slider.js', 'jquery', '8.5.5', TRUE);
  41. wp_register_script('iosSlider', $nectar_get_template_directory_uri . '/js/jquery.iosslider.min.js', 'jquery', '7.5', TRUE);
  42. wp_register_script('fullPage', $nectar_get_template_directory_uri . '/js/jquery.fullPage.min.js', 'jquery', '8.5.2', TRUE);
  43. wp_register_script('vivus', $nectar_get_template_directory_uri . '/js/vivus.min.js', 'jquery', '6.0.1', TRUE);
  44. wp_register_script('nectarParticles', $nectar_get_template_directory_uri . '/js/nectar-particles.js', 'jquery', '8.5.5', TRUE);
  45. wp_register_script('ajaxify', $nectar_get_template_directory_uri . '/js/ajaxify.js', 'jquery', '7.0', TRUE);
  46. wp_register_script('caroufredsel', $nectar_get_template_directory_uri . '/js/caroufredsel.min.js', array('jquery', 'touchswipe'), '7.0.1', TRUE);
  47. wp_register_script('owl_carousel', $nectar_get_template_directory_uri . '/js/owl.carousel.min.js', 'jquery', '1.3.3', TRUE);
  48. wp_register_script('midnight', $nectar_get_template_directory_uri . '/js/midnight.js', 'jquery', '1.0', TRUE);
  49. wp_register_script('twentytwenty', $nectar_get_template_directory_uri . '/js/jquery.twentytwenty.js', 'jquery', '1.0', TRUE);
  50. wp_register_script('stickykit', $nectar_get_template_directory_uri . '/js/stickkit.js', 'jquery', '1.0', TRUE);
  51. if ( floatval(get_bloginfo('version')) < "3.6" ) {
  52. wp_register_script('jplayer', $nectar_get_template_directory_uri . '/js/jplayer.min.js', 'jquery', '2.1', TRUE);
  53. }
  54. wp_register_script('nectarFrontend', $nectar_get_template_directory_uri . '/js/init.js', array('jquery', 'superfish'), '8.5.5', TRUE);
  55. // Dequeue
  56. $lightbox_script = (!empty($options['lightbox_script'])) ? $options['lightbox_script'] : 'magnific';
  57. if($lightbox_script == 'pretty_photo') { $lightbox_script = 'magnific'; }
  58. // Enqueue
  59. wp_enqueue_script('jquery');
  60. wp_enqueue_script('modernizer');
  61. ////only load for IE8
  62. if(preg_match('/(?i)msie [2-8]/',$_SERVER['HTTP_USER_AGENT'])) {
  63. wp_enqueue_script('respond');
  64. }
  65. $portfolio_extra_content = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_portfolio_extra_content', true) : '';
  66. $post_content = (isset($post->post_content)) ? $post->post_content : '';
  67. if(!empty($options['smooth-scrolling']) && $options['smooth-scrolling'] == '1') wp_enqueue_script('nicescroll');
  68. if(!empty($options['portfolio_sidebar_follow']) && $options['portfolio_sidebar_follow'] == '1' && is_singular('portfolio') ) wp_enqueue_script('sticky');
  69. if ($lightbox_script == 'magnific') {
  70. wp_enqueue_script('magnific');
  71. } elseif($lightbox_script == 'fancybox') {
  72. wp_enqueue_script('fancyBox');
  73. }
  74. if(stripos( $post_content, 'nectar_portfolio') !== FALSE || stripos( $portfolio_extra_content, 'nectar_portfolio') !== FALSE ||
  75. stripos( $post_content, 'nectar_blog') !== FALSE || stripos( $portfolio_extra_content, 'nectar_blog') !== FALSE ||
  76. stripos( $post_content, 'vc_gallery type="image_grid"') !== FALSE || stripos( $portfolio_extra_content, 'vc_gallery type="image_grid"') !== FALSE ||
  77. stripos( $post_content, "vc_gallery type='image_grid'") !== FALSE || stripos( $portfolio_extra_content, "vc_gallery type='image_grid'") !== FALSE ||
  78. stripos( $post_content, 'type="image_grid"') !== FALSE || stripos( $portfolio_extra_content, 'type="image_grid"') !== FALSE ||
  79. stripos( $post_content, "type='image_grid'") !== FALSE || stripos( $portfolio_extra_content, "type='image_grid'") !== FALSE ||
  80. is_page_template('template-portfolio.php') || is_archive() || is_home() || is_search()) {
  81. wp_enqueue_script('isotope');
  82. }
  83. $page_full_screen_rows = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows', true) : '';
  84. if($page_full_screen_rows == 'on') wp_enqueue_script('fullPage');
  85. if ( floatval(get_bloginfo('version')) < "3.6" ) {
  86. wp_enqueue_script('jplayer');
  87. }
  88. if(stripos( $post_content, '[recent_projects') !== FALSE || stripos( $portfolio_extra_content, '[recent_projects') !== FALSE
  89. || stripos($post_content, '[carousel') !== FALSE || stripos( $portfolio_extra_content, '[carousel') !== FALSE
  90. || stripos($post_content, 'carousel="true"') !== FALSE || stripos( $portfolio_extra_content, 'carousel="true"') !== FALSE
  91. || stripos($post_content, 'carousel="1"') !== FALSE || stripos( $portfolio_extra_content, 'carousel="1"') !== FALSE
  92. || is_page_template('template-home-1.php')) {
  93. wp_enqueue_script('caroufredsel');
  94. }
  95. if( stripos( $post_content, 'script="owl_carousel"') !== FALSE || stripos( $portfolio_extra_content, 'script="owl_carousel"') !== FALSE ) {
  96. wp_enqueue_script('owl_carousel');
  97. }
  98. $nectar_theme_skin = (!empty($options['theme-skin'])) ? $options['theme-skin'] : 'original' ;
  99. if(!empty($options['header-permanent-transparent']) && $options['header-permanent-transparent'] == '1' && $nectar_theme_skin != 'material') {
  100. wp_enqueue_script('midnight');
  101. }
  102. wp_enqueue_script('nectarFrontend');
  103. $bg_type = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_slider_bg_type', true) : '';
  104. if(is_singular('post') && (!empty($options['blog_next_post_link']) && $options['blog_next_post_link'] == '1' && !empty($options['blog_next_post_link_style']) && $options['blog_next_post_link_style'] == 'fullwidth_next_only') ||
  105. stripos( $post_content, 'project_style="3"') !== FALSE || stripos( $portfolio_extra_content, 'project_style="3"') !== FALSE ||
  106. stripos( $post_content, 'project_style="5"') !== FALSE || stripos( $portfolio_extra_content, 'project_style="5"') !== FALSE ||
  107. stripos( $post_content, 'gallery_style="3"') !== FALSE || stripos( $portfolio_extra_content, 'gallery_style="3"') !== FALSE ||
  108. stripos( $post_content, 'gallery_style="5"') !== FALSE || stripos( $portfolio_extra_content, 'gallery_style="5"') !== FALSE ||
  109. stripos( $post_content, "project_style='3'") !== FALSE || stripos( $portfolio_extra_content, "project_style='3'") !== FALSE ||
  110. stripos( $post_content, "project_style='5'") !== FALSE || stripos( $portfolio_extra_content, "project_style='5'") !== FALSE ||
  111. stripos( $post_content, "gallery_style='3'") !== FALSE || stripos( $portfolio_extra_content, "gallery_style='3'") !== FALSE ||
  112. is_page_template('template-portfolio.php') || $bg_type == 'particle_bg' || (get_post_type() == 'portfolio' && is_archive()) ) {
  113. }
  114. $transition_method = (!empty($options['transition-method'])) ? $options['transition-method'] : 'ajax';
  115. if(!empty($options['ajax-page-loading']) && $options['ajax-page-loading'] == '1' && $transition_method == 'ajax') {
  116. wp_enqueue_script('nectarSlider');
  117. wp_enqueue_script('fullPage');
  118. wp_enqueue_script('ajaxify');
  119. }
  120. else if(!empty($options['ajax-page-loading']) && $options['ajax-page-loading'] == '1' && $transition_method == 'standard') {
  121. //simulated ajax workaround will go here
  122. }
  123. }
  124. }
  125. add_action('wp_enqueue_scripts', 'nectar_register_js');
  126. function nectar_page_specific_js() {
  127. global $post;
  128. global $options;
  129. global $nectar_get_template_directory_uri;
  130. if(!is_object($post)) $post = (object) array('post_content'=>' ', 'ID' => ' ');
  131. $template_name = get_post_meta( $post->ID, '_wp_page_template', true );
  132. //home
  133. if ( is_page_template('template-home-1.php') || $template_name == 'salient/template-home-1.php' ||
  134. is_page_template('template-home-2.php') || $template_name == 'salient/template-home-2.php' ||
  135. is_page_template('template-home-3.php') || $template_name == 'salient/template-home-3.php' ||
  136. is_page_template('template-home-4.php') || $template_name == 'salient/template-home-4.php') {
  137. wp_enqueue_script('orbit');
  138. wp_enqueue_script('touchswipe');
  139. }
  140. ////infinite scroll
  141. $portfolio_extra_content = get_post_meta($post->ID, '_nectar_portfolio_extra_content', true);
  142. $post_content = $post->post_content;
  143. $posttype = get_post_type($post);
  144. if(stripos( $post->post_content, '[nectar_blog') !== FALSE || stripos( $portfolio_extra_content, '[nectar_blog') !== FALSE
  145. || stripos( $post->post_content, 'pagination_type="infinite_scroll"') !== FALSE || stripos( $portfolio_extra_content, 'pagination_type="infinite_scroll"') !== FALSE
  146. || (!empty($options['blog_pagination_type']) && $options['blog_pagination_type'] == 'infinite_scroll')
  147. || (!empty($options['portfolio_pagination_type']) && $options['portfolio_pagination_type'] == 'infinite_scroll')
  148. || (((is_archive()) || (is_author()) || (is_category()) || (is_home()) || (is_tag())) && ( $posttype == 'post') && (!is_singular())) ) {
  149. wp_register_script('infinite_scroll', $nectar_get_template_directory_uri . '/js/infinitescroll.js', array('jquery'), '1.1', TRUE);
  150. wp_enqueue_script('infinite_scroll');
  151. if ( floatval(get_bloginfo('version')) >= "3.6" ) {
  152. wp_enqueue_script('wp-mediaelement');
  153. wp_enqueue_style('wp-mediaelement');
  154. }
  155. if (class_exists('WPBakeryVisualComposerAbstract') && defined( 'SALIENT_VC_ACTIVE')) {
  156. wp_register_script('progressCircle', vc_asset_url('lib/bower/progress-circle/ProgressCircle.min.js'));
  157. wp_register_script('vc_pie', vc_asset_url('lib/vc_chart/jquery.vc_chart.min.js'), array('jquery', 'progressCircle'));
  158. //wp_enqueue_script('vc_pie');
  159. }
  160. wp_enqueue_script('flickity');
  161. wp_enqueue_script('flexslider');
  162. wp_enqueue_script('stickykit');
  163. }
  164. $enable_ss = (!empty($options['blog_enable_ss'])) ? $options['blog_enable_ss'] : 'false';
  165. if( ($enable_ss == '1' && is_single() && $posttype == 'post') ||
  166. stripos( $post->post_content, '[vc_widget_sidebar') !== FALSE || stripos( $portfolio_extra_content, '[vc_widget_sidebar') !== FALSE ) {
  167. wp_enqueue_script('stickykit');
  168. }
  169. //nectarSlider
  170. if(stripos( $post_content, '[nectar_slider') !== FALSE || stripos( $portfolio_extra_content, '[nectar_slider') !== FALSE
  171. || stripos($post_content, 'type="nectarslider_style"') !== FALSE || stripos( $portfolio_extra_content, 'type="nectarslider_style"') !== FALSE) {
  172. wp_enqueue_script('nectarSlider');
  173. }
  174. //touch swipe
  175. $box_roll = get_post_meta($post->ID, '_nectar_header_box_roll', true);
  176. wp_enqueue_script('touchswipe');
  177. //flickity
  178. if(stripos($post_content, '[vc_gallery type="flickity"') !== FALSE || stripos( $portfolio_extra_content, '[vc_gallery type="flickity"') !== FALSE
  179. || stripos($post_content, 'style="multiple_visible"') !== FALSE || stripos( $portfolio_extra_content, 'style="multiple_visible"') !== FALSE
  180. || stripos($post_content, 'style="slider_multiple_visible"') !== FALSE || stripos( $portfolio_extra_content, 'style="slider_multiple_visible"') !== FALSE
  181. || stripos($post_content, 'script="flickity"') !== FALSE || stripos( $portfolio_extra_content, 'script="flickity"') !== FALSE
  182. || stripos($post_content, 'style="multiple_visible_minimal"') !== FALSE || stripos( $portfolio_extra_content, 'style="multiple_visible_minimal"') !== FALSE
  183. || stripos($post_content, 'style="slider"') !== FALSE || stripos( $portfolio_extra_content, 'style="slider"') !== FALSE) {
  184. wp_enqueue_script('flickity');
  185. }
  186. //fancy select
  187. $fancy_rcs = (!empty($options['form-fancy-select'])) ? $options['form-fancy-select'] : 'default';
  188. if($fancy_rcs == '1') {
  189. wp_enqueue_script('select2');
  190. }
  191. //svg icon animation
  192. if(strpos($post_content,'.svg') !== false || strpos($portfolio_extra_content,'.svg') !== false) {
  193. wp_enqueue_script('vivus');
  194. }
  195. //comments
  196. if ( is_singular() && comments_open() && get_option('thread_comments') )
  197. wp_enqueue_script('comment-reply');
  198. }
  199. add_action('wp_enqueue_scripts', 'nectar_page_specific_js');
  200. add_action( 'wp_head', 'nectar_javascript_check' );
  201. function nectar_javascript_check() {
  202. echo '<script type="text/javascript"> var root = document.getElementsByTagName( "html" )[0]; root.setAttribute( "class", "js" ); </script>';
  203. }
  204. if (!function_exists('remove_wp_open_sans')) :
  205. function remove_wp_open_sans() {
  206. wp_deregister_style( 'open-sans' );
  207. wp_register_style( 'open-sans', false );
  208. }
  209. add_action('wp_enqueue_scripts', 'remove_wp_open_sans');
  210. endif;
  211. #-----------------------------------------------------------------#
  212. # Register/Enqueue CSS
  213. #-----------------------------------------------------------------#
  214. //Main Styles
  215. function nectar_main_styles() {
  216. global $nectar_get_template_directory_uri;
  217. // Register
  218. wp_register_style('rgs', $nectar_get_template_directory_uri . '/css/rgs.css', '', '8.5.4');
  219. wp_register_style('orbit', $nectar_get_template_directory_uri . '/css/orbit.css');
  220. wp_register_style('twentytwenty', $nectar_get_template_directory_uri . '/css/twentytwenty.css');
  221. wp_register_style('woocommerce', $nectar_get_template_directory_uri . '/css/woocommerce.css','', '8.5.4');
  222. wp_register_style('font-awesome', $nectar_get_template_directory_uri . '/css/font-awesome.min.css', '', '4.6.3');
  223. wp_register_style('iconsmind', $nectar_get_template_directory_uri . '/css/iconsmind.css', '', '7.6');
  224. wp_register_style('linea', $nectar_get_template_directory_uri . '/css/fonts/svg/font/arrows_styles.css');
  225. wp_register_style('fullpage', $nectar_get_template_directory_uri . '/css/fullpage.css', '', '8.5.4');
  226. wp_register_style('nectarslider', $nectar_get_template_directory_uri . '/css/nectar-slider.css', '', '8.5.0');
  227. wp_register_style("main-styles", get_stylesheet_directory_uri() . "/style.css", '', '8.5.5');
  228. wp_register_style("nectar-portfolio", $nectar_get_template_directory_uri . "/css/portfolio.css", '', '8.5.5');
  229. wp_register_style("magnific", $nectar_get_template_directory_uri . "/css/magnific.css", '', '6.2');
  230. wp_register_style("fancyBox", $nectar_get_template_directory_uri . "/css/jquery.fancybox.css", '', '9.0');
  231. wp_register_style("responsive", $nectar_get_template_directory_uri . "/css/responsive.css", '', '8.5.5');
  232. wp_register_style("select2", $nectar_get_template_directory_uri . "/css/select2.css", '', '6.2');
  233. wp_register_style("non-responsive", $nectar_get_template_directory_uri . "/css/non-responsive.css");
  234. wp_register_style("skin-ascend", $nectar_get_template_directory_uri . "/css/ascend.css", '', '8.5.4');
  235. wp_register_style("skin-material", $nectar_get_template_directory_uri . "/css/skin-material.css", '', '8.5.4');
  236. wp_register_style("box-roll", $nectar_get_template_directory_uri . "/css/box-roll.css");
  237. wp_register_style("nectar-ie8", $nectar_get_template_directory_uri . "/css/ie8.css");
  238. global $options;
  239. $lightbox_script = (!empty($options['lightbox_script'])) ? $options['lightbox_script'] : 'magnific';
  240. if($lightbox_script == 'pretty_photo') { $lightbox_script = 'magnific'; }
  241. // Enqueue
  242. wp_enqueue_style('rgs');
  243. wp_enqueue_style('font-awesome');
  244. wp_enqueue_style('main-styles');
  245. if ($lightbox_script == 'magnific') {
  246. wp_enqueue_style('magnific');
  247. } else if($lightbox_script == 'fancybox') {
  248. wp_enqueue_style('fancyBox');
  249. }
  250. wp_enqueue_style('nectar-ie8');
  251. //responsive
  252. if( !empty($options['responsive']) && $options['responsive'] == 1 ) {
  253. wp_enqueue_style('responsive');
  254. } else {
  255. wp_enqueue_style('non-responsive');
  256. add_filter('body_class','salient_non_responsive');
  257. function salient_non_responsive($classes) {
  258. // add 'class-name' to the $classes array
  259. $classes[] = 'salient_non_responsive';
  260. // return the $classes array
  261. return $classes;
  262. }
  263. }
  264. ////Default fonts with extended chars
  265. global $options;
  266. if(!empty($options['extended-theme-font']) && $options['extended-theme-font'] != '0') {
  267. wp_enqueue_style( "options_typography_OpenSans_ext", "https://fonts.googleapis.com/css?family=Open+Sans%3A300%2C400%2C600%2C700&subset=latin%2Clatin-ext", false, null, 'all' );
  268. }
  269. //IE
  270. global $wp_styles;
  271. $wp_styles->add_data("nectar-ie8", 'conditional', 'lt IE 9');
  272. //ajaxify needed
  273. $transition_method = (!empty($options['transition-method'])) ? $options['transition-method'] : 'ajax';
  274. if(!empty($options['ajax-page-loading']) && $options['ajax-page-loading'] == '1' && $transition_method == 'ajax') {
  275. wp_enqueue_style('wp-mediaelement');
  276. wp_enqueue_style('fullpage');
  277. wp_enqueue_style('nectarslider');
  278. wp_enqueue_style('nectar-portfolio');
  279. }
  280. }
  281. add_action('wp_enqueue_scripts', 'nectar_main_styles');
  282. function nectar_page_sepcific_styles() {
  283. global $post;
  284. if(!is_object($post)) $post = (object) array('post_content'=>' ', 'ID' => ' ');
  285. $portfolio_extra_content = get_post_meta($post->ID, '_nectar_portfolio_extra_content', true);
  286. $post_content = $post->post_content;
  287. //home
  288. if ( is_page_template('template-home-1.php') || is_page_template('template-home-2.php') || is_page_template('template-home-3.php') || is_page_template('template-home-4.php')) {
  289. wp_enqueue_style('orbit');
  290. }
  291. //full page
  292. $page_full_screen_rows = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows', true) : '';
  293. if($page_full_screen_rows == 'on') wp_enqueue_style('fullpage');
  294. //nectar slider
  295. if(stripos( $post_content, '[nectar_slider') !== FALSE || stripos( $portfolio_extra_content, '[nectar_slider') !== FALSE
  296. || stripos($post_content, 'type="nectarslider_style"') !== FALSE || stripos( $portfolio_extra_content, 'type="nectarslider_style"') !== FALSE) {
  297. wp_enqueue_style('nectarslider');
  298. }
  299. //portfolio
  300. if(stripos( $post_content, 'nectar_portfolio') !== FALSE || stripos( $portfolio_extra_content, 'nectar_portfolio') !== FALSE ||
  301. stripos( $post_content, 'recent_projects') !== FALSE || stripos( $portfolio_extra_content, 'recent_projects') !== FALSE ||
  302. stripos( $post_content, 'type="image_grid"') !== FALSE || stripos( $portfolio_extra_content, 'type="image_grid"') !== FALSE ||
  303. stripos( $post_content, "type='image_grid'") !== FALSE || stripos( $portfolio_extra_content, "type='image_grid'") !== FALSE ||
  304. is_page_template('template-portfolio.php') || is_post_type_archive('portfolio') || is_singular('portfolio') || is_tax('project-attributes') || is_tax('project-type')) {
  305. wp_enqueue_style('nectar-portfolio');
  306. }
  307. //WooCommerce
  308. if ( function_exists( 'is_woocommerce' ) ) {
  309. wp_enqueue_style('woocommerce');
  310. }
  311. if(strpos($post_content,'.svg') !== false && strpos($post_content,'icon color="Extra-Color-Gradient-1"') !== false ||
  312. strpos($post_content,'.svg') !== false && strpos($post_content,'icon color="Extra-Color-Gradient-2"') !== false ||
  313. strpos($post_content,'.svg') !== false && strpos($post_content,"icon color='Extra-Color-Gradient-1'") !== false ||
  314. strpos($post_content,'.svg') !== false && strpos($post_content,"icon color='Extra-Color-Gradient-2'") !== false ||
  315. strpos($portfolio_extra_content,'.svg') !== false && strpos($portfolio_extra_content,'icon color="Extra-Color-Gradient-1"') !== false ||
  316. strpos($portfolio_extra_content,'.svg') !== false && strpos($portfolio_extra_content,'icon color="Extra-Color-Gradient-2"') !== false ||
  317. strpos($portfolio_extra_content,'.svg') !== false && strpos($portfolio_extra_content,"icon color='Extra-Color-Gradient-1'") !== false ||
  318. strpos($portfolio_extra_content,'.svg') !== false && strpos($portfolio_extra_content,"icon color='Extra-Color-Gradient-2'") !== false ) {
  319. wp_enqueue_style('linea');
  320. }
  321. if(strpos($post_content,'iconsmind-') !== false ||
  322. strpos($portfolio_extra_content,'iconsmind-') !== false) {
  323. wp_enqueue_style('iconsmind');
  324. }
  325. global $options;
  326. $fancy_rcs = (!empty($options['form-fancy-select'])) ? $options['form-fancy-select'] : 'default';
  327. if($fancy_rcs == '1') {
  328. wp_enqueue_style('select2');
  329. }
  330. }
  331. add_action('wp_enqueue_scripts', 'nectar_page_sepcific_styles');
  332. $page_transition_bg = (!empty($options['transition-bg-color'])) ? $options['transition-bg-color'] : '#ffffff';
  333. $page_transition_bg_2 = (!empty($options['transition-bg-color-2'])) ? $options['transition-bg-color-2'] : $page_transition_bg;
  334. $page_transition_effect = (!empty($options['transition-effect'])) ? $options['transition-effect'] : 'standard';
  335. $transition_method = (!empty($options['transition-method'])) ? $options['transition-method'] : 'ajax';
  336. function nectar_page_transition_bg_fix() {
  337. global $page_transition_bg;
  338. global $page_transition_bg_2;
  339. global $page_transition_effect;
  340. //set html bg color to match preloading screen to avoid white flash in chrome
  341. if($page_transition_effect == 'horizontal_swipe') {
  342. $css = "html:not(.page-trans-loaded) { background-color: ".$page_transition_bg_2."; }";
  343. } else {
  344. $css = "html:not(.page-trans-loaded) { background-color: ".$page_transition_bg."; }";
  345. }
  346. wp_add_inline_style( 'main-styles', $css );
  347. }
  348. if(!empty($options['ajax-page-loading']) && $options['ajax-page-loading'] == '1' && $transition_method == 'standard') add_action('wp_enqueue_scripts', 'nectar_page_transition_bg_fix');
  349. #-----------------------------------------------------------------#
  350. # Dynamic Styles
  351. #-----------------------------------------------------------------#
  352. function nectar_quick_minify( $css ) {
  353. $css = preg_replace( '/\s+/', ' ', $css );
  354. $css = preg_replace( '/\/\*[^\!](.*?)\*\//', '', $css );
  355. $css = preg_replace( '/(,|:|;|\{|}) /', '$1', $css );
  356. $css = preg_replace( '/ (,|;|\{|})/', '$1', $css );
  357. $css = preg_replace( '/(:| )0\.([0-9]+)(%|em|ex|px|in|cm|mm|pt|pc)/i', '${1}.${2}${3}', $css );
  358. $css = preg_replace( '/(:| )(\.?)0(%|em|ex|px|in|cm|mm|pt|pc)/i', '${1}0', $css );
  359. return trim( $css );
  360. }
  361. if (!function_exists('nectar_colors_css_output')) {
  362. function nectar_colors_css_output(){
  363. include('css/colors.php');
  364. }
  365. }
  366. if (!function_exists('nectar_custom_css_output')) {
  367. function nectar_custom_css_output(){
  368. include('css/custom.php');
  369. }
  370. }
  371. if (!function_exists('nectar_fonts_output')) {
  372. function nectar_fonts_output(){
  373. include('css/fonts.php');
  374. }
  375. }
  376. if (!function_exists('nectar_page_specific_dynamic')) {
  377. function nectar_page_specific_dynamic(){
  378. ob_start();
  379. echo '<style type="text/css">';
  380. ////page header
  381. global $post;
  382. global $options;
  383. $font_color = get_post_meta($post->ID, '_nectar_header_font_color', true);
  384. if(!empty($font_color)) {
  385. echo '#page-header-bg h1, #page-header-bg .subheader, .nectar-box-roll .overlaid-content h1, .nectar-box-roll .overlaid-content .subheader, .page-header-no-bg h1, body .section-title #portfolio-nav a:hover i, .page-header-no-bg span, #page-header-bg #portfolio-nav a i, #page-header-bg span { color: '. $font_color .'!important; } ';
  386. echo 'body #page-header-bg a.pinterest-share i, body #page-header-bg a.facebook-share i, body #page-header-bg .twitter-share i, body #page-header-bg .google-plus-share i,
  387. body #page-header-bg .icon-salient-heart, body #page-header-bg .icon-salient-heart-2 { color: '. $font_color .'; }';
  388. } echo 'body .section-title #portfolio-nav a:hover i { opacity: 0.75; }';
  389. $logo_height = (!empty($options['use-logo']) && !empty($options['logo-height'])) ? intval($options['logo-height']) : 30;
  390. $header_padding = (!empty($options['header-padding'])) ? intval($options['header-padding']) : 28;
  391. $nav_font_size = (!empty($options['use-custom-fonts']) && $options['use-custom-fonts'] == 1 && !empty($options['navigation_font_size']) && $options['navigation_font_size'] != '-') ? intval(substr($options['navigation_font_size'],0,-2) *1.4 ) : 20;
  392. $dd_indicator_height = (!empty($options['use-custom-fonts']) && $options['use-custom-fonts'] == 1 && !empty($options['navigation_font_size']) && $options['navigation_font_size'] != '-') ? intval(substr($options['navigation_font_size'],0,-2)) -1 : 20;
  393. $padding_top = ceil(($logo_height/2)) - ceil(($nav_font_size/2));
  394. $padding_bottom = (ceil(($logo_height/2)) - ceil(($nav_font_size/2))) + $header_padding;
  395. $search_padding_top = ceil(($logo_height/2)) - ceil(21/2) +1;
  396. $search_padding_bottom = (ceil(($logo_height/2)) - ceil(21/2));
  397. $using_secondary = (!empty($options['header_layout'])) ? $options['header_layout'] : ' ';
  398. if($using_secondary == 'header_with_secondary'){
  399. $header_space = $logo_height + ($header_padding*2) + 34;
  400. }
  401. else {
  402. $header_space = $logo_height + ($header_padding*2);
  403. }
  404. //woo product title
  405. $wooSocial = ( !empty($options['woo_social']) && $options['woo_social'] == 1 ) ? '1' : '0';
  406. $wooSocialCount = 0;
  407. $wooProductTitlePadding = 0;
  408. if($wooSocial == '1') {
  409. if(!empty($options['woo-facebook-sharing']) && $options['woo-facebook-sharing'] == 1) $wooSocialCount++;
  410. if(!empty($options['woo-twitter-sharing']) && $options['woo-twitter-sharing'] == 1) $wooSocialCount++;
  411. if(!empty($options['woo-pinterest-sharing']) && $options['woo-pinterest-sharing'] == 1) $wooSocialCount++;
  412. if(!empty($options['woo-google-plus-sharing']) && $options['woo-google-plus-sharing'] == 1) $wooSocialCount++;
  413. if(!empty($options['woo-linkedin-sharing']) && $options['woo-linkedin-sharing'] == 1) $wooSocialCount++;
  414. $wooProductTitlePadding = ($wooSocialCount*52) + 50;
  415. }
  416. //hide scrollbar during loading if using fullpage option
  417. $page_full_screen_rows = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows', true) : '';
  418. if($page_full_screen_rows == 'on') {
  419. echo 'body,html { overflow: hidden; height: 100%;}';
  420. }
  421. //body border
  422. $body_border = (!empty($options['body-border'])) ? $options['body-border'] : 'off';
  423. $body_border_size = (!empty($options['body-border-size'])) ? $options['body-border-size'] : '20';
  424. $body_border_color = (!empty($options['body-border-color'])) ? $options['body-border-color'] : '#ffffff';
  425. if($body_border == '1') {
  426. $headerColorScheme = (!empty($options['header-color'])) ? $options['header-color'] : 'light';
  427. $userSetBG = (!empty($options['header-background-color']) && $headerColorScheme == 'custom') ? $options['header-background-color'] : '#ffffff';
  428. $activate_transparency = using_page_header($post->ID);
  429. if(empty($options['transparent-header']))
  430. $activate_transparency = 'false';
  431. echo '@media only screen and (min-width: 690px) {
  432. body {padding-bottom: '.$body_border_size.'px; }
  433. .container-wrap { padding-right: '.$body_border_size.'px; padding-left: '.$body_border_size.'px; padding-bottom: '.$body_border_size.'px;}
  434. .midnightInner, #footer-outer[data-full-width="1"] { padding-right: '.$body_border_size.'px; padding-left: '.$body_border_size.'px; }
  435. #slide-out-widget-area.fullscreen .bottom-text[data-has-desktop-social="false"], #slide-out-widget-area.fullscreen-alt .bottom-text[data-has-desktop-social="false"] {bottom: '. intVal($body_border_size + 28) .'px;}
  436. #header-outer, body #header-outer-bg-only {box-shadow: none; -webkit-box-shadow: none;}
  437. .slide-out-hover-icon-effect.small, .slide-out-hover-icon-effect:not(.small) {margin-top: '.$body_border_size.'px; margin-right: '.$body_border_size.'px;}
  438. #slide-out-widget-area-bg.fullscreen-alt { padding: '.$body_border_size.'px; }
  439. #slide-out-widget-area.slide-out-from-right-hover {margin-right: '.$body_border_size.'px;}
  440. .orbit-wrapper div.slider-nav span.left, .swiper-container .slider-prev { margin-left: '.$body_border_size.'px;} .orbit-wrapper div.slider-nav span.right, .swiper-container .slider-next { margin-right: '.$body_border_size.'px;}
  441. .admin-bar #slide-out-widget-area-bg.fullscreen-alt { padding-top: '. intval($body_border_size+32) .'px; }
  442. #header-outer, body.ascend #search-outer, #header-secondary-outer, #slide-out-widget-area.slide-out-from-right, #slide-out-widget-area.fullscreen .bottom-text { margin-top: '.$body_border_size.'px; padding-right: '.$body_border_size.'px; padding-left: '.$body_border_size.'px; }
  443. #nectar_fullscreen_rows, body #slide-out-widget-area-bg:not(.fullscreen-alt) { margin-top: '.$body_border_size.'px; }
  444. body:not(.ascend) .cart-menu-wrap .cart-menu , #slide-out-widget-area.fullscreen .off-canvas-social-links { padding-right: '.$body_border_size.'px!important; }
  445. .section-down-arrow, #slide-out-widget-area.fullscreen .off-canvas-social-links, #slide-out-widget-area.fullscreen .bottom-text { padding-bottom: '.$body_border_size.'px; }
  446. .ascend #search-outer #search #close, body[data-smooth-scrolling="0"] #header-outer .widget_shopping_cart, #page-header-bg .pagination-navigation { margin-right: '.$body_border_size.'px; }
  447. #to-top { right: '. intval($body_border_size+17) .'px; margin-bottom: '.$body_border_size.'px; }
  448. body[data-dropdown-style="minimal"][data-header-color="light"] #header-outer:not(.transparent) .sf-menu > li > ul { border-top: none; }
  449. body:not(.ascend) #header-outer .cart-menu { background-color: '.$body_border_color.'; border-left: 1px solid rgba(0,0,0,0.1); }
  450. #fp-nav { padding-right: '.$body_border_size.'px; } .body-border-left {background-color: '.$body_border_color.'; width: '.$body_border_size.'px;} .body-border-right {background-color: '.$body_border_color.'; width: '.$body_border_size.'px;} .body-border-bottom { background-color: '.$body_border_color.'; height: '.$body_border_size.'px;}
  451. .body-border-top {background-color: '.$body_border_color.'; height: '.$body_border_size.'px;} } @media only screen and (max-width: 690px) { .body-border-right, .body-border-left, .body-border-top, .body-border-bottom { display: none; } }';
  452. if(($body_border_color == '#ffffff' && $headerColorScheme == 'light' || $headerColorScheme == 'custom' && $body_border_color == $userSetBG ) && $activate_transparency != 'true' ) {
  453. echo '#header-outer:not([data-using-secondary="1"]):not(.transparent), body.ascend #search-outer, body[data-slide-out-widget-area-style="fullscreen-alt"] #header-outer:not([data-using-secondary="1"]) { margin-top: 0!important; } .body-border-top { z-index: 9997; } #slide-out-widget-area.slide-out-from-right { z-index: 9997;}
  454. #nectar_fullscreen_rows, body #slide-out-widget-area-bg { margin-top: 0px!important; }
  455. body #header-outer, body[data-slide-out-widget-area-style="slide-out-from-right-hover"] #header-outer { z-index: 9998; }
  456. #header-outer[data-full-width="true"]:not([data-transparent-header="true"]) header > .container, #header-outer[data-full-width="true"][data-transparent-header="true"].pseudo-data-transparent header > .container { padding-left: 0; padding-right: 0; }
  457. @media only screen and (max-width: 1080px) and (min-width: 1000px) {
  458. .ascend[data-slide-out-widget-area="true"] #header-outer[data-full-width="true"]:not([data-transparent-header="true"]) header > .container { padding-left: 0!important; padding-right: 0!important; }
  459. }
  460. body[data-header-search="false"][data-slide-out-widget-area="false"].ascend #header-outer[data-full-width="true"][data-cart="true"]:not([data-transparent-header="true"]) header > .container { padding-right: 28px; }
  461. body:not(.ascend) #header-outer[data-full-width="true"] header#top nav > ul.product_added.buttons { padding-right: '.intval($body_border_size+80) .'px!important; }
  462. body.ascend[data-slide-out-widget-area="true"] #header-outer[data-full-width="true"] .cart-menu-wrap { right: '.intval($body_border_size+51) .'px!important; }
  463. body[data-slide-out-widget-area-style="slide-out-from-right"] #header-outer[data-header-resize="0"] {
  464. -ms-transition: transform 0.7s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0.3s cubic-bezier(0.215,0.61,0.355,1), box-shadow 0.40s ease, margin 0.3s cubic-bezier(0.215,0.61,0.355,1)!important;
  465. -webkit-transition: -webkit-transform 0.7s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0.3s cubic-bezier(0.215,0.61,0.355,1), box-shadow 0.40s ease, margin 0.3s cubic-bezier(0.215,0.61,0.355,1)!important;
  466. transition: transform 0.7s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0.3s cubic-bezier(0.215,0.61,0.355,1), box-shadow 0.40s ease, margin 0.3s cubic-bezier(0.215,0.61,0.355,1)!important;
  467. }
  468. @media only screen and (min-width: 690px) {
  469. body div.portfolio-items[data-gutter*="px"][data-col-num="elastic"] { padding: 0!important; }
  470. }
  471. body #header-outer[data-transparent-header="true"].transparent { transition: none; -webkit-transition: none; }
  472. body[data-slide-out-widget-area-style="fullscreen-alt"] #header-outer { transition: background-color 0.3s cubic-bezier(0.215,0.61,0.355,1); -webkit-transition: background-color 0.3s cubic-bezier(0.215,0.61,0.355,1); }
  473. body.ascend[data-slide-out-widget-area="false"] #header-outer[data-header-resize="0"][data-cart="true"]:not(.transparent) { z-index: 100000; }
  474. ';
  475. } else if($body_border_color == '#ffffff' && $headerColorScheme == 'light' || $headerColorScheme == 'custom' && $body_border_color == $userSetBG) {
  476. echo '#header-outer.small-nav:not(.transparent), #header-outer[data-header-resize="0"]:not([data-using-secondary="1"]).scrolled-down:not(.transparent), #header-outer.detached, body.ascend #search-outer.small-nav, body[data-slide-out-widget-area-style="slide-out-from-right-hover"] #header-outer:not([data-using-secondary="1"]):not(.transparent), body[data-slide-out-widget-area-style="fullscreen-alt"] #header-outer:not([data-using-secondary="1"]).scrolled-down, body[data-slide-out-widget-area-style="fullscreen-alt"] #header-outer:not([data-using-secondary="1"]).transparent.side-widget-open { margin-top: 0px; z-index: 100000; }
  477. body.ascend[data-slide-out-widget-area="true"] #header-outer[data-full-width="true"].transparent:not(.small-nav) .cart-menu-wrap,
  478. body.ascend[data-slide-out-widget-area="true"] #header-outer[data-full-width="true"].scrolled-down .cart-menu-wrap { right: '.intval($body_border_size+80) .'px!important; }
  479. body.ascend[data-slide-out-widget-area="true"] #header-outer[data-full-width="true"] .cart-menu-wrap,
  480. body.ascend[data-slide-out-widget-area="false"] #header-outer[data-full-width="true"][data-cart="true"] .cart-menu-wrap { transition: right 0.3s cubic-bezier(0.215, 0.61, 0.355, 1); -webkit-transition: all 0.3s cubic-bezier(0.215, 0.61, 0.355, 1); }
  481. .ascend #header-outer.transparent .cart-menu-wrap {width: 130px;}
  482. body:not(.ascend) #header-outer[data-full-width="true"] header#top nav > ul.product_added.buttons { padding-right: '.intval($body_border_size+80) .'px!important; }
  483. #header-outer[data-full-width="true"][data-transparent-header="true"][data-header-resize="0"].scrolled-down:not(.transparent) .container,
  484. body[data-slide-out-widget-area-style="fullscreen-alt"] #header-outer[data-full-width="true"].scrolled-down .container,
  485. body[data-slide-out-widget-area-style="fullscreen-alt"] #header-outer[data-full-width="true"].transparent.side-widget-open .container { padding-left: 0!important; padding-right: 0!important; }
  486. body[data-header-search="false"][data-slide-out-widget-area="false"].ascend #header-outer[data-full-width="true"][data-cart="true"]:not(.transparent) header > .container { padding-right: 28px!important; }
  487. body.ascend[data-slide-out-widget-area="false"] #header-outer[data-full-width="true"][data-cart="true"].transparent .cart-menu-wrap { right: '.intval($body_border_size) .'px!important; }
  488. body.ascend[data-slide-out-widget-area="true"]:not([data-slide-out-widget-area-style="fullscreen"]):not([data-slide-out-widget-area-style="slide-out-from-right"]) #header-outer[data-full-width="true"][data-header-resize="0"].scrolled-down .cart-menu-wrap,
  489. body.ascend[data-slide-out-widget-area="true"][data-slide-out-widget-area-style="fullscreen"] #header-outer[data-full-width="true"][data-header-resize="0"].scrolled-down:not(.transparent) .cart-menu-wrap,
  490. body.ascend[data-slide-out-widget-area="true"][data-slide-out-widget-area-style="slide-out-from-right"] #header-outer[data-full-width="true"][data-header-resize="0"].scrolled-down:not(.transparent) .cart-menu-wrap,
  491. body[data-slide-out-widget-area-style="fullscreen-alt"].ascend #header-outer[data-full-width="true"].transparent.side-widget-open .cart-menu-wrap { right: '.intval($body_border_size+50) .'px!important; }
  492. @media only screen and (min-width: 690px) {
  493. body div.portfolio-items[data-gutter*="px"][data-col-num="elastic"] { padding: 0!important; }
  494. }
  495. #header-outer[data-full-width="true"][data-header-resize="0"].transparent { -ms-transition: transform 0.7s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0.3s cubic-bezier(0.215,0.61,0.355,1), margin 0.3s cubic-bezier(0.215,0.61,0.355,1)!important; transition: transform 0.7s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0.3s cubic-bezier(0.215,0.61,0.355,1), margin 0.3s cubic-bezier(0.215,0.61,0.355,1)!important; -webkit-transition: -webkit-transform 0.7s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0.3s cubic-bezier(0.215,0.61,0.355,1), margin 0.3s cubic-bezier(0.215,0.61,0.355,1)!important; }
  496. body #header-outer[data-transparent-header="true"][data-header-resize="0"] { -ms-transition: transform 0.7s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0.3s cubic-bezier(0.215,0.61,0.355,1), box-shadow 0.40s ease, margin 0.3s cubic-bezier(0.215,0.61,0.355,1)!important; -webkit-transition: -webkit-transform 0.7s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0.3s cubic-bezier(0.215,0.61,0.355,1), box-shadow 0.40s ease, margin 0.3s cubic-bezier(0.215,0.61,0.355,1)!important; transition: transform 0.7s cubic-bezier(0.645, 0.045, 0.355, 1), background-color 0.3s cubic-bezier(0.215,0.61,0.355,1), box-shadow 0.40s ease, margin 0.3s cubic-bezier(0.215,0.61,0.355,1)!important; }
  497. #header-outer[data-full-width="true"][data-header-resize="0"] header > .container { -ms-transition: padding 0.35s cubic-bezier(0.215,0.61,0.355,1); transition: padding 0.35s cubic-bezier(0.215,0.61,0.355,1); -webkit-transition: padding 0.35s cubic-bezier(0.215,0.61,0.355,1); }
  498. ';
  499. $trans_header = (!empty($options['transparent-header']) && $options['transparent-header'] == '1') ? $options['transparent-header'] : 'false';
  500. $bg_header = (!empty($post->ID) && $post->ID != 0) ? using_page_header($post->ID) : 0;
  501. $perm_trans = (!empty($options['header-permanent-transparent']) && $trans_header != 'false' && $bg_header == 'true') ? $options['header-permanent-transparent'] : 'false';
  502. if($perm_trans != '1') {
  503. echo '@media only screen and (max-width: 1000px) and (min-width: 690px) {
  504. #header-outer,#nectar_fullscreen_rows, body #slide-out-widget-area-bg { margin-top: 0!important; }
  505. }';
  506. }
  507. } else if ($body_border_color != '#ffffff' && $headerColorScheme == 'light' || $headerColorScheme == 'custom' && $body_border_color != $userSetBG ) {
  508. echo 'html body.ascend[data-user-set-ocm="off"] #header-outer[data-full-width="true"] .cart-outer[data-user-set-ocm="off"] .cart-menu-wrap { right: '.intval($body_border_size) .'px!important; }
  509. html body.ascend[data-user-set-ocm="1"] #header-outer[data-full-width="true"] .cart-outer[data-user-set-ocm="1"] .cart-menu-wrap { right: '.intval($body_border_size+77) .'px!important; }';
  510. }
  511. }
  512. //// header transparent option
  513. if(!empty($options['transparent-header']) && $options['transparent-header'] == '1') {
  514. $starting_color = (empty($options['header-starting-color'])) ? '#ffffff' : $options['header-starting-color'];
  515. $activate_transparency = using_page_header($post->ID);
  516. echo '
  517. #header-outer.transparent header#top #logo, #header-outer.transparent header#top #logo:hover {
  518. color: '.$starting_color.'!important;
  519. }
  520. #header-outer.transparent header#top nav > ul > li > a,
  521. #header-outer.transparent header#top nav ul #search-btn a span.icon-salient-search,
  522. #header-outer.transparent nav > ul > li > a > .sf-sub-indicator [class^="icon-"],
  523. #header-outer.transparent nav > ul > li > a > .sf-sub-indicator [class*=" icon-"],
  524. #header-outer.transparent .cart-menu .cart-icon-wrap .icon-salient-cart,
  525. .ascend #boxed #header-outer.transparent .cart-menu .cart-icon-wrap .icon-salient-cart
  526. {
  527. color: '.$starting_color.'!important;
  528. opacity: 0.75!important;
  529. transition: opacity 0.2s ease, color 0.2s ease;
  530. }
  531. #header-outer.transparent:not([data-lhe="animated_underline"]) header#top nav > ul > li > a:hover, #header-outer.transparent:not([data-lhe="animated_underline"]) header#top nav .sf-menu > li.sfHover > a, #header-outer.transparent:not([data-lhe="animated_underline"]) header#top nav .sf-menu > li.current_page_ancestor > a,
  532. #header-outer.transparent header#top nav .sf-menu > li.current-menu-item > a, #header-outer.transparent:not([data-lhe="animated_underline"]) header#top nav .sf-menu li.current-menu-item > a, #header-outer.transparent:not([data-lhe="animated_underline"]) header#top nav .sf-menu > li.current-menu-ancestor > a, #header-outer.transparent:not([data-lhe="animated_underline"]) header#top nav .sf-menu > li.current_page_item > a,
  533. #header-outer.transparent header#top nav > ul > li > a:hover > .sf-sub-indicator > i, #header-outer.transparent header#top nav > ul > li.sfHover > a > span > i, #header-outer.transparent header#top nav ul #search-btn a:hover span, #header-outer.transparent header#top nav ul .slide-out-widget-area-toggle a:hover span,
  534. #header-outer.transparent header#top nav .sf-menu > li.current-menu-item > a i, #header-outer.transparent header#top nav .sf-menu > li.current-menu-ancestor > a i,
  535. #header-outer.transparent .cart-outer:hover .icon-salient-cart, .ascend #boxed #header-outer.transparent .cart-outer:hover .cart-menu .cart-icon-wrap .icon-salient-cart
  536. {
  537. opacity: 1!important;
  538. color: '.$starting_color.'!important;
  539. }
  540. #header-outer.transparent[data-lhe="animated_underline"] header#top nav > ul > li > a:hover, #header-outer.transparent[data-lhe="animated_underline"] header#top nav .sf-menu > li.sfHover > a,
  541. #header-outer.transparent[data-lhe="animated_underline"] header#top nav .sf-menu > li.current-menu-ancestor > a, #header-outer.transparent[data-lhe="animated_underline"] header#top nav .sf-menu > li.current_page_item > a {
  542. opacity: 1!important;
  543. }
  544. #header-outer[data-lhe="animated_underline"].transparent header#top nav > ul > li > a:after, #header-outer.transparent header#top nav>ul>li.button_bordered>a:before {
  545. border-color: '.$starting_color.'!important;
  546. }
  547. #header-outer.transparent:not(.directional-nav-effect) > header#top nav ul .slide-out-widget-area-toggle a i.lines,
  548. #header-outer.transparent:not(.directional-nav-effect) > header#top nav ul .slide-out-widget-area-toggle a i.lines:before,
  549. #header-outer.transparent:not(.directional-nav-effect) > header#top nav ul .slide-out-widget-area-toggle a i.lines:after,
  550. #header-outer.transparent:not(.directional-nav-effect) > header#top nav ul .slide-out-widget-area-toggle[data-icon-animation="simple-transform"] .lines-button:after,
  551. #header-outer.transparent.directional-nav-effect > header#top nav ul .slide-out-widget-area-toggle a span.light .lines-button i, #header-outer.transparent.directional-nav-effect > header#top nav ul .slide-out-widget-area-toggle a span.light .lines-button i:after, #header-outer.transparent.directional-nav-effect > header#top nav ul .slide-out-widget-area-toggle a span.light .lines-button i:before,
  552. #header-outer.transparent:not(.directional-nav-effect) .midnightHeader.nectar-slider header#top nav ul .slide-out-widget-area-toggle a i.lines,
  553. #header-outer.transparent:not(.directional-nav-effect) .midnightHeader.nectar-slider header#top nav ul .slide-out-widget-area-toggle a i.lines:before,
  554. #header-outer.transparent:not(.directional-nav-effect) .midnightHeader.nectar-slider header#top nav ul .slide-out-widget-area-toggle a i.lines:after,
  555. #header-outer.transparent.directional-nav-effect .midnightHeader.nectar-slider header#top nav ul .slide-out-widget-area-toggle a span.light .lines-button i, #header-outer.transparent.directional-nav-effect .midnightHeader.nectar-slider header#top nav ul .slide-out-widget-area-toggle a span.light .lines-button i:after, #header-outer.transparent.directional-nav-effect .midnightHeader.nectar-slider header#top nav ul .slide-out-widget-area-toggle a span.light .lines-button i:before {
  556. background-color: '.$starting_color.'!important;
  557. }
  558. #header-outer.transparent header#top nav ul .slide-out-widget-area-toggle a i.lines,
  559. #header-outer.transparent header#top nav ul .slide-out-widget-area-toggle[data-icon-animation="simple-transform"] a i.lines-button:after {
  560. opacity: 0.75!important;
  561. }
  562. #header-outer.transparent.side-widget-open header#top nav ul .slide-out-widget-area-toggle a i.lines,
  563. #header-outer.transparent header#top nav ul .slide-out-widget-area-toggle[data-icon-animation="simple-transform"] a:hover i.lines-button:after,
  564. #header-outer.transparent header#top nav ul .slide-out-widget-area-toggle a:hover i.lines,
  565. #header-outer.transparent header#top nav ul .slide-out-widget-area-toggle a:hover i.lines:before,
  566. #header-outer.transparent header#top nav ul .slide-out-widget-area-toggle a:hover i.lines:after {
  567. opacity: 1!important;
  568. }
  569. ';
  570. $dark_header_color = (!empty($options['header-transparent-dark-color'])) ? $options['header-transparent-dark-color'] : '#000000';
  571. echo '#header-outer.transparent.dark-slide > header#top nav > ul > li > a,
  572. #header-outer.transparent.dark-row > header#top nav > ul > li > a,
  573. #header-outer.transparent.dark-slide:not(.directional-nav-effect) > header#top nav ul #search-btn a span,
  574. #header-outer.transparent.dark-row:not(.directional-nav-effect) > header#top nav ul #search-btn a span,
  575. #header-outer.transparent.dark-slide > header#top nav > ul > li > a > .sf-sub-indicator [class^="icon-"],
  576. #header-outer.transparent.dark-slide > header#top nav > ul > li > a > .sf-sub-indicator [class*=" icon-"],
  577. #header-outer.transparent.dark-row > header#top nav > ul > li > a > .sf-sub-indicator [class*=" icon-"],
  578. #header-outer.transparent.dark-slide:not(.directional-nav-effect) .cart-menu .cart-icon-wrap .icon-salient-cart,
  579. #header-outer.transparent.dark-row:not(.directional-nav-effect) .cart-menu .cart-icon-wrap .icon-salient-cart,
  580. body.ascend[data-header-color="custom"] #boxed #header-outer.transparent.dark-slide > header#top .cart-outer .cart-menu .cart-icon-wrap i,
  581. body.ascend #boxed #header-outer.transparent.dark-slide > header#top .cart-outer .cart-menu .cart-icon-wrap i,
  582. #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav > ul > li > a,
  583. #header-outer.transparent.dark-slide:not(.directional-nav-effect) .midnightHeader.nectar-slider header#top nav ul #search-btn a span,
  584. #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav > ul > li > a > .sf-sub-indicator [class^="icon-"],
  585. #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav > ul > li > a > .sf-sub-indicator [class*=" icon-"],
  586. #header-outer.transparent.dark-slide:not(.directional-nav-effect) .midnightHeader.nectar-slider header#top .cart-menu .cart-icon-wrap .icon-salient-cart,
  587. body.ascend[data-header-color="custom"] #boxed #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top .cart-outer .cart-menu .cart-icon-wrap i,
  588. body.ascend #boxed #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top .cart-outer .cart-menu .cart-icon-wrap i{
  589. color: '.$dark_header_color.'!important;
  590. }
  591. #header-outer.transparent.dark-slide:not(.directional-nav-effect) > header#top nav ul .slide-out-widget-area-toggle a .lines-button i,
  592. #header-outer.transparent.dark-slide:not(.directional-nav-effect) > header#top nav ul .slide-out-widget-area-toggle a .lines-button i:after,
  593. #header-outer.transparent.dark-slide:not(.directional-nav-effect) > header#top nav ul .slide-out-widget-area-toggle a .lines-button i:before,
  594. #header-outer.transparent.dark-slide:not(.directional-nav-effect) .midnightHeader.nectar-slider header#top nav ul .slide-out-widget-area-toggle a .lines-button i,
  595. #header-outer.transparent.dark-slide:not(.directional-nav-effect) .midnightHeader.nectar-slider header#top nav ul .slide-out-widget-area-toggle a .lines-button i:after,
  596. #header-outer.transparent.dark-slide:not(.directional-nav-effect) .midnightHeader.nectar-slider header#top nav ul .slide-out-widget-area-toggle a .lines-button i:before,
  597. #header-outer.transparent.dark-slide:not(.directional-nav-effect) > header#top nav ul .slide-out-widget-area-toggle[data-icon-animation="simple-transform"] .lines-button:after,
  598. #header-outer.transparent.dark-slide:not(.directional-nav-effect) .midnightHeader.nectar-slider header#top nav ul .slide-out-widget-area-toggle[data-icon-animation="simple-transform"] .lines-button:after {
  599. background-color: '.$dark_header_color.'!important;
  600. }
  601. #header-outer.transparent.dark-slide > header#top nav > ul > li > a:hover, #header-outer.transparent.dark-slide > header#top nav .sf-menu > li.sfHover > a, #header-outer.transparent.dark-slide > header#top nav .sf-menu > li.current_page_ancestor > a,
  602. #header-outer.transparent.dark-slide > header#top nav .sf-menu > li.current-menu-item > a, #header-outer.transparent.dark-slide > header#top nav .sf-menu > li.current-menu-ancestor > a, #header-outer.transparent.dark-slide > header#top nav .sf-menu > li.current_page_item > a,
  603. #header-outer.transparent.dark-slide > header#top nav > ul > li > a:hover > .sf-sub-indicator > i, #header-outer.transparent.dark-slide > header#top nav > ul > li.sfHover > a > span > i, #header-outer.transparent.dark-slide > header#top nav ul #search-btn a:hover span,
  604. #header-outer.transparent.dark-slide > header#top nav .sf-menu > li.current-menu-item > a i, #header-outer.transparent.dark-slide > header#top nav .sf-menu > li.current-menu-ancestor > a i,
  605. #header-outer.transparent.dark-slide > header#top .cart-outer:hover .icon-salient-cart,
  606. body.ascend[data-header-color="custom"] #boxed #header-outer.transparent.dark-slide > header#top .cart-outer:hover .cart-menu .cart-icon-wrap i,
  607. #header-outer.transparent.dark-slide > header#top #logo,
  608. #header-outer[data-permanent-transparent="1"].transparent.dark-slide .midnightHeader.nectar-slider header#top .span_9 > .slide-out-widget-area-toggle i,
  609. #header-outer.transparent:not([data-lhe="animated_underline"]).dark-slide header#top nav .sf-menu > li.current_page_item > a,
  610. #header-outer.transparent:not([data-lhe="animated_underline"]).dark-slide header#top nav .sf-menu > li.current-menu-ancestor > a,
  611. #header-outer.transparent:not([data-lhe="animated_underline"]).dark-slide header#top nav > ul > li > a:hover, #header-outer.transparent:not([data-lhe="animated_underline"]).dark-slide header#top nav .sf-menu > li.sfHover > a,
  612. #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav > ul > li > a:hover, #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav .sf-menu > li.sfHover > a, #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav .sf-menu > li.current_page_ancestor > a,
  613. #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav .sf-menu > li.current-menu-item > a, #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav .sf-menu > li.current-menu-ancestor > a, #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav .sf-menu > li.current_page_item > a,
  614. #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav > ul > li > a:hover > .sf-sub-indicator > i, #header-outer.transparent.dark-slide header#top nav > ul > li.sfHover > a > span > i, #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav ul #search-btn a:hover span,
  615. #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav .sf-menu > li.current-menu-item > a i, #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top nav .sf-menu > li.current-menu-ancestor > a i,
  616. #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top .cart-outer:hover .icon-salient-cart,
  617. body.ascend[data-header-color="custom"] #boxed #header-outer.transparent.dark-slide > header#top .cart-outer:hover .cart-menu .cart-icon-wrap i,
  618. #header-outer.transparent.dark-slide .midnightHeader.nectar-slider header#top #logo,
  619. .swiper-wrapper .swiper-slide[data-color-scheme="dark"] .slider-down-arrow i.icon-default-style[class^="icon-"],
  620. .slider-prev.dark-cs i, .slider-next.dark-cs i, .swiper-container .dark-cs.slider-prev .slide-count span, .swiper-container .dark-cs.slider-next .slide-count span {
  621. color: '.$dark_header_color.'!important;
  622. }
  623. #header-outer[data-lhe="animated_underline"].transparent.dark-slide header#top nav > ul > li > a:after,
  624. #header-outer[data-lhe="animated_underline"].transparent:not(.side-widget-open) .midnightHeader.dark header#top nav > ul > li > a:after,
  625. #header-outer[data-lhe="animated_underline"].transparent:not(.side-widget-open) .midnightHeader.default header#top nav > ul > li > a:after,
  626. #header-outer.dark-slide.transparent:not(.side-widget-open) header#top nav>ul>li.button_bordered>a:before {
  627. border-color: '.$dark_header_color.'!important;
  628. }
  629. .swiper-container[data-bullet_style="scale"] .slider-pagination.dark-cs .swiper-pagination-switch.swiper-active-switch i,
  630. .swiper-container[data-bullet_style="scale"] .slider-pagination.dark-cs .swiper-pagination-switch:hover i {
  631. background-color: '.$dark_header_color.';
  632. }
  633. .slider-pagination.dark-cs .swiper-pagination-switch {
  634. border: 1px solid '.$dark_header_color.';
  635. background-color: transparent;
  636. }
  637. .slider-pagination.dark-cs .swiper-pagination-switch:hover {
  638. background: none repeat scroll 0 0 '.$dark_header_color.';
  639. }
  640. .slider-pagination.dark-cs .swiper-active-switch {
  641. background: none repeat scroll 0 0 '.$dark_header_color.';
  642. }
  643. ';
  644. $dark_header_color = str_replace("#", "", $dark_header_color);;
  645. $darkcolorR = hexdec( substr( $dark_header_color, 0, 2 ) );
  646. $darkcolorG = hexdec( substr( $dark_header_color, 2, 2 ) );
  647. $darkcolorB = hexdec( substr( $dark_header_color, 4, 2 ) );
  648. echo '
  649. #fp-nav:not(.light-controls) ul li a span:after { background-color: #'.$dark_header_color.'; }
  650. #fp-nav:not(.light-controls) ul li a span { box-shadow: inset 0 0 0 8px rgba('.$darkcolorR.','.$darkcolorG.','.$darkcolorB.',0.3); -webkit-box-shadow: inset 0 0 0 8px rgba('.$darkcolorR.','.$darkcolorG.','.$darkcolorB.',0.3); }
  651. body #fp-nav ul li a.active span { box-shadow: inset 0 0 0 2px rgba('.$darkcolorR.','.$darkcolorG.','.$darkcolorB.',0.8); -webkit-box-shadow: inset 0 0 0 2px rgba('.$darkcolorR.','.$darkcolorG.','.$darkcolorB.',0.8); }';
  652. if($activate_transparency){
  653. //old IE versions
  654. echo '.no-rgba #header-space { display: none; } ';
  655. echo '@media only screen and (min-width: 1000px) {
  656. #header-space {
  657. display: none;
  658. }
  659. .nectar-slider-wrap.first-section, .parallax_slider_outer.first-section, .full-width-content.first-section,
  660. .parallax_slider_outer.first-section .swiper-slide .content, .nectar-slider-wrap.first-section .swiper-slide .content, #page-header-bg, .nder-page-header, #page-header-wrap,
  661. .full-width-section.first-section {
  662. margin-top: 0!important;
  663. }
  664. body #page-header-bg, body #page-header-wrap {
  665. height: '.$header_space.'px;
  666. }
  667. .swiper-container .slider-prev, .swiper-container .slider-next {
  668. top: 52%!important;
  669. }
  670. .first-section .nectar-slider-loading .loading-icon { opacity: 0 }
  671. body #search-outer { z-index: 100000; }
  672. }';
  673. } else if(!empty($options['header-bg-opacity'])) {
  674. $header_space_bg_color = (!empty($options['overall-bg-color'])) ? $options['overall-bg-color'] : '#ffffff';
  675. echo '#header-space { background-color: '.$header_space_bg_color.'}';
  676. }
  677. }
  678. echo '.pagination-navigation { -webkit-filter: url("'.esc_url(get_permalink()).'#goo"); filter: url("'.esc_url(get_permalink()).'#goo"); }';
  679. global $woocommerce;
  680. if($woocommerce && $woocommerce->cart->cart_contents_count > 0 && !empty($options['enable-cart']) && $options['enable-cart'] == '1' && !empty($options['header-fullwidth']) && $options['header-fullwidth'] == '1') {
  681. echo '@media only screen and (min-width: 1080px) {
  682. body:not(.material) #header-outer[data-full-width="true"] header#top nav > ul.product_added.buttons {
  683. padding-right: 80px!important;
  684. }
  685. body:not(.ascend) #header-outer[data-full-width="true"][data-remove-border="true"].transparent header#top nav > ul.product_added .slide-out-widget-area-toggle,
  686. body:not(.ascend) #header-outer[data-full-width="true"][data-remove-border="true"].side-widget-open header#top nav > ul.product_added .slide-out-widget-area-toggle {
  687. margin-right: -20px!important;
  688. }
  689. }';
  690. } elseif($woocommerce && !empty($options['enable-cart']) && $options['enable-cart'] == '1' && !empty($options['header-fullwidth']) && $options['header-fullwidth'] == '1') {
  691. echo '@media only screen and (min-width: 1080px) {
  692. body:not(.material) #header-outer[data-full-width="true"] header#top nav > ul.product_added.buttons {
  693. padding-right: 80px!important;
  694. }
  695. body:not(.ascend) #header-outer[data-full-width="true"][data-remove-border="true"].transparent header#top nav > ul.product_added .slide-out-widget-area-toggle,
  696. body:not(.ascend) #header-outer[data-full-width="true"][data-remove-border="true"].side-widget-open header#top nav > ul.product_added .slide-out-widget-area-toggle {
  697. margin-right: -20px!important;
  698. }
  699. }';
  700. }
  701. if($woocommerce && !empty($options['product_archive_bg_color'])) {
  702. echo '.post-type-archive-product.woocommerce .container-wrap, .tax-product_cat.woocommerce .container-wrap { background-color: '.$options['product_archive_bg_color'].'; } ';
  703. }
  704. if($woocommerce && !empty($options['product_bg_color'])) {
  705. echo '.woocommerce ul.products li.product.material, .woocommerce-page ul.products li.product.material { background-color: '.$options['product_bg_color'].'; }';
  706. }
  707. if($woocommerce && !empty($options['product_tab_position']) && $options['product_tab_position'] == 'fullwidth') echo '
  708. .woocommerce.single-product #single-meta { position: relative!important; top: 0!important; margin: 0; left: 8px; height: auto; }
  709. .woocommerce.single-product #single-meta:after { display: block; content: " "; clear: both; height: 1px; }
  710. .woocommerce-tabs { margin-top: 40px; clear: both; }
  711. @media only screen and (min-width: 1000px) {
  712. .woocommerce #reviews #comments, .woocommerce #reviews #review_form_wrapper { float: left; width: 47%; }
  713. .woocommerce #reviews #comments { margin-right: 3%; width: 50%; }
  714. .ascend.woocommerce #respond { margin-top: 0px!important; }
  715. .rtl.woocommerce #reviews #comments, .woocommerce #reviews #review_form_wrapper { float: right;}
  716. .rtl.woocommerce #reviews #comments { margin-left: 3%; margin-right: 0;}
  717. .woocommerce .woocommerce-tabs > div { margin-top: 15px!important; }
  718. .woocommerce #reviews #reply-title { margin-top: 5px!important; }
  719. }';
  720. if($woocommerce && $woocommerce->cart->cart_contents_count > 0 && !empty($options['enable-cart']) && $options['enable-cart'] == '1') {
  721. echo '@media only screen and (min-width: 1080px) and (max-width: 1475px) {
  722. header#top nav > ul.buttons {
  723. padding-right: 20px!important;
  724. }
  725. #boxed header#top nav > ul.product_added.buttons {
  726. padding-right: 0px!important;
  727. }
  728. #search-outer #search #close a {
  729. right: 110px;
  730. }
  731. }';
  732. }
  733. elseif($woocommerce && !empty($options['enable-cart']) && $options['enable-cart'] == '1') {
  734. echo '@media only screen and (min-width: 1080px) and (max-width: 1475px) {
  735. header#top nav > ul.product_added {
  736. padding-right: 20px!important;
  737. }
  738. #boxed header#top nav > ul.product_added.buttons {
  739. padding-right: 0px!important;
  740. }
  741. #search-outer #search #close a.product_added {
  742. right: 110px;
  743. }
  744. }';
  745. }
  746. //boxed css
  747. if(!empty($options['boxed_layout']) && $options['boxed_layout'] == '1') {
  748. $attachment = $options["background-attachment"];
  749. $position = $options["background-position"];
  750. $repeat = $options["background-repeat"];
  751. $background_color = $options["background-color"];
  752. echo 'body {
  753. background-image: url("'.nectar_options_img($options["background_image"]).'");
  754. background-position: '.$position.';
  755. background-repeat: '.$repeat.';
  756. background-color: '.$background_color.'!important;
  757. background-attachment: '.$attachment.';';
  758. if(!empty($options["background-cover"]) && $options["background-cover"] == '1') {
  759. echo 'background-size: cover;
  760. -moz-background-size: cover;
  761. -webkit-background-size: cover;
  762. -o-background-size: cover;';
  763. }
  764. echo '}';
  765. }
  766. //blog next post coloring
  767. if(is_singular('post')){
  768. $next_post = get_previous_post();
  769. if (!empty( $next_post )) {
  770. $blog_next_bg_color = get_post_meta($next_post->ID, '_nectar_header_bg_color', true);
  771. $blog_next_font_color = get_post_meta($next_post->ID, '_nectar_header_font_color', true);
  772. if(!empty($blog_next_font_color)){
  773. echo '.blog_next_prev_buttons .col h3, .blog_next_prev_buttons span {
  774. color: '.$blog_next_font_color.';
  775. }';
  776. }
  777. if(!empty($blog_next_bg_color)){
  778. echo '.blog_next_prev_buttons {
  779. background-color: '.$blog_next_bg_color.';
  780. }';
  781. }
  782. }
  783. }
  784. echo '</style>';
  785. $dynamic_css = ob_get_contents();
  786. ob_end_clean();
  787. echo nectar_quick_minify($dynamic_css);
  788. }
  789. }
  790. function generate_options_css() {
  791. $options = get_nectar_theme_options();
  792. if(!empty($options['external-dynamic-css']) && $options['external-dynamic-css'] == 1){
  793. $css_dir = get_stylesheet_directory() . '/css/'; // Shorten code, save 1 call
  794. ob_start(); // Capture all output (output buffering)
  795. //include css
  796. nectar_colors_css_output();
  797. nectar_custom_css_output();
  798. //if(!empty($options['use-custom-fonts']) && $options['use-custom-fonts'] == 1){
  799. nectar_fonts_output();
  800. //}
  801. $css = ob_get_clean(); // Get generated CSS (output buffering)
  802. file_put_contents($css_dir . 'dynamic-combined.css', $css, LOCK_EX); // Save it
  803. }
  804. }
  805. function nectar_enqueue_dynamic_css() {
  806. wp_register_style('dynamic-css', get_stylesheet_directory_uri() . '/css/dynamic-combined.css');
  807. wp_enqueue_style( 'dynamic-css');
  808. }
  809. //loaded in head
  810. $external_dynamic = (!empty($options['external-dynamic-css']) && $options['external-dynamic-css'] == 1) ? 'on' : 'off';
  811. if($external_dynamic != 'on') {
  812. add_action('wp_head', 'nectar_colors_css_output');
  813. add_action('wp_head', 'nectar_custom_css_output');
  814. add_action('wp_head', 'nectar_fonts_output');
  815. }
  816. //written to static css file
  817. else {
  818. add_action('wp_enqueue_scripts', 'nectar_enqueue_dynamic_css');
  819. //handle page specific dynamic
  820. add_action('wp_head', 'nectar_page_specific_dynamic');
  821. }
  822. $font_fields = array('navigation_font_family','navigation_dropdown_font_family','page_heading_font_family','page_heading_subtitle_font_family','off_canvas_nav_font_family','off_canvas_nav_subtext_font_family','body_font_family','h1_font_family','h2_font_family','h3_font_family','h4_font_family','h5_font_family','h6_font_family','i_font_family','label_font_family','nectar_slider_heading_font_family','home_slider_caption_font_family','testimonial_font_family','sidebar_footer_h_font_family','team_member_h_font_family','nectar_dropcap_font_family');
  823. if( !function_exists('nectar_lovelo_font')) {
  824. function nectar_lovelo_font(){
  825. echo "
  826. <!-- A font fabric font - http://fontfabric.com/lovelo-font/ -->
  827. <style> @font-face { font-family: 'Lovelo'; src: url('".get_template_directory_uri()."/css/fonts/Lovelo_Black.eot'); src: url('".get_template_directory_uri()."/css/fonts/Lovelo_Black.eot?#iefix') format('embedded-opentype'), url('".get_template_directory_uri()."/css/fonts/Lovelo_Black.woff') format('woff'), url('".get_template_directory_uri()."/css/fonts/Lovelo_Black.ttf') format('truetype'), url('".get_template_directory_uri()."/css/fonts/Lovelo_Black.svg#loveloblack') format('svg'); font-weight: normal; font-style: normal; } </style>";
  828. }
  829. }
  830. foreach($font_fields as $k => $v){
  831. if(isset($options[$v]['font-family']) && $options[$v]['font-family'] == 'Lovelo, sans-serif') {
  832. add_action('wp_head', 'nectar_lovelo_font');
  833. break;
  834. }
  835. }
  836. #-----------------------------------------------------------------#
  837. # Post formats
  838. #-----------------------------------------------------------------#
  839. add_theme_support( 'post-formats', array('quote','video','audio','gallery','link') );
  840. #-----------------------------------------------------------------#
  841. # Category Custom Meta
  842. #-----------------------------------------------------------------#
  843. include("nectar/meta/category-meta.php");
  844. #-----------------------------------------------------------------#
  845. # Automatic Feed Links
  846. #-----------------------------------------------------------------#
  847. if(function_exists('add_theme_support')) {
  848. add_theme_support('automatic-feed-links');
  849. }
  850. #-----------------------------------------------------------------#
  851. # Image sizes
  852. #-----------------------------------------------------------------#
  853. if (!function_exists('nectar_add_image_sizes')) {
  854. function nectar_add_image_sizes(){
  855. add_theme_support( 'post-thumbnails' );
  856. add_image_size( 'portfolio-thumb', 600, 403, true );
  857. add_image_size( 'portfolio-thumb_small', 400, 269, true );
  858. add_image_size( 'portfolio-widget', 100, 100, true );
  859. add_image_size( 'nectar_small_square', 140, 140, true );
  860. global $options;
  861. $masonry_sizing_type = (!empty($options['portfolio_masonry_grid_sizing']) && $options['portfolio_masonry_grid_sizing'] == 'photography') ? 'photography' : 'default';
  862. if($masonry_sizing_type != 'photography') {
  863. add_image_size( 'wide', 1000, 500, true );
  864. add_image_size( 'wide_small', 670, 335, true );
  865. add_image_size( 'regular', 500, 500, true );
  866. add_image_size( 'regular_small', 350, 350, true );
  867. add_image_size( 'tall', 500, 1000, true );
  868. add_image_size( 'wide_tall', 1000, 1000, true );
  869. add_image_size( 'wide_photography', 900, 600, true );
  870. } else {
  871. //these two are still needed for meta overlaid masonry blog
  872. add_image_size( 'regular', 500, 500, true );
  873. add_image_size( 'regular_small', 350, 350, true );
  874. add_image_size( 'wide_tall', 1000, 1000, true );
  875. add_image_size( 'wide_photography', 900, 600, true );
  876. add_image_size( 'wide_photography_small', 675, 450, true );
  877. add_image_size( 'regular_photography', 450, 600, true );
  878. add_image_size( 'regular_photography_small', 350, 467, true );
  879. add_image_size( 'wide_tall_photography', 900, 1200, true );
  880. }
  881. add_image_size( 'large_featured', 1700, 700, true );
  882. add_image_size( 'medium_featured', 800, 800, true );
  883. //add_image_size( 'disable_crop', 800, 800, true );
  884. }
  885. }
  886. nectar_add_image_sizes();
  887. function nectar_list_thumbnail_sizes(){
  888. global $_wp_additional_image_sizes;
  889. $sizes = array();
  890. foreach( get_intermediate_image_sizes() as $s ){
  891. $sizes[ $s ] = array( 0, 0 );
  892. if( in_array( $s, array( 'thumbnail', 'medium', 'large' ) ) ){
  893. $sizes[ $s ][0] = get_option( $s . '_size_w' );
  894. $sizes[ $s ][1] = get_option( $s . '_size_h' );
  895. }else{
  896. if( isset( $_wp_additional_image_sizes ) && isset( $_wp_additional_image_sizes[ $s ] ) )
  897. $sizes[ $s ] = array( $_wp_additional_image_sizes[ $s ]['width'], $_wp_additional_image_sizes[ $s ]['height'], );
  898. }
  899. }
  900. foreach( $sizes as $size => $atts ){
  901. echo $size . ' ' . implode( 'x', $atts ) . "\n";
  902. }
  903. }
  904. #-----------------------------------------------------------------#
  905. # Custom menu
  906. #-----------------------------------------------------------------#
  907. if ( function_exists( 'register_nav_menus' ) ) {
  908. $sideWidgetArea = (!empty($options['header-slide-out-widget-area'])) ? $options['header-slide-out-widget-area'] : 'off';
  909. $usingPRCompatLayout = false;
  910. if( !empty($options['header_format']) && $options['header_format'] == 'menu-left-aligned' || $options['header_format'] == 'centered-menu' ) {
  911. $usingPRCompatLayout = true;
  912. }
  913. if($sideWidgetArea == '1') {
  914. if($usingPRCompatLayout == true) {
  915. $nectar_menu_arr = array(
  916. 'top_nav' => 'Top Navigation Menu',
  917. 'top_nav_pull_right' => 'Top Navigation Menu Pull Right',
  918. 'secondary_nav' => 'Secondary Navigation Menu <br /> <small>Will only display if applicable header layout is selected.</small>',
  919. 'off_canvas_nav' => 'Off Canvas Navigation Menu'
  920. );
  921. } else {
  922. $nectar_menu_arr = array(
  923. 'top_nav' => 'Top Navigation Menu',
  924. 'secondary_nav' => 'Secondary Navigation Menu <br /> <small>Will only display if applicable header layout is selected.</small>',
  925. 'off_canvas_nav' => 'Off Canvas Navigation Menu'
  926. );
  927. }
  928. } else {
  929. if($usingPRCompatLayout == true) {
  930. $nectar_menu_arr = array(
  931. 'top_nav' => 'Top Navigation Menu',
  932. 'top_nav_pull_right' => 'Top Navigation Menu Pull Right',
  933. 'secondary_nav' => 'Secondary Navigation Menu <br /> <small>Will only display if applicable header layout is selected.</small>'
  934. );
  935. } else {
  936. $nectar_menu_arr = array(
  937. 'top_nav' => 'Top Navigation Menu',
  938. 'secondary_nav' => 'Secondary Navigation Menu <br /> <small>Will only display if applicable header layout is selected.</small>'
  939. );
  940. }
  941. }
  942. register_nav_menus($nectar_menu_arr);
  943. }
  944. //dropdown arrows
  945. if ( !function_exists( 'nectar_walker_nav_menu' ) ) {
  946. function nectar_walker_nav_menu() {
  947. class Nectar_Arrow_Walker_Nav_Menu extends Walker_Nav_Menu {
  948. function display_element($element, &$children_elements, $max_depth, $depth=0, $args, &$output) {
  949. $id_field = $this->db_fields['id'];
  950. global $options;
  951. $theme_skin = (!empty($options['theme-skin'])) ? $options['theme-skin'] : 'default';
  952. if($theme_skin == 'material') {
  953. $theme_skin = 'ascend';
  954. }
  955. $headerFormat = (!empty($options['header_format'])) ? $options['header_format'] : 'default';
  956. //button styling
  957. $button_style = get_post_meta( $element->$id_field, 'menu-item-nectar-button-style', true);
  958. if(!empty($button_style))
  959. $element->classes[] = $button_style;
  960. if (!empty($children_elements[$element->$id_field]) && $element->menu_item_parent == 0 && $theme_skin !='ascend' && $headerFormat != 'left-header') {
  961. $element->title = $element->title . '<span class="sf-sub-indicator"><i class="icon-angle-down"></i></span>';
  962. $element->classes[] = 'sf-with-ul';
  963. }
  964. if (!empty($children_elements[$element->$id_field]) && $element->menu_item_parent != 0 && $headerFormat != 'left-header') {
  965. $element->title = $element->title . '<span class="sf-sub-indicator"><i class="icon-angle-right"></i></span>';
  966. }
  967. if(empty($button_style) && $headerFormat == 'left-header')
  968. $element->title = '<span>'. $element->title . '</span>';
  969. Walker_Nav_Menu::display_element($element, $children_elements, $max_depth, $depth, $args, $output);
  970. }
  971. }
  972. }
  973. }
  974. nectar_walker_nav_menu();
  975. if ( !function_exists( 'nectar_description_walker_nav_menu' ) ) {
  976. function nectar_description_walker_nav_menu( $item_output, $item, $depth, $args ) {
  977. if ( 'off_canvas_nav' == $args->theme_location && $item->description ) {
  978. $item_output = str_replace( $args->link_after . '</a>', $args->link_after . '</a><small class="nav_desc">' . $item->description . '</small>', $item_output );
  979. }
  980. return $item_output;
  981. }
  982. }
  983. add_filter( 'walker_nav_menu_start_el', 'nectar_description_walker_nav_menu', 10, 4 );
  984. //menu button style option
  985. require_once('nectar/assets/functions/wp-menu-custom-items/menu-item-custom-fields.php');
  986. if(!function_exists('nectar_nav_button_style')) {
  987. add_action('wp_nav_menu_item_custom_fields', 'nectar_nav_button_style', 10, 4);
  988. $nectar_custom_menu_fields = array(
  989. 'menu-item-nectar-button-style' => ''
  990. );
  991. function nectar_nav_button_style($output, $item, $depth, $args) {
  992. $item_id = $item->ID;
  993. $name = "menu-item-nectar-button-style";
  994. $value = get_post_meta($item_id, $name, true);
  995. ?>
  996. <p class="description description-wide">
  997. <label for="<?php echo $name . "-". $item_id;?>">
  998. <?php echo __( 'Menu Item Style',NECTAR_THEME_NAME); ?> <br />
  999. <select id="<?php echo $name . "-". $item_id; ?>" class="widefat edit-menu-item-target" name="<?php echo $name . "[".$item_id."]"; ?>">
  1000. <option value="" <?php selected( $value, ''); ?>><?php echo __('Standard', NECTAR_THEME_NAME); ?> </option>
  1001. <option value="button_solid_color" <?php selected( $value, 'button_solid_color'); ?>><?php echo __('Button Accent Color', NECTAR_THEME_NAME); ?> </option>
  1002. <option value="button_solid_color_2" <?php selected( $value, 'button_solid_color_2'); ?>><?php echo __('Button Extra Color #1', NECTAR_THEME_NAME); ?> </option>
  1003. <option value="button_bordered" <?php selected( $value, 'button_bordered'); ?>><?php echo __('Button Bordered Accent Color', NECTAR_THEME_NAME); ?> </option>
  1004. <option value="button_bordered_2" <?php selected( $value, 'button_bordered_2'); ?>><?php echo __('Button Bordered Extra Color #1', NECTAR_THEME_NAME); ?> </option>
  1005. </select>
  1006. </label>
  1007. </p>
  1008. <?php }
  1009. add_action( 'wp_update_nav_menu_item', 'nectar_nav_button_style_update', 10, 3 );
  1010. function nectar_nav_button_style_update( $menu_id, $menu_item_db_id, $menu_item_args ) {
  1011. $current_screen = get_current_screen();
  1012. //fix auto add new pages to top nav
  1013. $on_post_type = ($current_screen && isset($current_screen->post_type) && !empty($current_screen->post_type) ) ? true : false;
  1014. global $nectar_custom_menu_fields;
  1015. if ( defined( 'DOING_AJAX' ) && DOING_AJAX || $on_post_type) {
  1016. return;
  1017. }
  1018. check_admin_referer( 'update-nav_menu', 'update-nav-menu-nonce' );
  1019. foreach ( $nectar_custom_menu_fields as $key => $label ) {
  1020. // Sanitize
  1021. if ( ! empty( $_POST[ $key ][ $menu_item_db_id ] ) ) {
  1022. // Do some checks here...
  1023. $value = sanitize_text_field($_POST[ $key ][ $menu_item_db_id ]);
  1024. }
  1025. else {
  1026. $value = null;
  1027. }
  1028. // Update
  1029. if ( ! is_null( $value ) ) {
  1030. update_post_meta( $menu_item_db_id, $key, $value );
  1031. }
  1032. else {
  1033. delete_post_meta( $menu_item_db_id, $key );
  1034. }
  1035. }
  1036. }
  1037. }
  1038. #-----------------------------------------------------------------#
  1039. # TGM
  1040. #-----------------------------------------------------------------#
  1041. $nectar_disable_tgm = (!empty($options['disable_tgm']) && $options['disable_tgm'] == '1') ? true : false;
  1042. if(!$nectar_disable_tgm) {
  1043. require_once('nectar/tgm-plugin-activation/class-tgm-plugin-activation.php');
  1044. require_once('nectar/tgm-plugin-activation/required_plugins.php');
  1045. }
  1046. #-----------------------------------------------------------------#
  1047. # Nectar VC
  1048. #-----------------------------------------------------------------#
  1049. //Add Nectar Functionality to VC/*
  1050. if (class_exists('WPBakeryVisualComposerAbstract') && defined( 'SALIENT_VC_ACTIVE')) {
  1051. function add_nectar_to_vc(){
  1052. if(version_compare(WPB_VC_VERSION,'4.9','>=')) {
  1053. require_once locate_template('/nectar/nectar-vc-addons/nectar-addons.php');
  1054. } else {
  1055. require_once locate_template('/nectar/nectar-vc-addons/nectar-addons-no-lean.php');
  1056. }
  1057. }
  1058. add_action('init','add_nectar_to_vc', 5);
  1059. add_action('admin_enqueue_scripts', 'nectar_vc_styles');
  1060. function nectar_vc_styles() {
  1061. global $nectar_get_template_directory_uri;
  1062. wp_enqueue_style('nectar_vc', $nectar_get_template_directory_uri .'/nectar/nectar-vc-addons/nectar-addons.css', array(), '8.5.5', 'all');
  1063. }
  1064. function nectar_vc_library_cat_list() {
  1065. return array( __('All',NECTAR_THEME_NAME) => 'all',
  1066. __('About',NECTAR_THEME_NAME) => 'about',
  1067. __('Blog',NECTAR_THEME_NAME) => 'blog',
  1068. __('Call To Action',NECTAR_THEME_NAME) => 'cta',
  1069. __('Counters',NECTAR_THEME_NAME) => 'counters',
  1070. __('General',NECTAR_THEME_NAME) => 'general',
  1071. __('Icons',NECTAR_THEME_NAME) => 'icons',
  1072. __('Hero Section',NECTAR_THEME_NAME) => 'hero_section',
  1073. __('Google Map',NECTAR_THEME_NAME) => 'map',
  1074. __('Project',NECTAR_THEME_NAME) => 'portfolio',
  1075. __('Pricing',NECTAR_THEME_NAME) => 'pricing',
  1076. __('Services',NECTAR_THEME_NAME) => 'services',
  1077. __('Team',NECTAR_THEME_NAME) => 'team',
  1078. __('Testimonials',NECTAR_THEME_NAME) => 'testimonials');
  1079. }
  1080. if(!function_exists('add_salient_studio_to_vc')) {
  1081. function add_salient_studio_to_vc() {
  1082. if (is_admin()) {
  1083. require_once locate_template('/nectar/nectar-vc-addons/salient-studio-templates.php');
  1084. }
  1085. }
  1086. }
  1087. add_salient_studio_to_vc();
  1088. } else if (class_exists('WPBakeryVisualComposerAbstract')) {
  1089. function nectar_font_awesome() {
  1090. global $nectar_get_template_directory_uri;
  1091. wp_enqueue_style('font-awesome', $nectar_get_template_directory_uri . '/css/font-awesome.min.css');
  1092. }
  1093. if (!is_admin()) {
  1094. add_action('init','nectar_font_awesome', 99);
  1095. }
  1096. }
  1097. #-----------------------------------------------------------------#
  1098. # Theme Skin
  1099. #-----------------------------------------------------------------#
  1100. if(!empty($options['theme-skin'])){
  1101. $nectar_theme_skin = $options['theme-skin'];
  1102. add_filter('body_class','nectar_theme_skin_class');
  1103. function nectar_theme_skin_class($classes) {
  1104. global $nectar_theme_skin;
  1105. // add 'class-name' to the $classes array
  1106. $classes[] = $nectar_theme_skin;
  1107. // return the $classes array
  1108. return $classes;
  1109. }
  1110. function nectar_theme_skin_css(){
  1111. global $nectar_theme_skin;
  1112. wp_enqueue_style('skin-'.$nectar_theme_skin);
  1113. }
  1114. if($nectar_theme_skin != 'original') {
  1115. add_action('wp_enqueue_scripts', 'nectar_theme_skin_css');
  1116. }
  1117. } else {
  1118. $nectar_theme_skin = 'default';
  1119. }
  1120. #-----------------------------------------------------------------#
  1121. # Ajax Search
  1122. #-----------------------------------------------------------------#
  1123. if (!function_exists('nectar_add_ajax_to_search')) {
  1124. function nectar_add_ajax_to_search() {
  1125. global $nectar_theme_skin;
  1126. $ajax_search = (!empty($options['header-disable-ajax-search']) && $options['header-disable-ajax-search'] == '1') ? 'no' : 'yes';
  1127. $headerSearch = (!empty($options['header-disable-search']) && $options['header-disable-search'] == '1') ? 'false' : 'true';
  1128. if($ajax_search == 'yes' && $headerSearch != 'false' && $nectar_theme_skin != 'material' ){
  1129. require_once('nectar/assets/functions/ajax-search/wp-search-suggest.php');
  1130. }
  1131. }
  1132. }
  1133. nectar_add_ajax_to_search();
  1134. #-----------------------------------------------------------------#
  1135. # If Using Ajaxify
  1136. #-----------------------------------------------------------------#
  1137. function ajaxify_non_cached_scripts( $url ) {
  1138. if ( FALSE !== strpos( $url, 'nectar-slider.js' )) {
  1139. //return "$url' class='always";
  1140. }
  1141. if( FALSE !== strpos( $url, 'vc_chart.js' )) {
  1142. return "$url' class='always";
  1143. }
  1144. if( FALSE !== strpos( $url, 'ProgressCircle.js' )){
  1145. return "$url' class='always";
  1146. }
  1147. // not our file
  1148. return $url;
  1149. }
  1150. if(!empty($options['ajax-page-loading']) && $options['ajax-page-loading'] == '1') {
  1151. add_filter( 'clean_url', 'ajaxify_non_cached_scripts', 11, 1 );
  1152. }
  1153. #-----------------------------------------------------------------#
  1154. # Site Title
  1155. #-----------------------------------------------------------------#
  1156. function theme_slug_setup() {
  1157. add_theme_support( 'title-tag' );
  1158. }
  1159. add_action( 'after_setup_theme', 'theme_slug_setup' );
  1160. if ( ! function_exists( '_wp_render_title_tag' ) ) {
  1161. function theme_slug_render_title() { ?>
  1162. <title><?php wp_title( '|', true, 'right' ); ?></title> <?php
  1163. }
  1164. add_action( 'wp_head', 'theme_slug_render_title' );
  1165. }
  1166. #-----------------------------------------------------------------#
  1167. # Widget areas
  1168. #-----------------------------------------------------------------#
  1169. if(function_exists('register_sidebar')) {
  1170. register_sidebar(array('name' => 'Blog Sidebar', 'id' => 'blog-sidebar', 'before_widget' => '<div id="%1$s" class="widget %2$s">','after_widget' => '</div>', 'before_title' => '<h4>', 'after_title' => '</h4>'));
  1171. register_sidebar(array('name' => 'Page Sidebar', 'id' => 'page-sidebar','before_widget' => '<div id="%1$s" class="widget %2$s">','after_widget' => '</div>', 'before_title' => '<h4>', 'after_title' => '</h4>'));
  1172. register_sidebar(array('name' => 'WooCommerce Sidebar', 'id' => 'woocommerce-sidebar', 'before_widget' => '<div id="%1$s" class="widget %2$s">','after_widget' => '</div>', 'before_title' => '<h4>', 'after_title' => '</h4>'));
  1173. register_sidebar(array('name' => 'Extra Sidebar', 'id' => 'nectar-extra-sidebar', 'before_widget' => '<div id="%1$s" class="widget %2$s">','after_widget' => '</div>', 'before_title' => '<h4>', 'after_title' => '</h4>'));
  1174. register_sidebar(array('name' => 'Footer Area 1', 'id' => 'footer-area-1', 'before_widget' => '<div id="%1$s" class="widget %2$s">','after_widget' => '</div>', 'before_title' => '<h4>', 'after_title' => '</h4>'));
  1175. global $options;
  1176. $footerColumns = (!empty($options['footer_columns'])) ? $options['footer_columns'] : '4';
  1177. if($footerColumns == '2' || $footerColumns == '3' || $footerColumns == '4' || $footerColumns == '5'){
  1178. register_sidebar(array('name' => 'Footer Area 2', 'id' => 'footer-area-2','before_widget' => '<div id="%1$s" class="widget %2$s">','after_widget' => '</div>', 'before_title' => '<h4>', 'after_title' => '</h4>'));
  1179. }
  1180. if($footerColumns == '3' || $footerColumns == '4' || $footerColumns == '5'){
  1181. register_sidebar(array('name' => 'Footer Area 3', 'id' => 'footer-area-3', 'before_widget' => '<div id="%1$s" class="widget %2$s">','after_widget' => '</div>', 'before_title' => '<h4>', 'after_title' => '</h4>'));
  1182. }
  1183. if($footerColumns == '4' || $footerColumns == '5'){
  1184. register_sidebar(array('name' => 'Footer Area 4', 'id' => 'footer-area-4', 'before_widget' => '<div id="%1$s" class="widget %2$s">','after_widget' => '</div>', 'before_title' => '<h4>', 'after_title' => '</h4>'));
  1185. }
  1186. $sideWidgetArea = (!empty($options['header-slide-out-widget-area'])) ? $options['header-slide-out-widget-area'] : 'off';
  1187. if($sideWidgetArea == '1') {
  1188. register_sidebar(array('name' => 'Off Canvas Menu', 'id' => 'slide-out-widget-area', 'before_widget' => '<div id="%1$s" class="widget %2$s">','after_widget' => '</div>', 'before_title' => '<h4>', 'after_title' => '</h4>'));
  1189. }
  1190. }
  1191. #-----------------------------------------------------------------#
  1192. # Custom widgets
  1193. #-----------------------------------------------------------------#
  1194. //Recent Posts Extra
  1195. include('includes/custom-widgets/recent-posts-extra-widget.php');
  1196. //Recent portfolio items
  1197. include('includes/custom-widgets/recent-projects-widget.php');
  1198. //Recent portfolio items
  1199. include('includes/custom-widgets/popular-posts.php');
  1200. function register_nectar_popular_posts_widget() {
  1201. register_widget( 'Nectar_Popular_Posts' );
  1202. }
  1203. add_action( 'widgets_init', 'register_nectar_popular_posts_widget' );
  1204. //allow shortcodes in text widget
  1205. add_filter('widget_text', 'do_shortcode');
  1206. #-----------------------------------------------------------------#
  1207. # Nectar Hooks
  1208. #-----------------------------------------------------------------#
  1209. function nectar_hook_after_body_open() {
  1210. do_action('nectar_hook_after_body_open');
  1211. }
  1212. function nectar_hook_before_body_close() {
  1213. do_action('nectar_hook_before_body_close');
  1214. }
  1215. function nectar_hook_pull_right_menu_items() {
  1216. do_action('nectar_hook_pull_right_menu_items');
  1217. }
  1218. function nectar_hook_secondary_header_menu_items() {
  1219. do_action('nectar_hook_secondary_header_menu_items');
  1220. }
  1221. function nectar_hook_before_footer_widget_area() {
  1222. do_action('nectar_hook_before_footer_widget_area');
  1223. }
  1224. function nectar_hook_after_footer_widget_area() {
  1225. do_action('nectar_hook_after_footer_widget_area');
  1226. }
  1227. function nectar_hook_ocm_bottom_meta() {
  1228. do_action('nectar_hook_ocm_bottom_meta');
  1229. }
  1230. #-----------------------------------------------------------------#
  1231. # Excerpt related
  1232. #-----------------------------------------------------------------#
  1233. //excerpt length
  1234. if(!function_exists('excerpt_length')){
  1235. function excerpt_length( $length ) {
  1236. global $options;
  1237. $excerpt_length = (!empty($options['blog_excerpt_length'])) ? intval($options['blog_excerpt_length']) : 30;
  1238. return $excerpt_length;
  1239. }
  1240. }
  1241. add_filter( 'excerpt_length', 'excerpt_length', 999 );
  1242. //custom excerpt ending
  1243. if(!function_exists('excerpt_more')){
  1244. function excerpt_more( $more ) {
  1245. return '...';
  1246. }
  1247. }
  1248. add_filter('excerpt_more', 'excerpt_more');
  1249. if (!function_exists('nectar_set_post_views')) {
  1250. function nectar_set_post_views() {
  1251. global $post;
  1252. if ( get_post_type() == 'post' && is_single() ) {
  1253. $post_id = $post->ID;
  1254. if ( !empty($post_id) ) {
  1255. $the_view_count = get_post_meta( $post_id, 'nectar_blog_post_view_count', true );
  1256. if ( $the_view_count != '' ) {
  1257. $the_view_count = intval($the_view_count);
  1258. $the_view_count++;
  1259. update_post_meta( $post_id, 'nectar_blog_post_view_count', $the_view_count );
  1260. } else {
  1261. $the_view_count = 0;
  1262. delete_post_meta( $post_id, 'nectar_blog_post_view_count' );
  1263. add_post_meta( $post_id, 'nectar_blog_post_view_count' , '0' );
  1264. }
  1265. }
  1266. }
  1267. }
  1268. }
  1269. add_action('wp_head', 'nectar_set_post_views');
  1270. if(!function_exists('nectar_excerpt')){
  1271. function nectar_excerpt($limit) {
  1272. if(has_excerpt()) {
  1273. $the_excerpt = get_the_excerpt();
  1274. $the_excerpt = preg_replace('/\[[^\]]+\]/', '', $the_excerpt); # strip shortcodes, keep shortcode content
  1275. return wp_trim_words($the_excerpt, $limit);
  1276. } else {
  1277. $the_content = get_the_content();
  1278. $the_content = preg_replace('/\[[^\]]+\]/', '', $the_content); # strip shortcodes, keep shortcode content
  1279. return wp_trim_words($the_content, $limit);
  1280. }
  1281. }
  1282. }
  1283. //fixing filtering for shortcodes
  1284. function shortcode_empty_paragraph_fix($content){
  1285. $array = array (
  1286. '<p>[' => '[',
  1287. ']</p>' => ']',
  1288. ']<br />' => ']'
  1289. );
  1290. $content = strtr($content, $array);
  1291. return $content;
  1292. }
  1293. add_filter('the_content', 'shortcode_empty_paragraph_fix');
  1294. //remove the page jump when clicking read more button
  1295. function remove_more_jump_link($link) {
  1296. $offset = strpos($link, '#more-');
  1297. if ($offset) {
  1298. $end = strpos($link, '"',$offset);
  1299. }
  1300. if ($end) {
  1301. $link = substr_replace($link, '', $offset, $end-$offset);
  1302. }
  1303. return $link;
  1304. }
  1305. add_filter('the_content_more_link', 'remove_more_jump_link');
  1306. if(!function_exists('nectar_auto_gallery_lightbox')){
  1307. function nectar_auto_gallery_lightbox($content){
  1308. preg_match_all('/<a(.*?)href=(?:\'|")([^<]*?).(bmp|gif|jpeg|jpg|png)(?:\'|")(.*?)>/i', $content, $links);
  1309. if(isset($links[0])) {
  1310. $rel_hash = '[gallery-'.wp_generate_password(4, FALSE, FALSE).']';
  1311. foreach($links[0] as $id => $link) {
  1312. if(preg_match('/<a.*?rel=(?:\'|")(.*?)(?:\'|").*?>/', $link, $result) === 1) {
  1313. $content = str_replace($link, preg_replace('/rel=(?:\'|")(.*?)(?:\'|")/', 'rel="prettyPhoto'.$rel_hash.'"', $link), $content);
  1314. }
  1315. else {
  1316. $content = str_replace($link, '<a'.$links[1][$id].'href="'.$links[2][$id].'.'.$links[3][$id].'"'.$links[4][$id].' rel="prettyPhoto'. $rel_hash .'">', $content);
  1317. }
  1318. }
  1319. }
  1320. return $content;
  1321. }
  1322. }
  1323. if(!empty($options['default-lightbox']) && $options['default-lightbox'] == '1'){
  1324. add_filter('the_content', 'nectar_auto_gallery_lightbox');
  1325. add_filter('body_class','nectar_auto_gallery_lightbox_class');
  1326. function nectar_auto_gallery_lightbox_class($classes) {
  1327. // add 'class-name' to the $classes array
  1328. $classes[] = 'nectar-auto-lightbox';
  1329. // return the $classes array
  1330. return $classes;
  1331. }
  1332. }
  1333. #-----------------------------------------------------------------#
  1334. # Add URL option into attachment details for visual composer image gallery element
  1335. #-----------------------------------------------------------------#
  1336. function nectar_add_attachment_field_credit( $form_fields, $post ) {
  1337. $form_fields['image-url'] = array(
  1338. 'label' => 'Image URL',
  1339. 'input' => 'text',
  1340. 'value' => get_post_meta( $post->ID, 'nectar_image_gal_url', true ),
  1341. 'helps' => ''
  1342. );
  1343. $form_fields['shape-bg-color'] = array(
  1344. 'label' => 'BG Color',
  1345. 'input' => 'text',
  1346. 'value' => esc_attr( get_post_meta( $post->ID, 'nectar_particle_shape_bg_color', true ) ),
  1347. 'helps' => 'Enter your color in hex format e.g. "#1ed760'
  1348. );
  1349. $image_gal_masonry_sizing_mapping = null;
  1350. $image_gal_masonry_sizing_mapping_options = array('regular'=>'Regular', 'wide'=>'Wide', 'tall'=>'Tall', 'wide_tall'=>'Wide & Tall');
  1351. $meta = get_post_meta( $post->ID, 'nectar_image_gal_masonry_sizing', true );
  1352. foreach( $image_gal_masonry_sizing_mapping_options as $key => $option ) {
  1353. $image_gal_masonry_sizing_mapping .= '<option value="' . $key . '"';
  1354. if( $meta ){
  1355. if( $meta == $key ) $image_gal_masonry_sizing_mapping .= ' selected="selected"';
  1356. }
  1357. $image_gal_masonry_sizing_mapping .= '>'. $option .'</option>';
  1358. }
  1359. $color_mapping = null;
  1360. $color_mapping_options = array('original'=>'Original', 'solid'=>'Solid Color', 'random'=>'Random');
  1361. $meta = get_post_meta( $post->ID, 'nectar_particle_shape_color_mapping', true );
  1362. foreach( $color_mapping_options as $key => $option ) {
  1363. $color_mapping .= '<option value="' . $key . '"';
  1364. if( $meta ){
  1365. if( $meta == $key ) $color_mapping .= ' selected="selected"';
  1366. }
  1367. $color_mapping .= '>'. $option .'</option>';
  1368. }
  1369. $density = null;
  1370. $density_options = array('very_low'=>'Very Low', 'low'=>'Low', 'medium'=>'Medium', 'high'=>'High', 'very_high'=>'Very High');
  1371. $meta = get_post_meta( $post->ID, 'nectar_particle_shape_density', true );
  1372. foreach( $density_options as $key => $option ) {
  1373. $density .= '<option value="' . $key . '"';
  1374. if( $meta ){
  1375. if( $meta == $key ) $density .= ' selected="selected"';
  1376. }
  1377. $density .= '>'. $option .'</option>';
  1378. }
  1379. $alpha = null;
  1380. $alpha_options = array('original'=>'Original', 'random'=>'Random');
  1381. $meta = get_post_meta( $post->ID, 'nectar_particle_shape_color_alpha', true );
  1382. foreach( $alpha_options as $key => $option ) {
  1383. $alpha .= '<option value="' . $key . '"';
  1384. if( $meta ){
  1385. if( $meta == $key ) $alpha .= ' selected="selected"';
  1386. }
  1387. $alpha .= '>'. $option .'</option>';
  1388. }
  1389. $form_fields["masonry-image-sizing"] = array(
  1390. 'label' => 'Masonry Sizing',
  1391. 'input' => 'html',
  1392. 'html' => "<select name='attachments[{$post->ID}][masonry-image-sizing]' id='attachments[{$post->ID}][masonry-image-sizing]'>".$image_gal_masonry_sizing_mapping."</select>",
  1393. 'helps' => '',
  1394. 'value' => get_post_meta( $post->ID, 'nectar_image_gal_masonry_sizing', true )
  1395. );
  1396. $form_fields["shape-color-mapping"] = array(
  1397. 'label' => 'Color Mapping',
  1398. 'input' => 'html',
  1399. 'html' => "<select name='attachments[{$post->ID}][shape-color-mapping]' id='attachments[{$post->ID}][shape-color-mapping]'>".$color_mapping."</select>",
  1400. 'helps' => '',
  1401. 'value' => get_post_meta( $post->ID, 'nectar_particle_shape_color_mapping', true )
  1402. );
  1403. $form_fields["shape-color-alpha"] = array(
  1404. 'label' => 'Color Alpha',
  1405. 'input' => 'html',
  1406. 'html' => "<select name='attachments[{$post->ID}][shape-color-alpha]' id='attachments[{$post->ID}][shape-color-alpha]'>".$alpha."</select>",
  1407. 'helps' => '',
  1408. 'value' => get_post_meta( $post->ID, 'nectar_particle_shape_color_alpha', true )
  1409. );
  1410. $form_fields['shape-particle-color'] = array(
  1411. 'label' => 'Particle Color',
  1412. 'input' => 'text',
  1413. 'value' => esc_attr( get_post_meta( $post->ID, 'nectar_particle_shape_color', true ) ),
  1414. 'helps' => 'Will only be used if Color Mapping is set to "Solid Color". Enter your color in hex format e.g. "#1ed760'
  1415. );
  1416. $form_fields["shape-density"] = array(
  1417. 'label' => 'Particle Density',
  1418. 'input' => 'html',
  1419. 'html' => "<select name='attachments[{$post->ID}][shape-density]' id='attachments[{$post->ID}][shape-density]'>".$density."</select>",
  1420. 'helps' => 'The lower the density, the higher the performance',
  1421. 'value' => get_post_meta( $post->ID, 'nectar_particle_shape_density', true )
  1422. );
  1423. $form_fields['shape-max-particle-size'] = array(
  1424. 'label' => 'Max Particle Size',
  1425. 'input' => 'text',
  1426. 'value' => get_post_meta( $post->ID, 'nectar_particle_max_particle_size', true ),
  1427. 'helps' => 'The default is 3'
  1428. );
  1429. return $form_fields;
  1430. }
  1431. add_filter( 'attachment_fields_to_edit', 'nectar_add_attachment_field_credit', 10, 2 );
  1432. function nectar_add_attachment_field_credit_save( $post, $attachment ) {
  1433. if( isset( $attachment['image-url'] ) ) {
  1434. $image_url_sanitized = sanitize_text_field($attachment['image-url']);
  1435. update_post_meta( $post['ID'], 'nectar_image_gal_url', $image_url_sanitized );
  1436. }
  1437. if( isset( $attachment['masonry-image-sizing'] ) ) {
  1438. $masonry_image_sizing_sanitized = sanitize_text_field($attachment['masonry-image-sizing']);
  1439. update_post_meta( $post['ID'], 'nectar_image_gal_masonry_sizing', $masonry_image_sizing_sanitized );
  1440. }
  1441. if( isset( $attachment['shape-bg-color'] ) ) {
  1442. $shape_bg_color_sanitized = sanitize_text_field($attachment['shape-bg-color']);
  1443. update_post_meta( $post['ID'], 'nectar_particle_shape_bg_color', $shape_bg_color_sanitized );
  1444. }
  1445. if( isset( $attachment['shape-particle-color'] ) ) {
  1446. $shape_particle_color_sanitized = sanitize_text_field($attachment['shape-particle-color']);
  1447. update_post_meta( $post['ID'], 'nectar_particle_shape_color', $shape_particle_color_sanitized );
  1448. }
  1449. if( isset( $attachment['shape-color-mapping'] ) ) {
  1450. $shape_color_mapping_sanitized = sanitize_text_field($attachment['shape-color-mapping']);
  1451. update_post_meta( $post['ID'], 'nectar_particle_shape_color_mapping',$shape_color_mapping_sanitized );
  1452. }
  1453. if( isset( $attachment['shape-color-alpha'] ) ) {
  1454. $shape_color_alpha_sanitized = sanitize_text_field($attachment['shape-color-alpha']);
  1455. update_post_meta( $post['ID'], 'nectar_particle_shape_color_alpha', $shape_color_alpha_sanitized );
  1456. }
  1457. if( isset( $attachment['shape-density'] ) ) {
  1458. $shape_density_sanitized = sanitize_text_field($attachment['shape-density']);
  1459. update_post_meta( $post['ID'], 'nectar_particle_shape_density', $shape_density_sanitized );
  1460. }
  1461. if( isset( $attachment['shape-max-particle-size'] ) ) {
  1462. $shape_max_particle_size_sanitized = sanitize_text_field($attachment['shape-max-particle-size']);
  1463. update_post_meta( $post['ID'], 'nectar_particle_max_particle_size', $shape_max_particle_size_sanitized );
  1464. }
  1465. return $post;
  1466. }
  1467. add_filter( 'attachment_fields_to_save', 'nectar_add_attachment_field_credit_save', 10, 2 );
  1468. #-----------------------------------------------------------------#
  1469. # Custom password form
  1470. #-----------------------------------------------------------------#
  1471. add_filter( 'the_password_form', 'custom_password_form' );
  1472. function custom_password_form() {
  1473. global $post;
  1474. $post = get_post( $post );
  1475. $label = 'pwbox-' . ( empty($post->ID) ? rand() : $post->ID );
  1476. $output = '<form action="' . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '" class="post-password-form" method="post">
  1477. <p>' . __( 'This content is password protected. To view it please enter your password below:' ) . '</p>
  1478. <p><label for="' . $label . '">' . __( 'Password:' ) . ' </label> <input name="post_password" id="' . $label . '" type="password" size="20" /><input type="submit" name="Submit" value="' . esc_attr__( 'Submit' ) . '" /></p></form>';
  1479. return $output;
  1480. }
  1481. #-----------------------------------------------------------------#
  1482. # Category Rel Fix
  1483. #-----------------------------------------------------------------#
  1484. function remove_category_list_rel( $output ) {
  1485. // Remove rel attribute from the category list
  1486. return str_replace( ' rel="category tag"', '', $output );
  1487. }
  1488. add_filter( 'wp_list_categories', 'remove_category_list_rel' );
  1489. add_filter( 'the_category', 'remove_category_list_rel' );
  1490. #-----------------------------------------------------------------#
  1491. # Search related
  1492. #-----------------------------------------------------------------#
  1493. if(!function_exists('change_wp_search_size')){
  1494. function change_wp_search_size($query) {
  1495. if ( $query->is_search )
  1496. $query->query_vars['posts_per_page'] = 12;
  1497. return $query;
  1498. }
  1499. }
  1500. if(!is_admin()) {
  1501. add_filter('pre_get_posts', 'change_wp_search_size');
  1502. }
  1503. #-----------------------------------------------------------------#
  1504. # Portfolio Exclude External / Custom Grid Content Projects From Next/Prev
  1505. #-----------------------------------------------------------------#
  1506. if(!is_admin()) {
  1507. add_filter( 'get_previous_post_where', 'so16495117_mod_adjacent_bis' );
  1508. add_filter( 'get_next_post_where', 'so16495117_mod_adjacent_bis' );
  1509. function so16495117_mod_adjacent_bis( $where ) {
  1510. global $wpdb;
  1511. global $post;
  1512. //if not on project exit early
  1513. if(!is_singular('portfolio')) { return $where; }
  1514. $excluded_projects = array();
  1515. $exlcuded_projects_string = '';
  1516. $portfolio = array( 'post_type' => 'portfolio','posts_per_page' => '-1');
  1517. $the_query = new WP_Query($portfolio);
  1518. if ( $the_query->have_posts() ) {
  1519. while ( $the_query->have_posts() ) {
  1520. $the_query->the_post();
  1521. $custom_project_link = get_post_meta($post->ID, '_nectar_external_project_url', true);
  1522. $custom_content_project = get_post_meta($post->ID, '_nectar_portfolio_custom_grid_item', true);
  1523. if(!empty($custom_project_link) || !empty($custom_content_project) && $custom_content_project == 'on') $excluded_projects[] = $post->ID;
  1524. }
  1525. $exlcuded_projects_string = implode(",", $excluded_projects);
  1526. wp_reset_postdata();
  1527. if(!empty($exlcuded_projects_string)){
  1528. return $where . " AND p.ID NOT IN ($exlcuded_projects_string)";
  1529. } else {
  1530. return $where;
  1531. }
  1532. }
  1533. }
  1534. }
  1535. #-----------------------------------------------------------------#
  1536. # Nectar Options Panel Images
  1537. #-----------------------------------------------------------------#
  1538. if(!function_exists('fjarrett_get_attachment_id_from_url')){
  1539. function fjarrett_get_attachment_id_from_url( $url ) {
  1540. // Split the $url into two parts with the wp-content directory as the separator.
  1541. $parse_url = explode( parse_url( WP_CONTENT_URL, PHP_URL_PATH ), $url );
  1542. // Get the host of the current site and the host of the $url, ignoring www.
  1543. $this_host = str_ireplace( 'www.', '', parse_url( home_url(), PHP_URL_HOST ) );
  1544. $file_host = str_ireplace( 'www.', '', parse_url( $url, PHP_URL_HOST ) );
  1545. // Return nothing if there aren't any $url parts or if the current host and $url host do not match.
  1546. if ( ! isset( $parse_url[1] ) || empty( $parse_url[1] ) || ( $this_host != $file_host ) )
  1547. return;
  1548. // Now we're going to quickly search the DB for any attachment GUID with a partial path match.
  1549. // Example: /uploads/2013/05/test-image.jpg
  1550. global $wpdb;
  1551. $prefix = $wpdb->prefix;
  1552. $attachment = $wpdb->get_col( $wpdb->prepare( "SELECT ID FROM " . $prefix . "posts WHERE guid RLIKE %s;", $parse_url[1] ) );
  1553. return (!empty($attachment)) ? $attachment[0] : null;
  1554. }
  1555. }
  1556. if(!function_exists('nectar_options_img')){
  1557. function nectar_options_img($image_arr_or_str){
  1558. //dummy data import from external
  1559. if(isset($image_arr_or_str['thumbnail']) && strpos($image_arr_or_str['thumbnail'],'http://themenectar.com') !== false && $_SERVER['SERVER_NAME'] != 'themenectar.com') {
  1560. return $image_arr_or_str['thumbnail'];
  1561. }
  1562. if(isset($image_arr_or_str['thumbnail']) && strpos($image_arr_or_str['thumbnail'],'https://source.unsplash.com') !== false && $_SERVER['SERVER_NAME'] != 'unsplash.com') {
  1563. return $image_arr_or_str['thumbnail'];
  1564. }
  1565. //check if URL or ID is passed
  1566. if(isset($image_arr_or_str['id'])) {
  1567. $image = wp_get_attachment_image_src($image_arr_or_str['id'], 'full');
  1568. return $image[0];
  1569. }
  1570. else if (isset($image_arr_or_str['url'])) {
  1571. return $image_arr_or_str['url'];
  1572. }
  1573. else {
  1574. $image_id = fjarrett_get_attachment_id_from_url( $image_arr_or_str );
  1575. if(!is_null($image_id) && !empty($image_id)) {
  1576. $image = wp_get_attachment_image_src($image_id, 'full');
  1577. return $image[0];
  1578. } else {
  1579. return $image_arr_or_str;
  1580. }
  1581. }
  1582. }
  1583. }
  1584. $nectar_is_ssl = is_ssl();
  1585. function nectar_ssl_check($src) {
  1586. global $nectar_is_ssl;
  1587. if(strpos($src,'http://') !== false && $nectar_is_ssl == true) {
  1588. $converted_start = str_replace('http://', 'https://', $src );
  1589. return $converted_start;
  1590. }
  1591. else
  1592. return $src;
  1593. }
  1594. #-----------------------------------------------------------------#
  1595. # Current Page Url
  1596. #-----------------------------------------------------------------#
  1597. if(!function_exists('current_page_url')){
  1598. function current_page_url() {
  1599. $pageURL = 'http';
  1600. if( isset($_SERVER["HTTPS"]) ) {
  1601. if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
  1602. }
  1603. $pageURL .= "://";
  1604. if ($_SERVER["SERVER_PORT"] != "80") {
  1605. $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
  1606. } else {
  1607. $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
  1608. }
  1609. return $pageURL;
  1610. }
  1611. }
  1612. #-----------------------------------------------------------------#
  1613. # Options panel
  1614. #-----------------------------------------------------------------#
  1615. $using_nectar_redux_framework = false;
  1616. if ( !class_exists( 'ReduxFramework' ) && file_exists( dirname( __FILE__ ) . '/nectar/redux-framework/ReduxCore/framework.php' ) ) {
  1617. require_once( dirname( __FILE__ ) . '/nectar/redux-framework/ReduxCore/framework.php' );
  1618. $using_nectar_redux_framework = true;
  1619. }
  1620. if ( !isset( $redux_demo ) && file_exists( dirname( __FILE__ ) . '/nectar/redux-framework/options-config.php' ) ) {
  1621. require_once( dirname( __FILE__ ) . '/nectar/redux-framework/options-config.php' );
  1622. }
  1623. //add nectar redux styling/custom deps
  1624. function nectar_redux_deps($hook_suffix) {
  1625. global $using_nectar_redux_framework;
  1626. if ( strstr($hook_suffix,'Salient') || strstr($hook_suffix,'salient') ) {
  1627. wp_enqueue_style('nectar_redux_admin_style', get_template_directory_uri() .'/nectar/redux-framework/ReduxCore/assets/css/salient-redux-styling.css', array(), '8.0.2', 'all');
  1628. if($using_nectar_redux_framework == false) {
  1629. wp_enqueue_style('nectar_redux_select_2', get_template_directory_uri() .'/nectar/redux-framework/extensions/vendor_support/vendor/select2/select2.css', array(), time(), 'all');
  1630. wp_enqueue_script('nectar_redux_ace', get_template_directory_uri() .'/nectar/redux-framework/extensions/vendor_support/vendor/ace_editor/ace.js', array(), time(), 'all');
  1631. }
  1632. }
  1633. }
  1634. add_action('admin_enqueue_scripts', 'nectar_redux_deps');
  1635. function nectar_removeDemoModeLink() {
  1636. if ( class_exists('ReduxFrameworkPlugin') ) {
  1637. remove_filter( 'plugin_row_meta', array( ReduxFrameworkPlugin::get_instance(), 'plugin_metalinks'), null, 2 );
  1638. }
  1639. if ( class_exists('ReduxFrameworkPlugin') ) {
  1640. remove_action('admin_notices', array( ReduxFrameworkPlugin::get_instance(), 'admin_notices' ) );
  1641. }
  1642. }
  1643. if (is_admin()) {
  1644. add_action('init', 'nectar_removeDemoModeLink');
  1645. add_action( 'admin_menu', 'remove_redux_menu',12 );
  1646. function remove_redux_menu() {
  1647. remove_submenu_page('tools.php','redux-about');
  1648. }
  1649. if( !function_exists('nectar_admin_lovelo_font')) {
  1650. function nectar_admin_lovelo_font(){
  1651. echo "
  1652. <!-- A font fabric font - http://fontfabric.com/lovelo-font/ -->
  1653. <style> @font-face { font-family: 'Lovelo'; src: url('".get_template_directory_uri()."/css/fonts/Lovelo_Black.eot'); src: url('".get_template_directory_uri()."/css/fonts/Lovelo_Black.eot?#iefix') format('embedded-opentype'), url('".get_template_directory_uri()."/css/fonts/Lovelo_Black.woff') format('woff'), url('".get_template_directory_uri()."/css/fonts/Lovelo_Black.ttf') format('truetype'), url('".get_template_directory_uri()."/css/fonts/Lovelo_Black.svg#loveloblack') format('svg'); font-weight: normal; font-style: normal; } </style>";
  1654. }
  1655. }
  1656. add_action('admin_head', 'nectar_admin_lovelo_font');
  1657. }
  1658. //helper function to grab theme options - to not break legacy users that are upgrading
  1659. function get_nectar_theme_options() {
  1660. $legacy_options = get_option('salient');
  1661. $current_options = get_option('salient_redux');
  1662. //use new options
  1663. if(!empty($current_options)) {
  1664. return $current_options;
  1665. } else if(!empty($legacy_options)) {
  1666. return $legacy_options;
  1667. } else {
  1668. return $current_options;
  1669. }
  1670. }
  1671. if (!function_exists('nectar_logo_output')) {
  1672. function nectar_logo_output($activate_transparency = false, $off_canvas_style = 'slide-out-from-right') {
  1673. global $options;
  1674. global $post;
  1675. $force_transparent_header_color = (isset($post->ID)) ? get_post_meta($post->ID, '_force_transparent_header_color', true) : '';
  1676. if(!empty($options['use-logo'])) {
  1677. $default_logo_class = ( !empty($options['retina-logo']['id']) || !empty($options['retina-logo']['url']) ) ? 'default-logo' : null;
  1678. $dark_default_class = ( empty($options['header-starting-logo-dark']['id']) && empty($options['header-starting-logo-dark']['url']) ) ? ' dark-version': null;
  1679. $std_retina_srcset = null;
  1680. if( !empty($options['retina-logo']['id']) || !empty($options['retina-logo']['url']) ) {
  1681. $std_retina_srcset = 'srcset="'.nectar_options_img($options['logo']).' 1x, '. nectar_options_img($options['retina-logo']) .' 2x"';
  1682. }
  1683. echo '<img class="stnd '.$default_logo_class. $dark_default_class.'" alt="'. get_bloginfo('name') .'" src="' . nectar_options_img($options['logo']) . '" '.$std_retina_srcset.' />';
  1684. //starting logo
  1685. if($activate_transparency == 'true' || $off_canvas_style == 'fullscreen-alt' || $force_transparent_header_color == 'dark'){
  1686. $starting_retina_srcset = null;
  1687. if( !empty($options['header-starting-retina-logo']['id']) || !empty($options['header-starting-retina-logo']['url']) ) {
  1688. $starting_retina_srcset = 'srcset="'.nectar_options_img($options['header-starting-logo']).' 1x, '. nectar_options_img($options['header-starting-retina-logo']) .' 2x"';
  1689. }
  1690. if( !empty($options['header-starting-logo']['id']) || !empty($options['header-starting-logo']['url']) ) echo '<img class="starting-logo '.$default_logo_class.'" alt="'. get_bloginfo('name') .'" src="' . nectar_options_img($options['header-starting-logo']) . '" '.$starting_retina_srcset.' />';
  1691. $starting_dark_retina_srcset = null;
  1692. if( !empty($options['header-starting-retina-logo-dark']['id']) || !empty($options['header-starting-retina-logo-dark']['url']) ) {
  1693. $starting_dark_retina_srcset = 'srcset="'.nectar_options_img($options['header-starting-logo-dark']).' 1x, '. nectar_options_img($options['header-starting-retina-logo-dark']) .' 2x"';
  1694. }
  1695. if( !empty($options['header-starting-logo-dark']['id']) || !empty($options['header-starting-logo-dark']['url']) ) echo '<img class="starting-logo dark-version '.$default_logo_class.'" alt="'. get_bloginfo('name') .'" src="' . nectar_options_img($options['header-starting-logo-dark']) . '" '.$starting_dark_retina_srcset.' />';
  1696. }
  1697. } else { echo get_bloginfo('name'); }
  1698. }
  1699. }
  1700. if (!function_exists('nectar_logo_spacing')) {
  1701. function nectar_logo_spacing() {
  1702. global $options;
  1703. echo '<div class="logo-spacing">';
  1704. if(!empty($options['use-logo'])) {
  1705. echo '<img class="hidden-logo" alt="'. get_bloginfo('name') .'" src="' . nectar_options_img($options['logo']) . '" />';
  1706. } else { echo get_bloginfo('name'); }
  1707. echo '</div>';
  1708. }
  1709. }
  1710. if (!function_exists('nectar_page_trans_markup')) {
  1711. function nectar_page_trans_markup() {
  1712. global $options;
  1713. $page_transition_effect = (!empty($options['transition-effect'])) ? $options['transition-effect'] : 'standard';
  1714. $nectar_disable_fade_on_click = (!empty($options['disable-transition-fade-on-click'])) ? $options['disable-transition-fade-on-click'] : '0';
  1715. $nectar_transition_method = (!empty($options['transition-method'])) ? $options['transition-method'] : 'ajax';
  1716. $nectar_loading_image_animation_class = (!empty($options['loading-image-animation']) && !empty($options['loading-image'])) ? $options['loading-image-animation'] : null;
  1717. $nectar_transition_markup = '';
  1718. $nectar_transition_markup .= '<div id="ajax-loading-screen" data-disable-fade-on-click="' . $nectar_disable_fade_on_click .'" data-effect="'. $page_transition_effect .'" data-method="'. $nectar_transition_method .'">';
  1719. if($page_transition_effect == 'horizontal_swipe' || $page_transition_effect == 'horizontal_swipe_basic') {
  1720. $nectar_transition_markup .= '<div class="reveal-1"></div>';
  1721. $nectar_transition_markup .= '<div class="reveal-2"></div>';
  1722. } else if($page_transition_effect == 'center_mask_reveal') {
  1723. $nectar_transition_markup .= '<span class="mask-top"></span>';
  1724. $nectar_transition_markup .= '<span class="mask-right"></span>';
  1725. $nectar_transition_markup .= '<span class="mask-bottom"></span>';
  1726. $nectar_transition_markup .= '<span class="mask-left"></span>';
  1727. } else {
  1728. $nectar_transition_markup .= '<div class="loading-icon '.$nectar_loading_image_animation_class.'">';
  1729. $loading_icon = (isset($options['loading-icon'])) ? $options['loading-icon'] : 'default';
  1730. $loading_img = (isset($options['loading-image'])) ? nectar_options_img($options['loading-image']) : null;
  1731. if(empty($loading_img)) {
  1732. if($loading_icon == 'material') {
  1733. $nectar_transition_markup .= '<div class="material-icon">
  1734. <div class="spinner">
  1735. <div class="right-side"><div class="bar"></div></div>
  1736. <div class="left-side"><div class="bar"></div></div>
  1737. </div>
  1738. <div class="spinner color-2">
  1739. <div class="right-side"><div class="bar"></div></div>
  1740. <div class="left-side"><div class="bar"></div></div>
  1741. </div>
  1742. </div>';
  1743. }
  1744. else {
  1745. if(!empty($options['theme-skin']) && $options['theme-skin'] == 'ascend') {
  1746. $nectar_transition_markup .= '<span class="default-loading-icon spin"></span>';
  1747. } else {
  1748. $nectar_transition_markup .= '<span class="default-skin-loading-icon"></span>';
  1749. }
  1750. }
  1751. } // empty loading img
  1752. $nectar_transition_markup .= '</div>';
  1753. } // not swipe or mask reveal
  1754. $nectar_transition_markup .= '</div>';
  1755. echo $nectar_transition_markup;
  1756. } // function end
  1757. }
  1758. function nectar_get_full_page_options() {
  1759. global $post;
  1760. $page_full_screen_rows = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows', true) : '';
  1761. $page_full_screen_rows_animation = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows_animation', true) : '';
  1762. $page_full_screen_rows_animation_speed = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows_animation_speed', true) : '';
  1763. $page_full_screen_rows_anchors = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows_anchors', true) : '';
  1764. $page_full_screen_rows_dot_navigation = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows_dot_navigation', true) : '';
  1765. $page_full_screen_rows_footer = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows_footer', true) : '';
  1766. $page_full_screen_rows_content_overflow = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows_content_overflow', true) : '';
  1767. $page_full_screen_rows_bg_img_animation = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows_row_bg_animation', true) : '';
  1768. $page_full_screen_rows_mobile_disable = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows_mobile_disable', true) : '';
  1769. $nectar_full_page_options = array(
  1770. 'page_full_screen_rows' => $page_full_screen_rows,
  1771. 'page_full_screen_rows_animation' => $page_full_screen_rows_animation,
  1772. 'page_full_screen_rows_animation_speed' => $page_full_screen_rows_animation_speed,
  1773. 'page_full_screen_rows_anchors' => $page_full_screen_rows_anchors,
  1774. 'page_full_screen_rows_dot_navigation' => $page_full_screen_rows_dot_navigation,
  1775. 'page_full_screen_rows_footer' => $page_full_screen_rows_footer,
  1776. 'page_full_screen_rows_content_overflow' => $page_full_screen_rows_content_overflow,
  1777. 'page_full_screen_rows_bg_img_animation' => $page_full_screen_rows_bg_img_animation,
  1778. 'page_full_screen_rows_mobile_disable' => $page_full_screen_rows_mobile_disable
  1779. );
  1780. return $nectar_full_page_options;
  1781. }
  1782. if (!function_exists('nectar_header_social_icons')) {
  1783. function nectar_header_social_icons($location) {
  1784. global $options;
  1785. $social_networks = array(
  1786. 'twitter' => 'fa fa-twitter',
  1787. 'facebook' => 'fa fa-facebook',
  1788. 'vimeo' => 'fa fa-vimeo',
  1789. 'pinterest' => 'fa fa-pinterest',
  1790. 'linkedin' => 'fa fa-linkedin',
  1791. 'youtube' => 'fa fa-youtube-play',
  1792. 'tumblr' => 'fa fa-tumblr',
  1793. 'dribbble' => 'fa fa-dribbble',
  1794. 'rss' => 'fa fa-rss',
  1795. 'github' => 'fa fa-github-alt',
  1796. 'google-plus' => 'fa fa-google-plus',
  1797. 'instagram' => 'fa fa-instagram',
  1798. 'stackexchange' => 'fa fa-stackexchange',
  1799. 'soundcloud' => 'fa fa-soundcloud',
  1800. 'flickr' => 'fa fa-flickr',
  1801. 'spotify' => 'icon-salient-spotify',
  1802. 'vk' => 'fa fa-vk',
  1803. 'vine' => 'fa fa-vine',
  1804. 'behance' => 'fa fa-behance',
  1805. 'houzz' => 'fa fa-houzz',
  1806. 'yelp' => 'fa fa-yelp',
  1807. 'snapchat' => 'fa fa-snapchat',
  1808. 'mixcloud' => 'fa fa-mixcloud',
  1809. 'bandcamp' => 'fa fa-bandcamp',
  1810. 'phone' => 'fa fa-phone',
  1811. 'email' => 'fa fa-envelope'
  1812. );
  1813. $social_output_html = '';
  1814. if($location == 'main-nav') {
  1815. $social_link_before = '';
  1816. $social_link_after = '';
  1817. } else {
  1818. $social_link_before = '<li>';
  1819. $social_link_after = '</li>';
  1820. }
  1821. if($location == 'secondary-nav')
  1822. $social_output_html .= '<ul id="social">';
  1823. foreach($social_networks as $network_name => $icon_class) {
  1824. if($network_name == 'rss') {
  1825. if(!empty($options['use-'.$network_name.'-icon-header']) && $options['use-'.$network_name.'-icon-header'] == 1) {
  1826. $nectar_rss_url_link = (!empty($options['rss-url'])) ? $options['rss-url'] : get_bloginfo('rss_url');
  1827. $social_output_html .= $social_link_before.'<a target="_blank" href="'.$nectar_rss_url_link.'"><i class="'.$icon_class.'"></i> </a>'.$social_link_after;
  1828. }
  1829. }
  1830. else {
  1831. if(!empty($options['use-'.$network_name.'-icon-header']) && $options['use-'.$network_name.'-icon-header'] == 1)
  1832. $social_output_html .= $social_link_before.'<a target="_blank" href="'.$options[$network_name."-url"].'"><i class="'.$icon_class.'"></i> </a>'.$social_link_after;
  1833. }
  1834. }
  1835. if($location == 'secondary-nav')
  1836. $social_output_html .= '</ul>';
  1837. echo $social_output_html;
  1838. }
  1839. }
  1840. /* portfolio video lightbox link helper */
  1841. if (!function_exists('nectar_portfolio_video_popup_link')) {
  1842. function nectar_portfolio_video_popup_link($post, $project_style, $video_embed, $video_m4v) {
  1843. $project_video_src = null;
  1844. $project_video_link = null;
  1845. $video_markup = null;
  1846. if($video_embed) {
  1847. $project_video_src = $video_embed;
  1848. if( preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $project_video_src, $video_match) ) {
  1849. //youtube
  1850. $project_video_link = 'https://www.youtube.com/watch?v=' . $video_match[1];
  1851. } else if( preg_match('/player\.vimeo\.com\/video\/([0-9]*)/', $project_video_src, $video_match) ) {
  1852. //vimeo iframe
  1853. $project_video_link = 'https://vimeo.com/' . $video_match[1].'?iframe=true';
  1854. } else if( preg_match('/(https?:\/\/)?(www\.)?(player\.)?vimeo\.com\/([a-z]*\/)*([‌​0-9]{6,11})[?]?.*/', $project_video_src, $video_match) ) {
  1855. //reg vimeo
  1856. $project_video_link = 'https://vimeo.com/' . $video_match[5].'?iframe=true';
  1857. }
  1858. } else if($video_m4v) {
  1859. $project_video_src = $video_m4v;
  1860. $project_video_link = '#video-popup-'.$post->ID;
  1861. $video_output = '[video preload="none" ';
  1862. if(!empty($video_m4v)) { $video_output .= 'mp4="'. $video_m4v .'" '; }
  1863. $video_output .= ']';
  1864. $video_markup = '<div id="video-popup-'.$post->ID.'" class="mfp-figure mfp-with-anim mfp-iframe-scaler"><div class="video">' . do_shortcode($video_output) . '</div></div>';
  1865. }
  1866. $popup_link_text = ($project_style == '1') ? __("Watch Video", NECTAR_THEME_NAME) : '';
  1867. return $video_markup.'<a href="'.$project_video_link.'" class="pretty_photo default-link" >'.$popup_link_text.'</a>';
  1868. }
  1869. }
  1870. #-----------------------------------------------------------------#
  1871. # Nectar love
  1872. #-----------------------------------------------------------------#
  1873. require_once ( 'nectar/love/nectar-love.php' );
  1874. if (!function_exists('GetGooglePlusShares')) {
  1875. function GetGooglePlusShares($url) {
  1876. return 0;
  1877. }
  1878. }
  1879. #-----------------------------------------------------------------#
  1880. # Page meta
  1881. #-----------------------------------------------------------------#
  1882. include("nectar/meta/page-meta.php");
  1883. $nectar_disable_home_slider = (!empty($options['disable_home_slider_pt']) && $options['disable_home_slider_pt'] == '1') ? true : false;
  1884. $nectar_disable_nectar_slider = (!empty($options['disable_nectar_slider_pt']) && $options['disable_nectar_slider_pt'] == '1') ? true : false;
  1885. #-----------------------------------------------------------------#
  1886. # Create admin slider section
  1887. #-----------------------------------------------------------------#
  1888. function slider_register() {
  1889. $labels = array(
  1890. 'name' => __( 'Slides', 'taxonomy general name', NECTAR_THEME_NAME),
  1891. 'singular_name' => __( 'Slide', NECTAR_THEME_NAME),
  1892. 'search_items' => __( 'Search Slides', NECTAR_THEME_NAME),
  1893. 'all_items' => __( 'All Slides', NECTAR_THEME_NAME),
  1894. 'parent_item' => __( 'Parent Slide', NECTAR_THEME_NAME),
  1895. 'edit_item' => __( 'Edit Slide', NECTAR_THEME_NAME),
  1896. 'update_item' => __( 'Update Slide', NECTAR_THEME_NAME),
  1897. 'add_new_item' => __( 'Add New Slide', NECTAR_THEME_NAME),
  1898. 'menu_name' => __( 'Home Slider', NECTAR_THEME_NAME)
  1899. );
  1900. $homeslider_menu_icon = (floatval(get_bloginfo('version')) >= "3.8") ? 'dashicons-admin-home' : NECTAR_FRAMEWORK_DIRECTORY . 'assets/img/icons/home-slider.png';
  1901. $args = array(
  1902. 'labels' => $labels,
  1903. 'singular_label' => __('Home Slider', NECTAR_THEME_NAME),
  1904. 'public' => true,
  1905. 'show_ui' => true,
  1906. 'hierarchical' => false,
  1907. 'menu_position' => 10,
  1908. 'menu_icon' => $homeslider_menu_icon,
  1909. 'exclude_from_search' => true,
  1910. 'supports' => false
  1911. );
  1912. register_post_type( 'home_slider' , $args );
  1913. }
  1914. if($nectar_disable_home_slider != true) {
  1915. add_action('init', 'slider_register');
  1916. }
  1917. #-----------------------------------------------------------------#
  1918. # Custom slider columns
  1919. #-----------------------------------------------------------------#
  1920. if($nectar_disable_home_slider != true) {
  1921. add_filter('manage_edit-home_slider_columns', 'edit_columns_home_slider');
  1922. }
  1923. function edit_columns_home_slider($columns){
  1924. $column_thumbnail = array( 'thumbnail' => 'Thumbnail' );
  1925. $column_caption = array( 'caption' => 'Caption' );
  1926. $columns = array_slice( $columns, 0, 1, true ) + $column_thumbnail + array_slice( $columns, 1, NULL, true );
  1927. $columns = array_slice( $columns, 0, 2, true ) + $column_caption + array_slice( $columns, 2, NULL, true );
  1928. return $columns;
  1929. }
  1930. if($nectar_disable_home_slider != true) {
  1931. add_action('manage_home_slider_posts_custom_column', 'home_slider_custom_columns', 10, 2);
  1932. }
  1933. function home_slider_custom_columns($portfolio_columns, $post_id){
  1934. switch ($portfolio_columns) {
  1935. case 'thumbnail':
  1936. $thumbnail = get_post_meta($post_id, '_nectar_slider_image', true);
  1937. if( !empty($thumbnail) ) {
  1938. echo '<a href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit"><img class="slider-thumb" src="' . $thumbnail . '" /></a>';
  1939. } else {
  1940. echo '<a href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit"><img class="slider-thumb" src="' . NECTAR_FRAMEWORK_DIRECTORY . 'assets/img/slider-default-thumb.jpg" /></a>' .
  1941. '<strong><a class="row-title" href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit">No image added yet</a></strong>';
  1942. }
  1943. break;
  1944. case 'caption':
  1945. $caption = get_post_meta($post_id, '_nectar_slider_caption', true);
  1946. echo $caption;
  1947. break;
  1948. default:
  1949. break;
  1950. }
  1951. }
  1952. if($nectar_disable_home_slider != true) {
  1953. add_action( 'admin_menu', 'nectar_home_slider_ordering' );
  1954. }
  1955. function nectar_home_slider_ordering() {
  1956. add_submenu_page(
  1957. 'edit.php?post_type=home_slider',
  1958. 'Order Slides',
  1959. 'Order',
  1960. 'edit_pages', 'slide-order',
  1961. 'nectar_home_slider_order_page'
  1962. );
  1963. }
  1964. function nectar_home_slider_order_page(){ ?>
  1965. <div class="wrap">
  1966. <h2><?php echo __('Sort Slides', NECTAR_THEME_NAME); ?></h2>
  1967. <p><?php echo __('Simply drag the slide up or down and they will be saved in that order.', NECTAR_THEME_NAME); ?></p>
  1968. <?php $slides = new WP_Query( array( 'post_type' => 'home_slider', 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'menu_order' ) ); ?>
  1969. <?php if( $slides->have_posts() ) : ?>
  1970. <?php wp_nonce_field( basename(__FILE__), 'nectar_meta_box_nonce' ); ?>
  1971. <table class="wp-list-table widefat fixed posts" id="sortable-table">
  1972. <thead>
  1973. <tr>
  1974. <th class="column-order"><?php echo __('Order', NECTAR_THEME_NAME); ?></th>
  1975. <th class="manage-column column-thumbnail"><?php echo __('Image', NECTAR_THEME_NAME); ?></th>
  1976. <th class="manage-column column-caption"><?php echo __('Caption', NECTAR_THEME_NAME); ?></th>
  1977. </tr>
  1978. </thead>
  1979. <tbody data-post-type="home_slider">
  1980. <?php while( $slides->have_posts() ) : $slides->the_post(); ?>
  1981. <tr id="post-<?php the_ID(); ?>">
  1982. <td class="column-order"><img src="<?php echo NECTAR_FRAMEWORK_DIRECTORY . 'assets/img/sortable.png'; ?>" title="" alt="Move Icon" width="25" height="25" class="" /></td>
  1983. <td class="thumbnail column-thumbnail">
  1984. <?php
  1985. global $post;
  1986. $thumbnail = get_post_meta($post->ID, '_nectar_slider_image', true);
  1987. if( !empty($thumbnail) ) {
  1988. echo '<img class="slider-thumb" src="' . $thumbnail . '" />' ;
  1989. }
  1990. else {
  1991. echo '<img class="slider-thumb" src="' . NECTAR_FRAMEWORK_DIRECTORY . 'assets/img/slider-default-thumb.jpg" />' .
  1992. '<strong>No image added yet</strong>';
  1993. } ?>
  1994. </td>
  1995. <td class="caption column-caption">
  1996. <?php
  1997. $caption = get_post_meta($post->ID, '_nectar_slider_caption', true);
  1998. echo $caption; ?>
  1999. </td>
  2000. </tr>
  2001. <?php endwhile; ?>
  2002. </tbody>
  2003. <tfoot>
  2004. <tr>
  2005. <th class="column-order"><?php echo __('Order', NECTAR_THEME_NAME); ?></th>
  2006. <th class="manage-column column-thumbnail"><?php echo __('Image', NECTAR_THEME_NAME); ?></th>
  2007. <th class="manage-column column-caption"><?php echo __('Caption', NECTAR_THEME_NAME); ?></th>
  2008. </tr>
  2009. </tfoot>
  2010. </table>
  2011. <?php else: ?>
  2012. <p>No slides found, why not <a href="post-new.php?post_type=home_slider">create one?</a></p>
  2013. <?php endif; ?>
  2014. <?php wp_reset_postdata(); ?>
  2015. </div><!-- .wrap -->
  2016. <?php }
  2017. if($nectar_disable_home_slider != true) {
  2018. add_action( 'admin_enqueue_scripts', 'home_slider_enqueue_scripts' );
  2019. }
  2020. function home_slider_enqueue_scripts() {
  2021. global $typenow;
  2022. if( 'home_slider' == $typenow ) {
  2023. wp_enqueue_script( 'jquery-ui-sortable' );
  2024. wp_enqueue_script( 'nectar-reorder', NECTAR_FRAMEWORK_DIRECTORY . 'assets/js/nectar-reorder.js' );
  2025. }
  2026. }
  2027. add_action( 'wp_ajax_nectar_update_slide_order', 'nectar_update_slide_order' );
  2028. //slide order ajax callback
  2029. function nectar_update_slide_order() {
  2030. global $wpdb;
  2031. $post_type = sanitize_text_field($_POST['postType']);
  2032. $order = $_POST['order'];
  2033. if ( !isset($_POST['nectar_meta_box_nonce']) || !wp_verify_nonce( $_POST['nectar_meta_box_nonce'], basename( __FILE__ ) ) )
  2034. return;
  2035. foreach( $order as $menu_order => $post_id ) {
  2036. $post_id = intval( str_ireplace( 'post-', '', $post_id ) );
  2037. $menu_order = intval($menu_order);
  2038. wp_update_post( array( 'ID' => stripslashes(htmlspecialchars($post_id)), 'menu_order' => stripslashes(htmlspecialchars($menu_order)) ) );
  2039. }
  2040. die( '1' );
  2041. }
  2042. //order the default home slider page correctly
  2043. function set_home_slider_admin_order($wp_query) {
  2044. $post_type = ( isset($wp_query->query['post_type']) ) ? $wp_query->query['post_type'] : '';
  2045. if ( $post_type == 'home_slider') {
  2046. $wp_query->set('orderby', 'menu_order');
  2047. $wp_query->set('order', 'ASC');
  2048. }
  2049. }
  2050. if (is_admin() && $nectar_disable_home_slider != true) {
  2051. add_filter('pre_get_posts', 'set_home_slider_admin_order');
  2052. }
  2053. #-----------------------------------------------------------------#
  2054. # Home slider meta
  2055. #-----------------------------------------------------------------#
  2056. if($nectar_disable_home_slider != true) {
  2057. include("nectar/meta/home-slider-meta.php");
  2058. }
  2059. #-----------------------------------------------------------------#
  2060. # Create nectar slider section
  2061. #-----------------------------------------------------------------#
  2062. function nectar_slider_register() {
  2063. $labels = array(
  2064. 'name' => __( 'Slides', 'taxonomy general name', NECTAR_THEME_NAME),
  2065. 'singular_name' => __( 'Slide', NECTAR_THEME_NAME),
  2066. 'search_items' => __( 'Search Slides', NECTAR_THEME_NAME),
  2067. 'all_items' => __( 'All Slides', NECTAR_THEME_NAME),
  2068. 'parent_item' => __( 'Parent Slide', NECTAR_THEME_NAME),
  2069. 'edit_item' => __( 'Edit Slide', NECTAR_THEME_NAME),
  2070. 'update_item' => __( 'Update Slide', NECTAR_THEME_NAME),
  2071. 'add_new_item' => __( 'Add New Slide', NECTAR_THEME_NAME),
  2072. 'menu_name' => __( 'Nectar Slider', NECTAR_THEME_NAME)
  2073. );
  2074. $nectarslider_menu_icon = (floatval(get_bloginfo('version')) >= "3.8") ? 'dashicons-star-empty' : NECTAR_FRAMEWORK_DIRECTORY . 'assets/img/icons/nectar-slider.png';
  2075. $args = array(
  2076. 'labels' => $labels,
  2077. 'singular_label' => __('Nectar Slider', NECTAR_THEME_NAME),
  2078. 'public' => false,
  2079. 'show_ui' => true,
  2080. 'hierarchical' => false,
  2081. 'menu_position' => 10,
  2082. 'menu_icon' => $nectarslider_menu_icon,
  2083. 'exclude_from_search' => true,
  2084. 'supports' => false
  2085. );
  2086. register_post_type( 'nectar_slider' , $args );
  2087. }
  2088. $slider_locations_labels = array(
  2089. 'name' => __( 'Slider Locations', NECTAR_THEME_NAME),
  2090. 'singular_name' => __( 'Slider Location', NECTAR_THEME_NAME),
  2091. 'search_items' => __( 'Search Slider Locations', NECTAR_THEME_NAME),
  2092. 'all_items' => __( 'All Slider Locations', NECTAR_THEME_NAME),
  2093. 'edit_item' => __( 'Edit Slider Location', NECTAR_THEME_NAME),
  2094. 'update_item' => __( 'Update Slider Location', NECTAR_THEME_NAME),
  2095. 'add_new_item' => __( 'Add New Slider Location', NECTAR_THEME_NAME),
  2096. 'new_item_name' => __( 'New Slider Location', NECTAR_THEME_NAME),
  2097. 'menu_name' => __( 'Slider Locations', NECTAR_THEME_NAME)
  2098. );
  2099. register_taxonomy('slider-locations',
  2100. array('nectar_slider'),
  2101. array('hierarchical' => true,
  2102. 'labels' => $slider_locations_labels,
  2103. 'show_ui' => true,
  2104. 'public' => false,
  2105. 'query_var' => true,
  2106. 'rewrite' => array( 'slug' => 'slider-locations' )
  2107. ));
  2108. if($nectar_disable_nectar_slider != true) {
  2109. add_action('init', 'nectar_slider_register');
  2110. }
  2111. #-----------------------------------------------------------------#
  2112. # Custom slider columns
  2113. #-----------------------------------------------------------------#
  2114. if($nectar_disable_nectar_slider != true) {
  2115. add_filter('manage_edit-nectar_slider_columns', 'edit_columns_nectar_slider');
  2116. }
  2117. function edit_columns_nectar_slider($columns){
  2118. $column_thumbnail = array( 'thumbnail' => 'Thumbnail' );
  2119. $column_caption = array( 'caption' => 'Caption' );
  2120. $columns = array_slice( $columns, 0, 1, true ) + $column_thumbnail + array_slice( $columns, 1, NULL, true );
  2121. $columns = array_slice( $columns, 0, 2, true ) + $column_caption + array_slice( $columns, 2, NULL, true );
  2122. return $columns;
  2123. }
  2124. if($nectar_disable_nectar_slider != true) {
  2125. add_action('manage_nectar_slider_posts_custom_column', 'nectar_slider_custom_columns', 10, 2);
  2126. }
  2127. function nectar_slider_custom_columns($portfolio_columns, $post_id){
  2128. switch ($portfolio_columns) {
  2129. case 'thumbnail':
  2130. $background_type = get_post_meta($post_id, '_nectar_slider_bg_type', true);
  2131. if($background_type == 'image_bg') {
  2132. $thumbnail = get_post_meta($post_id, '_nectar_slider_image', true);
  2133. if( !empty($thumbnail) ) {
  2134. echo '<a href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit"><img class="slider-thumb" src="' . $thumbnail . '" /></a>';
  2135. } else {
  2136. echo '<a href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit"><img class="slider-thumb" src="' . NECTAR_FRAMEWORK_DIRECTORY . 'assets/img/slider-default-thumb.jpg" /></a>' .
  2137. '<strong><a class="row-title" href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit">No image added yet</a></strong>';
  2138. }
  2139. }
  2140. else {
  2141. $thumbnail = get_post_meta($post_id, '_nectar_slider_preview_image', true);
  2142. if( !empty($thumbnail) ) {
  2143. echo '<a href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit"><img class="slider-thumb" src="' . $thumbnail . '" /></a>';
  2144. } else {
  2145. echo '<a href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit"><img class="slider-thumb" src="' . NECTAR_FRAMEWORK_DIRECTORY . 'assets/img/slider-default-video-thumb.jpg" /></a>' .
  2146. '<strong><a class="row-title" href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit">No video preview image added yet</a></strong>';
  2147. }
  2148. }
  2149. break;
  2150. case 'caption':
  2151. $caption = get_post_meta($post_id, '_nectar_slider_caption', true);
  2152. $heading = get_post_meta($post_id, '_nectar_slider_heading', true);
  2153. echo '<h2>'.$heading.'</h2><p>'.$caption.'</p>';
  2154. break;
  2155. default:
  2156. break;
  2157. }
  2158. }
  2159. if($nectar_disable_nectar_slider != true) {
  2160. add_action( 'admin_menu', 'nectar_slider_ordering' );
  2161. }
  2162. function nectar_slider_ordering() {
  2163. add_submenu_page(
  2164. 'edit.php?post_type=nectar_slider',
  2165. 'Order Slides',
  2166. 'Slide Ordering',
  2167. 'edit_pages', 'nectar-slide-order',
  2168. 'nectar_slider_order_page'
  2169. );
  2170. }
  2171. function nectar_slider_order_page(){ ?>
  2172. <div class="wrap" data-base-url="<?php echo admin_url('edit.php?post_type=nectar_slider&page=nectar-slide-order'); ?>">
  2173. <h2><?php echo __('Sort Slides', NECTAR_THEME_NAME); ?></h2>
  2174. <p><?php echo __('Choose your slider location below and simply drag your slides up or down - they will automatically be saved in that order.', NECTAR_THEME_NAME); ?></p>
  2175. <?php
  2176. (isset($_GET['slider-location'])) ? $location = sanitize_text_field( $_GET['slider-location'] ) : $location = false ;
  2177. $slides = new WP_Query( array( 'post_type' => 'nectar_slider', 'slider-locations' => $location, 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'menu_order' ) ); ?>
  2178. <?php if( $slides->have_posts() ) : ?>
  2179. <?php wp_nonce_field( basename(__FILE__), 'nectar_meta_box_nonce' );
  2180. echo '<div class="slider-locations">';
  2181. global $typenow;
  2182. $args=array( 'public' => false, '_builtin' => false );
  2183. $post_types = get_post_types($args);
  2184. if ( in_array($typenow, $post_types) ) {
  2185. $filters = get_object_taxonomies($typenow);
  2186. foreach ($filters as $tax_slug) {
  2187. $tax_obj = get_taxonomy($tax_slug);
  2188. wp_dropdown_categories(array(
  2189. 'show_option_all' => 'Slider Locations',
  2190. 'taxonomy' => $tax_slug,
  2191. 'name' => $tax_obj->name,
  2192. //'orderby' => 'term_order',
  2193. 'selected' => isset($location) ? $location : false,
  2194. 'hierarchical' => $tax_obj->hierarchical,
  2195. 'show_count' => false,
  2196. 'hide_empty' => true
  2197. ));
  2198. }
  2199. }
  2200. echo '</div>';
  2201. if(isset($location) && $location != false) {
  2202. ?>
  2203. <table class="wp-list-table widefat fixed posts" id="sortable-table">
  2204. <thead>
  2205. <tr>
  2206. <th class="column-order"><?php echo __('Order', NECTAR_THEME_NAME); ?></th>
  2207. <th class="manage-column column-thumbnail"><?php echo __('Image', NECTAR_THEME_NAME); ?></th>
  2208. <th class="manage-column column-caption"><?php echo __('Caption', NECTAR_THEME_NAME); ?></th>
  2209. </tr>
  2210. </thead>
  2211. <tbody data-post-type="nectar_slider">
  2212. <?php while( $slides->have_posts() ) : $slides->the_post(); ?>
  2213. <tr id="post-<?php the_ID(); ?>">
  2214. <td class="column-order"><img src="<?php echo NECTAR_FRAMEWORK_DIRECTORY . 'assets/img/sortable.png'; ?>" title="" alt="Move Icon" width="25" height="25" class="" /></td>
  2215. <td class="thumbnail column-thumbnail">
  2216. <?php
  2217. global $post;
  2218. $post_id = $post->ID;
  2219. $background_type = get_post_meta($post_id, '_nectar_slider_bg_type', true);
  2220. if($background_type == 'image_bg') {
  2221. $thumbnail = get_post_meta($post_id, '_nectar_slider_image', true);
  2222. if( !empty($thumbnail) ) {
  2223. echo '<a href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit"><img class="slider-thumb" src="' . $thumbnail . '" /></a>';
  2224. } else {
  2225. echo '<a href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit"><img class="slider-thumb" src="' . NECTAR_FRAMEWORK_DIRECTORY . 'assets/img/slider-default-thumb.jpg" /></a>' .
  2226. '<strong><a class="row-title" href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit">No image added yet</a></strong>';
  2227. }
  2228. }
  2229. else {
  2230. $thumbnail = get_post_meta($post_id, '_nectar_slider_preview_image', true);
  2231. if( !empty($thumbnail) ) {
  2232. echo '<a href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit"><img class="slider-thumb" src="' . $thumbnail . '" /></a>';
  2233. } else {
  2234. echo '<a href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit"><img class="slider-thumb" src="' . NECTAR_FRAMEWORK_DIRECTORY . 'assets/img/slider-default-video-thumb.jpg" /></a>' .
  2235. '<strong><a class="row-title" href="'.get_admin_url() . 'post.php?post=' . $post_id.'&action=edit">No video preview image added yet</a></strong>';
  2236. }
  2237. } ?>
  2238. </td>
  2239. <td class="caption column-caption">
  2240. <?php
  2241. $caption = get_post_meta($post->ID, '_nectar_slider_caption', true);
  2242. echo $caption; ?>
  2243. </td>
  2244. </tr>
  2245. <?php endwhile; ?>
  2246. </tbody>
  2247. <tfoot>
  2248. <tr>
  2249. <th class="column-order"><?php echo __('Order', NECTAR_THEME_NAME); ?></th>
  2250. <th class="manage-column column-thumbnail"><?php echo __('Image', NECTAR_THEME_NAME); ?></th>
  2251. <th class="manage-column column-caption"><?php echo __('Caption', NECTAR_THEME_NAME); ?></th>
  2252. </tr>
  2253. </tfoot>
  2254. </table>
  2255. <?php } ?>
  2256. <?php else: ?>
  2257. <p>No slides found, why not <a href="post-new.php?post_type=nectar_slider">create one?</a></p>
  2258. <?php endif; ?>
  2259. <?php wp_reset_postdata(); ?>
  2260. </div><!-- .wrap -->
  2261. <?php }
  2262. if($nectar_disable_nectar_slider != true) {
  2263. add_action( 'admin_enqueue_scripts', 'nectar_slider_enqueue_scripts' );
  2264. }
  2265. function nectar_slider_enqueue_scripts() {
  2266. global $typenow;
  2267. global $nectar_get_template_directory_uri;
  2268. if( 'nectar_slider' == $typenow) {
  2269. wp_enqueue_script( 'jquery-ui-sortable' );
  2270. wp_enqueue_script( 'nectar-reorder', NECTAR_FRAMEWORK_DIRECTORY . 'assets/js/nectar-reorder.js' );
  2271. }
  2272. wp_register_script('chosen', $nectar_get_template_directory_uri . '/nectar/tinymce/shortcode_generator/js/chosen/chosen.jquery.min.js', array('jquery'), '8.0.1', true);
  2273. wp_register_style( 'chosen', $nectar_get_template_directory_uri .'/nectar/tinymce/shortcode_generator/css/chosen/chosen.css', array(), '8.0.1', 'all');
  2274. wp_enqueue_style('chosen');
  2275. wp_enqueue_script('chosen');
  2276. }
  2277. if($nectar_disable_nectar_slider != true) {
  2278. add_action( 'wp_ajax_nectar_update_slide_order', 'nectar_slider_update_order' );
  2279. }
  2280. //slide order ajax callback
  2281. function nectar_slider_update_order() {
  2282. global $wpdb;
  2283. $post_type = sanitize_text_field($_POST['postType']);
  2284. $order = $_POST['order'];
  2285. if ( !isset($_POST['nectar_meta_box_nonce']) || !wp_verify_nonce( $_POST['nectar_meta_box_nonce'], basename( __FILE__ ) ) )
  2286. return;
  2287. foreach( $order as $menu_order => $post_id ) {
  2288. $post_id = intval( str_ireplace( 'post-', '', $post_id ) );
  2289. $menu_order = intval($menu_order);
  2290. wp_update_post( array( 'ID' => stripslashes(htmlspecialchars($post_id)), 'menu_order' => stripslashes(htmlspecialchars($menu_order)) ) );
  2291. }
  2292. die( '1' );
  2293. }
  2294. //order the default nectar slider page correctly
  2295. function set_nectar_slider_admin_order($wp_query) {
  2296. $post_type = ( isset($wp_query->query['post_type']) ) ? $wp_query->query['post_type'] : '';
  2297. if ( $post_type == 'nectar_slider') {
  2298. $wp_query->set('orderby', 'menu_order');
  2299. $wp_query->set('order', 'ASC');
  2300. }
  2301. }
  2302. if (is_admin() && $nectar_disable_nectar_slider != true ) {
  2303. add_filter('pre_get_posts', 'set_nectar_slider_admin_order');
  2304. }
  2305. function my_restrict_manage_posts() {
  2306. global $typenow;
  2307. $args = array( 'public' => false, '_builtin' => false );
  2308. $post_types = get_post_types($args);
  2309. if ( in_array($typenow, $post_types) ) {
  2310. $filters = get_object_taxonomies($typenow);
  2311. if($typenow != 'product'){
  2312. foreach ($filters as $tax_slug) {
  2313. $tax_obj = get_taxonomy($tax_slug);
  2314. wp_dropdown_categories(array(
  2315. 'show_option_all' => __('Show All '.$tax_obj->label ),
  2316. 'taxonomy' => $tax_slug,
  2317. 'name' => $tax_obj->name,
  2318. //'orderby' => 'term_order',
  2319. 'selected' => isset($_GET[$tax_obj->query_var]) ? $_GET[$tax_obj->query_var] : false,
  2320. 'hierarchical' => $tax_obj->hierarchical,
  2321. 'show_count' => false,
  2322. 'hide_empty' => true
  2323. ));
  2324. }
  2325. }
  2326. }
  2327. }
  2328. function my_convert_restrict($query) {
  2329. global $pagenow;
  2330. global $typenow;
  2331. if ($pagenow=='edit.php') {
  2332. $filters = get_object_taxonomies($typenow);
  2333. foreach ($filters as $tax_slug) {
  2334. $var = &$query->query_vars[$tax_slug];
  2335. if ( isset($var) ) {
  2336. $term = get_term_by('id',$var,$tax_slug);
  2337. if($term) $var = $term->slug; ;
  2338. }
  2339. }
  2340. }
  2341. }
  2342. if($nectar_disable_nectar_slider != true) {
  2343. add_action('restrict_manage_posts', 'my_restrict_manage_posts' );
  2344. add_filter('parse_query','my_convert_restrict');
  2345. }
  2346. #-----------------------------------------------------------------#
  2347. # Nectar slider meta
  2348. #-----------------------------------------------------------------#
  2349. if($nectar_disable_nectar_slider != true) {
  2350. include("nectar/meta/nectar-slider-meta.php");
  2351. }
  2352. #-----------------------------------------------------------------#
  2353. # Nectar slider display
  2354. #-----------------------------------------------------------------#
  2355. $real_fs = 0;
  2356. if (!function_exists('nectar_slider_display')) {
  2357. function nectar_slider_display($config_arr){
  2358. global $nectar_disable_nectar_slider;
  2359. if($nectar_disable_nectar_slider == true) {
  2360. echo __('Nectar Slider Post Type Disabled - please reanble in the Salient options panel > General Settings > Toggle Theme Features tab.', NECTAR_THEME_NAME);
  2361. return false;
  2362. }
  2363. global $post;
  2364. global $options;
  2365. global $real_fs;
  2366. $midnight_parallax = null;
  2367. $midnight_regular = null;
  2368. //disable parallax for full page
  2369. $page_full_screen_rows = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows', true) : '';
  2370. if($page_full_screen_rows == "on")
  2371. $config_arr['parallax'] = 'false';
  2372. $animate_in_effect = (!empty($options['header-animate-in-effect'])) ? $options['header-animate-in-effect'] : 'none';
  2373. //adding parallax wrapper if selected
  2374. if($config_arr['parallax'] == 'true') {
  2375. if( stripos( $post->post_content, '[nectar_slider') !== FALSE && stripos( $post->post_content, '[nectar_slider') === 0 && $real_fs == 0) { $first_section = 'first-section'; $real_fs = 1; } else { $first_section = ''; }
  2376. $midnight_parallax = 'data-midnight="nectar-slider"';
  2377. $midnight_regular = null;
  2378. $slider = '<div style="height: '.$config_arr['slider_height'].'px" '.$midnight_parallax.' class="parallax_slider_outer '.$first_section.'">';
  2379. } else { $slider = ''; }
  2380. $boxed = (!empty($options['boxed_layout']) && $options['boxed_layout'] == '1') ? '1' : '0';
  2381. if($config_arr['full_width'] == 'true' && $boxed != '1') { $fullwidth = 'true'; }
  2382. else if($config_arr['full_width'] == 'true' && $boxed == '1') { $fullwidth = 'boxed-full-width'; }
  2383. else { $fullwidth = 'false'; }
  2384. if($config_arr['parallax'] != 'true') {
  2385. if( stripos( $post->post_content, '[nectar_slider') !== FALSE && stripos( $post->post_content, '[nectar_slider') === 0 && $real_fs == 0) { $first_section = 'first-section'; $real_fs = 1; $midnight_parallax = null; $midnight_regular = 'data-midnight="nectar-slider"'; } else { $first_section = ''; }
  2386. } else {
  2387. $midnight_parallax = null;
  2388. $midnight_regular = null;
  2389. $first_section = '';
  2390. }
  2391. $text_overrides = null;
  2392. if(!empty($config_arr['tablet_header_font_size'])) {
  2393. $text_overrides .= ' data-tho="'.$config_arr['tablet_header_font_size'].'"';
  2394. }
  2395. if(!empty($config_arr['tablet_caption_font_size'])) {
  2396. $text_overrides .= ' data-tco="'.$config_arr['tablet_caption_font_size'].'"';
  2397. }
  2398. if(!empty($config_arr['phone_header_font_size'])) {
  2399. $text_overrides .= ' data-pho="'.$config_arr['phone_header_font_size'].'"';
  2400. }
  2401. if(!empty($config_arr['phone_caption_font_size'])) {
  2402. $text_overrides .= ' data-pco="'.$config_arr['phone_caption_font_size'].'"';
  2403. }
  2404. $slider .= '<div style="height: '.$config_arr['slider_height'].'px" '.$midnight_regular.' data-transition="'.$config_arr['slider_transition'].'" data-overall_style="'.$config_arr['overall_style'].'" data-flexible-height="'.$config_arr['flexible_slider_height'].'" data-animate-in-effect="'.$animate_in_effect.'" data-fullscreen="'.$config_arr['fullscreen'].'" data-button-sizing="'.$config_arr['button_sizing'].'" data-button-styling="'.$config_arr['slider_button_styling'].'" data-autorotate="'.$config_arr['autorotate'].'" data-parallax="'.$config_arr['parallax'].'" data-full-width="'.$fullwidth.'" class="nectar-slider-wrap '.$first_section.'" id="ns-id-'.uniqid().'">
  2405. <div style="height: '.$config_arr['slider_height'].'px" class="swiper-container" '.$text_overrides.' data-loop="'.$config_arr['loop'].'" data-height="'. $config_arr["slider_height"] .'" data-min-height="'.$config_arr['min_slider_height'].'" data-arrows="' . $config_arr["arrow_navigation"].'" data-bullets="'.$config_arr["bullet_navigation"].'" data-bullet_style="'.$config_arr["bullet_navigation_style"].'" data-desktop-swipe="'. $config_arr["desktop_swipe"].'" data-settings="">
  2406. <div class="swiper-wrapper">';
  2407. $slide_count = 0;
  2408. //get slider location by slug instead of raw name
  2409. $slider_terms = get_term_by('name',$config_arr['location'],'slider-locations');
  2410. //loop through and get all the slides in selected location
  2411. $slides = new WP_Query( array( 'post_type' => 'nectar_slider', 'tax_query' => array( array( 'taxonomy' => 'slider-locations', 'field' => 'slug', 'terms' => $slider_terms->slug ) ), 'posts_per_page' => -1, 'order' => 'ASC', 'orderby' => 'menu_order' ) );
  2412. if( $slides->have_posts() ) : while( $slides->have_posts() ) : $slides->the_post();
  2413. global $post;
  2414. $background_type = get_post_meta($post->ID, '_nectar_slider_bg_type', true);
  2415. $background_alignment = get_post_meta($post->ID, '_nectar_slider_slide_bg_alignment', true);
  2416. $slide_title = get_post_meta($post->ID, '_nectar_slider_heading', true);
  2417. $slide_description = get_post_meta($post->ID, '_nectar_slider_caption', true);
  2418. $slide_description_wrapped = '<span>'.$slide_description.'</span>';
  2419. $slide_description_bg = get_post_meta($post->ID, '_nectar_slider_caption_background', true);
  2420. $caption_bg = ( $slide_description_bg == 'on') ? 'class="transparent-bg"' : '';
  2421. $down_arrow = get_post_meta($post->ID, '_nectar_slider_down_arrow', true);
  2422. $poster = get_post_meta($post->ID, '_nectar_slider_preview_image', true);
  2423. $poster_markup = (!empty($poster)) ? 'poster="'.$poster.'"' : null ;
  2424. $x_pos = get_post_meta($post->ID, '_nectar_slide_xpos_alignment', true);
  2425. $y_pos = get_post_meta($post->ID, '_nectar_slide_ypos_alignment', true);
  2426. $link_type = get_post_meta($post->ID, '_nectar_slider_link_type', true);
  2427. $full_slide_link = get_post_meta($post->ID, '_nectar_slider_entire_link', true);
  2428. $button_1_text = get_post_meta($post->ID, '_nectar_slider_button', true);
  2429. $button_1_link = get_post_meta($post->ID, '_nectar_slider_button_url', true);
  2430. $button_1_style = get_post_meta($post->ID, '_nectar_slider_button_style', true);
  2431. $button_1_color = get_post_meta($post->ID, '_nectar_slider_button_color', true);
  2432. $button_2_text = get_post_meta($post->ID, '_nectar_slider_button_2', true);
  2433. $button_2_link = get_post_meta($post->ID, '_nectar_slider_button_url_2', true);
  2434. $button_2_style = get_post_meta($post->ID, '_nectar_slider_button_style_2', true);
  2435. $button_2_color = get_post_meta($post->ID, '_nectar_slider_button_color_2', true);
  2436. $video_mp4 = get_post_meta($post->ID, '_nectar_media_upload_mp4', true);
  2437. $video_webm = get_post_meta($post->ID, '_nectar_media_upload_webm', true);
  2438. $video_ogv = get_post_meta($post->ID, '_nectar_media_upload_ogv', true);
  2439. $video_texture = get_post_meta($post->ID, '_nectar_slider_video_texture', true);
  2440. $slide_image = get_post_meta($post->ID, '_nectar_slider_image', true);
  2441. $img_bg = null;
  2442. $slide_color = get_post_meta($post->ID, '_nectar_slider_slide_font_color', true);
  2443. $custom_class = get_post_meta($post->ID, '_nectar_slider_slide_custom_class', true);
  2444. $custom_css_class = (!empty($custom_class)) ? ' '.$custom_class : null;
  2445. if($background_type == 'image_bg') { $bg_img_markup = 'style="background-image: url('. nectar_ssl_check($slide_image).');"'; } else { $bg_img_markup = null;}
  2446. (!empty($x_pos)) ? $x_pos_markup = $x_pos : $x_pos_markup = 'center';
  2447. (!empty($y_pos)) ? $y_pos_markup = $y_pos : $y_pos_markup = 'middle';
  2448. $slider .= '<div class="swiper-slide'.$custom_css_class.'" data-bg-alignment="'.$background_alignment.'" data-color-scheme="'. $slide_color .'" data-x-pos="'.$x_pos_markup.'" data-y-pos="'.$y_pos_markup.'">
  2449. ';
  2450. if($background_type == 'image_bg') $slider .='<div class="image-bg" '.$bg_img_markup.'> &nbsp; </div>';
  2451. if(!empty($slide_title) || !empty($slide_description) || !empty($button_1_text) || !empty($button_2_text)) {
  2452. $slider .= '<div class="container">
  2453. <div class="content">';
  2454. if(!empty($slide_title)) { $slider .= '<h2>'.$slide_title.'</h2>'; }
  2455. if(!empty($slide_description)) { $slider .= '<p '. $caption_bg.' >'. $slide_description_wrapped.'</p>'; }
  2456. if($link_type == 'button_links' && !empty($button_1_text) || $link_type == 'button_links' && !empty($button_2_text)) {
  2457. $slider .= '<div class="buttons">';
  2458. if(!empty($button_1_text)) {
  2459. $button_1_link = !empty($button_1_link) ? $button_1_link : '#';
  2460. //check button link to see if it's a video or googlemap
  2461. $link_extra = null;
  2462. if(strpos($button_1_link, 'youtube.com/watch') !== false) $link_extra = 'pp ';
  2463. if(strpos($button_1_link, 'vimeo.com/') !== false) $link_extra = 'pp ';
  2464. if(strpos($button_1_link, 'maps.google.com/maps') !== false) $link_extra = 'map-popup ';
  2465. //wrapper for tilt button
  2466. $button_wrap_begin = ($button_1_style == 'solid_color_2') ? "<div class='button-wrap'>": null;
  2467. $button_wrap_end = ($button_1_style == 'solid_color_2') ? "</div>": null;
  2468. $slider .=
  2469. '<div class="button '.$button_1_style.'">
  2470. '.$button_wrap_begin .' <a class="'.$link_extra .$button_1_color .'" href="'.$button_1_link.'">'.$button_1_text.'</a>'. $button_wrap_end.'
  2471. </div>';
  2472. }
  2473. if(!empty($button_2_text)) {
  2474. $button_2_link = !empty($button_2_link) ? $button_2_link : '#';
  2475. //check button link to see if it's a video or googlemap
  2476. $link_extra = null;
  2477. if(strpos($button_2_link, 'youtube.com/watch') !== false) $link_extra = 'pp ';
  2478. if(strpos($button_2_link, 'vimeo.com/') !== false) $link_extra = 'pp ';
  2479. if(strpos($button_2_link, 'maps.google.com/maps') !== false) $link_extra = 'map-popup ';
  2480. $slider .=
  2481. '<div class="button '.$button_2_style.'">
  2482. <a class="'.$link_extra . $button_2_color .'" href="'.$button_2_link.'">'.$button_2_text.'</a>
  2483. </div>';
  2484. }
  2485. $slider .= '</div>';
  2486. }
  2487. $slider .= '</div>
  2488. </div><!--/container-->';
  2489. }
  2490. if(!empty($down_arrow) && $down_arrow == 'on') {
  2491. $header_down_arrow_style = (!empty($options['header-down-arrow-style'])) ? $options['header-down-arrow-style'] : 'default';
  2492. $theme_button_styling = (!empty($options['button-styling'])) ? $options['button-styling'] : 'default';
  2493. if($header_down_arrow_style == 'scroll-animation' || $theme_button_styling == 'slightly_rounded' || $theme_button_styling == 'slightly_rounded_shadow') {
  2494. $slider .= '<a href="#" class="slider-down-arrow no-border"><svg class="nectar-scroll-icon" viewBox="0 0 30 45" enable-background="new 0 0 30 45">
  2495. <path class="nectar-scroll-icon-path" fill="none" stroke="#ffffff" stroke-width="2" stroke-miterlimit="10" d="M15,1.118c12.352,0,13.967,12.88,13.967,12.88v18.76 c0,0-1.514,11.204-13.967,11.204S0.931,32.966,0.931,32.966V14.05C0.931,14.05,2.648,1.118,15,1.118z"></path>
  2496. </svg></a>';
  2497. } else {
  2498. $slider .= '<a href="#" class="slider-down-arrow"><i class="icon-salient-down-arrow icon-default-style"> <span class="ie-fix"></span> </i></a>';
  2499. }
  2500. }
  2501. $active_texture = ($video_texture == 'on') ? 'active_texture' : '';
  2502. $slider .= '<div class="video-texture '.$active_texture.'"> <span class="ie-fix"></span> </div>';
  2503. if($background_type == 'video_bg') {
  2504. $slider .= '
  2505. <div class="mobile-video-image" style="background-image: url('.$poster.')"> <span class="ie-fix"></span> </div>
  2506. <div class="video-wrap">
  2507. <video class="slider-video" width="1800" height="700" preload="auto" loop>';
  2508. if(!empty($video_webm)) { $slider .= '<source type="video/webm" src="'.$video_webm.'">'; }
  2509. if(!empty($video_mp4)) { $slider .= '<source type="video/mp4" src="'.$video_mp4.'">'; }
  2510. if(!empty($video_ogv)) { $slider .= '<source type="video/ogg" src="'. $video_ogv.'">'; }
  2511. $slider .='</video>
  2512. </div>';
  2513. }
  2514. if($link_type == 'full_slide_link' && !empty($full_slide_link)) {
  2515. $slider .= '<a href="'. $full_slide_link.'" class="entire-slide-link"> <span class="ie-fix"></span> </a>';
  2516. }
  2517. $slider .= '</div><!--/swiper-slide-->';
  2518. $slide_count ++;
  2519. endwhile; endif;
  2520. wp_reset_postdata();
  2521. $slider .= '</div>';
  2522. if($config_arr['arrow_navigation'] == 'true' && $slide_count > 1 && $config_arr['slider_button_styling'] != 'btn_with_preview' && $config_arr['overall_style'] != 'directional') {
  2523. $slider .= '<a href="" class="slider-prev"><i class="icon-salient-left-arrow"></i> <div class="slide-count"> <span class="slide-current">1</span> <i class="icon-salient-right-line"></i> <span class="slide-total"></span> </div> </a>
  2524. <a href="" class="slider-next"><i class="icon-salient-right-arrow"></i> <div class="slide-count"> <span class="slide-current">1</span> <i class="icon-salient-right-line"></i> <span class="slide-total"></span> </div> </a>';
  2525. }
  2526. else if($config_arr['arrow_navigation'] == 'true' && $slide_count > 1 && $config_arr['slider_button_styling'] == 'btn_with_preview' || $config_arr['overall_style'] == 'directional') {
  2527. $slider .= '<a href="" class="slider-prev"><i class="icon-angle-left"></i> </a>
  2528. <a href="" class="slider-next"><i class="icon-angle-right"></i> </a>';
  2529. }
  2530. if($config_arr['bullet_navigation'] == 'true' && $slide_count > 1){
  2531. $slider .= '<div class="slider-pagination"></div>';
  2532. }
  2533. $loading_animation = (!empty($options['loading-image-animation']) && !empty($options['loading-image'])) ? $options['loading-image-animation'] : null;
  2534. $default_loader = (empty($options['loading-image']) && !empty($options['theme-skin']) && $options['theme-skin'] == 'ascend') ? '<span class="default-loading-icon spin"></span>' : null;
  2535. $default_loader_class = (empty($options['loading-image']) && !empty($options['theme-skin']) && $options['theme-skin'] == 'ascend') ? 'default-loader' : null;
  2536. $slider .= '<div class="nectar-slider-loading '.$default_loader_class.'"> <span class="loading-icon '.$loading_animation.'"> '.$default_loader.' </span> </div> </div>
  2537. </div>';
  2538. if($config_arr['parallax'] == 'true') { $slider .= '</div>'; }
  2539. return $slider;
  2540. }
  2541. }
  2542. #-----------------------------------------------------------------#
  2543. # Create admin portfolio section
  2544. #-----------------------------------------------------------------#
  2545. function portfolio_register() {
  2546. $portfolio_labels = array(
  2547. 'name' => __( 'Portfolio', 'taxonomy general name', NECTAR_THEME_NAME),
  2548. 'singular_name' => __( 'Portfolio Item', NECTAR_THEME_NAME),
  2549. 'search_items' => __( 'Search Portfolio Items', NECTAR_THEME_NAME),
  2550. 'all_items' => __( 'Portfolio', NECTAR_THEME_NAME),
  2551. 'parent_item' => __( 'Parent Portfolio Item', NECTAR_THEME_NAME),
  2552. 'edit_item' => __( 'Edit Portfolio Item', NECTAR_THEME_NAME),
  2553. 'update_item' => __( 'Update Portfolio Item', NECTAR_THEME_NAME),
  2554. 'add_new_item' => __( 'Add New Portfolio Item', NECTAR_THEME_NAME)
  2555. );
  2556. global $options;
  2557. $custom_slug = null;
  2558. if(!empty($options['portfolio_rewrite_slug'])) $custom_slug = $options['portfolio_rewrite_slug'];
  2559. $portolfio_menu_icon = (floatval(get_bloginfo('version')) >= "3.8") ? 'dashicons-art' : NECTAR_FRAMEWORK_DIRECTORY . 'assets/img/icons/portfolio.png';
  2560. $args = array(
  2561. 'labels' => $portfolio_labels,
  2562. 'rewrite' => array('slug' => $custom_slug,'with_front' => false),
  2563. 'singular_label' => __('Project', NECTAR_THEME_NAME),
  2564. 'public' => true,
  2565. 'publicly_queryable' => true,
  2566. 'show_ui' => true,
  2567. 'hierarchical' => false,
  2568. 'menu_position' => 9,
  2569. 'menu_icon' => $portolfio_menu_icon,
  2570. 'supports' => array('title', 'editor', 'thumbnail', 'comments', 'revisions')
  2571. );
  2572. register_post_type( 'portfolio' , $args );
  2573. }
  2574. add_action('init', 'portfolio_register');
  2575. #-----------------------------------------------------------------#
  2576. # Add taxonomys attached to portfolio
  2577. #-----------------------------------------------------------------#
  2578. if (!function_exists('nectar_add_portfolio_taxonomies')) {
  2579. function nectar_add_portfolio_taxonomies(){
  2580. $category_labels = array(
  2581. 'name' => __( 'Project Categories', NECTAR_THEME_NAME),
  2582. 'singular_name' => __( 'Project Category', NECTAR_THEME_NAME),
  2583. 'search_items' => __( 'Search Project Categories', NECTAR_THEME_NAME),
  2584. 'all_items' => __( 'All Project Categories', NECTAR_THEME_NAME),
  2585. 'parent_item' => __( 'Parent Project Category', NECTAR_THEME_NAME),
  2586. 'edit_item' => __( 'Edit Project Category', NECTAR_THEME_NAME),
  2587. 'update_item' => __( 'Update Project Category', NECTAR_THEME_NAME),
  2588. 'add_new_item' => __( 'Add New Project Category', NECTAR_THEME_NAME),
  2589. 'menu_name' => __( 'Project Categories', NECTAR_THEME_NAME)
  2590. );
  2591. register_taxonomy("project-type",
  2592. array("portfolio"),
  2593. array("hierarchical" => true,
  2594. 'labels' => $category_labels,
  2595. 'show_ui' => true,
  2596. 'query_var' => true,
  2597. 'rewrite' => array( 'slug' => 'project-type' )
  2598. ));
  2599. $attributes_labels = array(
  2600. 'name' => __( 'Project Attributes', NECTAR_THEME_NAME),
  2601. 'singular_name' => __( 'Project Attribute', NECTAR_THEME_NAME),
  2602. 'search_items' => __( 'Search Project Attributes', NECTAR_THEME_NAME),
  2603. 'all_items' => __( 'All Project Attributes', NECTAR_THEME_NAME),
  2604. 'parent_item' => __( 'Parent Project Attribute', NECTAR_THEME_NAME),
  2605. 'edit_item' => __( 'Edit Project Attribute', NECTAR_THEME_NAME),
  2606. 'update_item' => __( 'Update Project Attribute', NECTAR_THEME_NAME),
  2607. 'add_new_item' => __( 'Add New Project Attribute', NECTAR_THEME_NAME),
  2608. 'new_item_name' => __( 'New Project Attribute', NECTAR_THEME_NAME),
  2609. 'menu_name' => __( 'Project Attributes', NECTAR_THEME_NAME)
  2610. );
  2611. register_taxonomy('project-attributes',
  2612. array('portfolio'),
  2613. array('hierarchical' => true,
  2614. 'labels' => $attributes_labels,
  2615. 'show_ui' => true,
  2616. 'query_var' => true,
  2617. 'rewrite' => array( 'slug' => 'project-attributes' )
  2618. ));
  2619. }
  2620. }
  2621. nectar_add_portfolio_taxonomies();
  2622. //utility function for nectar shortcode generator conditional
  2623. function is_edit_page($new_edit = null){
  2624. global $pagenow;
  2625. //make sure we are on the backend
  2626. if (!is_admin()) return false;
  2627. if($new_edit == "edit")
  2628. return in_array( $pagenow, array( 'post.php', ) );
  2629. elseif($new_edit == "new") //check for new post page
  2630. return in_array( $pagenow, array( 'post-new.php' ) );
  2631. else //check for either new or edit
  2632. return in_array( $pagenow, array( 'post.php', 'post-new.php' ) );
  2633. }
  2634. //utility function for WPML duplicate content
  2635. if(defined('ICL_LANGUAGE_CODE')) {
  2636. add_filter( 'icl_ls_languages', 'wmpl_duplicate_content_fix' );
  2637. function wmpl_duplicate_content_fix( $languages ) {
  2638. wp_reset_query();
  2639. return $languages;
  2640. }
  2641. add_filter( 'wpml_pb_shortcode_content_for_translation', 'nectar_wpml_filter_content_for_translation', 10 , 2 );
  2642. function nectar_wpml_filter_content_for_translation( $content, $post_id ) {
  2643. if ( 'portfolio' === get_post_type( $post_id ) ) {
  2644. $content = get_post_meta( $post_id, "_nectar_portfolio_extra_content", true );
  2645. }
  2646. return $content;
  2647. }
  2648. add_filter( 'wpml_pb_shortcodes_save_translation', 'nectar_wpml_filter_save_translation', 10, 3 );
  2649. function nectar_wpml_filter_save_translation( $saved, $post_id, $new_content ) {
  2650. if ( 'portfolio' === get_post_type( $post_id ) ) {
  2651. update_post_meta( $post_id, "_nectar_portfolio_extra_content", $new_content );
  2652. $saved = true;
  2653. }
  2654. return $saved;
  2655. }
  2656. }
  2657. #-----------------------------------------------------------------#
  2658. # Portfolio single page controls
  2659. #-----------------------------------------------------------------#
  2660. if (!function_exists('project_single_control')) {
  2661. function project_single_controls() {
  2662. global $options;
  2663. global $post;
  2664. $back_to_all_override = get_post_meta($post->ID, 'nectar-metabox-portfolio-parent-override', true);
  2665. if(empty($back_to_all_override)) $back_to_all_override = 'default';
  2666. //attempt to find parent portfolio page - if unsuccessful default to main portfolio page
  2667. $terms = get_the_terms($post->id,"project-type");
  2668. $project_cat = null;
  2669. $portfolio_link = null;
  2670. $single_nav_pos = (!empty($options['portfolio_single_nav'])) ? $options['portfolio_single_nav'] : 'in_header';
  2671. if(empty($terms)) $terms = array('1' => (object) array('name' => 'nothing', 'slug' => 'none'));
  2672. foreach ( $terms as $term ) {
  2673. $project_cat = strtolower($term->name);
  2674. }
  2675. $page = get_page_by_title_search($project_cat);
  2676. if(empty($page)) $page = array( '0' => (object) array('ID' => 'nothing'));
  2677. $page_link = verify_portfolio_page($page[0]->ID);
  2678. //if a page has been found for the category
  2679. if(!empty($page_link) && $back_to_all_override == 'default' && $single_nav_pos != 'after_project_2') {
  2680. $portfolio_link = $page_link;
  2681. ?>
  2682. <div id="portfolio-nav">
  2683. <?php if($single_nav_pos != 'after_project_2') { ?>
  2684. <ul>
  2685. <li id="all-items"><a href="<?php echo $portfolio_link; ?>"><i class="icon-salient-back-to-all"></i></a></li>
  2686. </ul>
  2687. <?php } ?>
  2688. <ul class="controls">
  2689. <?php if($single_nav_pos == 'after_project') { ?>
  2690. <li id="prev-link"><?php be_next_post_link('%link','<i class="icon-angle-left"></i> <span>' . __("Previous Project", NECTAR_THEME_NAME) .'</span>' ,TRUE, null,'project-type'); ?></li>
  2691. <li id="next-link"><?php be_previous_post_link('%link', '<span>'. __('Next Project', NECTAR_THEME_NAME) . '</span><i class="icon-angle-right"></i>',TRUE, null, 'project-type'); ?></li>
  2692. <?php } else { ?>
  2693. <li id="prev-link"><?php be_next_post_link('%link','<i class="icon-salient-left-arrow-thin"></i>',TRUE, null,'project-type'); ?></li>
  2694. <li id="next-link"><?php be_previous_post_link('%link','<i class="icon-salient-right-arrow-thin"></i>',TRUE, null, 'project-type'); ?></li>
  2695. <?php } ?>
  2696. </ul>
  2697. </div>
  2698. <?php }
  2699. //if no category page exists
  2700. else {
  2701. $portfolio_link = get_portfolio_page_link(get_the_ID());
  2702. if(!empty($options['main-portfolio-link'])) $portfolio_link = $options['main-portfolio-link'];
  2703. if($back_to_all_override != 'default') $portfolio_link = get_page_link($back_to_all_override);
  2704. ?>
  2705. <div id="portfolio-nav">
  2706. <?php if($single_nav_pos != 'after_project_2') { ?>
  2707. <ul>
  2708. <li id="all-items"><a href="<?php echo $portfolio_link; ?>" title="<?php echo __('Back to all projects', NECTAR_THEME_NAME); ?>"><i class="icon-salient-back-to-all"></i></a></li>
  2709. </ul>
  2710. <?php } ?>
  2711. <ul class="controls">
  2712. <?php
  2713. if(!empty($options['portfolio_same_category_single_nav']) && $options['portfolio_same_category_single_nav'] == '1') {
  2714. // get_posts in same custom taxonomy
  2715. $terms = get_the_terms($post->id,"project-type");
  2716. $project_cat = null;
  2717. if(empty($terms)) $terms = array('1' => (object) array('name' => 'nothing', 'slug' => 'none'));
  2718. foreach ( $terms as $term ) {
  2719. $project_cat = strtolower($term->slug);
  2720. }
  2721. $postlist_args = array(
  2722. 'posts_per_page' => -1,
  2723. 'orderby' => 'menu_order title',
  2724. 'order' => 'ASC',
  2725. 'post_type' => 'portfolio',
  2726. 'project-type' => $project_cat
  2727. );
  2728. $postlist = get_posts( $postlist_args );
  2729. // get ids of posts retrieved from get_posts
  2730. $ids = array();
  2731. foreach ($postlist as $thepost) {
  2732. $ids[] = $thepost->ID;
  2733. }
  2734. // get and echo previous and next post in the same taxonomy
  2735. $thisindex = array_search($post->ID, $ids);
  2736. $previd = (isset($ids[$thisindex-1])) ? $ids[$thisindex-1] : null;
  2737. $nextid = (isset($ids[$thisindex+1])) ? $ids[$thisindex+1] : null;
  2738. if ( !empty($previd) ) {
  2739. if($single_nav_pos == 'after_project')
  2740. echo '<li id="prev-link" class="from-sing"><a href="' . get_permalink($previd). '"><i class="icon-angle-left"></i><span>'. __('Previous Project', NECTAR_THEME_NAME) .'</span></a></li>';
  2741. else if($single_nav_pos == 'after_project_2') {
  2742. $hidden_class = (empty($previd)) ? 'hidden' : null ;
  2743. $only_class = (empty($nextid)) ? ' only': null;
  2744. echo '<li class="previous-project '.$hidden_class.$only_class.'">';
  2745. if(!empty($previd)) {
  2746. $previous_post_id = $previd;
  2747. $bg = get_post_meta($previous_post_id, '_nectar_header_bg', true);
  2748. if(!empty($bg)){
  2749. //page header
  2750. echo '<div class="proj-bg-img" style="background-image: url('.$bg.');"></div>';
  2751. } elseif(has_post_thumbnail($previous_post_id)) {
  2752. //featured image
  2753. $post_thumbnail_id = get_post_thumbnail_id($previous_post_id);
  2754. $post_thumbnail_url = wp_get_attachment_url( $post_thumbnail_id );
  2755. echo '<div class="proj-bg-img" style="background-image: url('.$post_thumbnail_url.');"></div>';
  2756. }
  2757. echo '<a href="'.get_permalink($previous_post_id).'"></a><h3><span>'.__('Previous Project',NECTAR_THEME_NAME).'</span><span class="text">'.get_the_title($previous_post_id).'
  2758. <svg class="next-arrow" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 39 12"><line class="top" x1="23" y1="-0.5" x2="29.5" y2="6.5" stroke="#ffffff;"></line><line class="bottom" x1="23" y1="12.5" x2="29.5" y2="5.5" stroke="#ffffff;"></line></svg><span class="line"></span></span></h3>';
  2759. }
  2760. echo '</li>';
  2761. }
  2762. else
  2763. echo '<li id="prev-link" class="from-sing"><a href="' . get_permalink($previd). '"><i class="icon-salient-left-arrow-thin"></i></a></li>';
  2764. }
  2765. if ( !empty($nextid) ) {
  2766. if($single_nav_pos == 'after_project')
  2767. echo '<li id="next-link" class="from-sing"><a href="' . get_permalink($nextid). '"><span>'. __('Next Project', NECTAR_THEME_NAME) .'</span><i class="icon-angle-right"></i></a></li>';
  2768. else if($single_nav_pos == 'after_project_2') {
  2769. $hidden_class = (empty($nextid)) ? 'hidden' : null ;
  2770. $only_class = (empty($previd)) ? ' only': null;
  2771. echo '<li class="next-project '.$hidden_class.$only_class.'">';
  2772. if(!empty($nextid)) {
  2773. $next_post_id = $nextid;
  2774. $bg = get_post_meta($next_post_id, '_nectar_header_bg', true);
  2775. if(!empty($bg)){
  2776. //page header
  2777. echo '<div class="proj-bg-img" style="background-image: url('.$bg.');"></div>';
  2778. } elseif(has_post_thumbnail($next_post_id)) {
  2779. //featured image
  2780. $post_thumbnail_id = get_post_thumbnail_id($next_post_id);
  2781. $post_thumbnail_url = wp_get_attachment_url( $post_thumbnail_id );
  2782. echo '<div class="proj-bg-img" style="background-image: url('.$post_thumbnail_url.');"></div>';
  2783. }
  2784. }
  2785. echo '<a href="'.get_permalink($next_post_id).'"></a><h3><span>'.__('Next Project',NECTAR_THEME_NAME).'</span><span class="text">'.get_the_title($next_post_id).'
  2786. <svg class="next-arrow" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 39 12"><line class="top" x1="23" y1="-0.5" x2="29.5" y2="6.5" stroke="#ffffff;"></line><line class="bottom" x1="23" y1="12.5" x2="29.5" y2="5.5" stroke="#ffffff;"></line></svg><span class="line"></span></span></h3>';
  2787. echo '</li>';
  2788. }
  2789. else
  2790. echo '<li id="next-link" class="from-sing"><a href="' . get_permalink($nextid). '"><i class="icon-salient-right-arrow-thin"></i></a></li>';
  2791. }
  2792. } else { ?>
  2793. <?php if($single_nav_pos == 'after_project') { ?>
  2794. <li id="prev-link"><?php next_post_link('%link','<i class="icon-angle-left"></i><span>'.__('Previous Project', NECTAR_THEME_NAME).'</span>'); ?></li>
  2795. <li id="next-link"><?php previous_post_link('%link', '<span>'. __('Next Project', NECTAR_THEME_NAME).'</span><i class="icon-angle-right"></i>'); ?></li>
  2796. <?php }
  2797. else if($single_nav_pos == 'after_project_2') {
  2798. $previous_post = get_next_post();
  2799. $next_post = get_previous_post();
  2800. $hidden_class = (empty($previous_post)) ? 'hidden' : null ;
  2801. $only_class = (empty($next_post)) ? ' only': null;
  2802. echo '<li class="previous-project '.$hidden_class.$only_class.'">';
  2803. if(!empty($previous_post)) {
  2804. $previous_post_id = $previous_post->ID;
  2805. $bg = get_post_meta($previous_post_id, '_nectar_header_bg', true);
  2806. if(!empty($bg)){
  2807. //page header
  2808. echo '<div class="proj-bg-img" style="background-image: url('.$bg.');"></div>';
  2809. } elseif(has_post_thumbnail($previous_post_id)) {
  2810. //featured image
  2811. $post_thumbnail_id = get_post_thumbnail_id($previous_post_id);
  2812. $post_thumbnail_url = wp_get_attachment_url( $post_thumbnail_id );
  2813. echo '<div class="proj-bg-img" style="background-image: url('.$post_thumbnail_url.');"></div>';
  2814. }
  2815. echo '<a href="'.get_permalink($previous_post_id).'"></a><h3><span>'.__('Previous Project',NECTAR_THEME_NAME).'</span><span class="text">'.$previous_post->post_title.'
  2816. <svg class="next-arrow" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 39 12"><line class="top" x1="23" y1="-0.5" x2="29.5" y2="6.5" stroke="#ffffff;"></line><line class="bottom" x1="23" y1="12.5" x2="29.5" y2="5.5" stroke="#ffffff;"></line></svg><span class="line"></span></span></h3>';
  2817. }
  2818. echo '</li>';
  2819. $hidden_class = (empty($next_post)) ? 'hidden' : null ;
  2820. $only_class = (empty($previous_post)) ? ' only': null;
  2821. echo '<li class="next-project '.$hidden_class.$only_class.'">';
  2822. if(!empty($next_post)) {
  2823. $next_post_id = $next_post->ID;
  2824. $bg = get_post_meta($next_post_id, '_nectar_header_bg', true);
  2825. if(!empty($bg)){
  2826. //page header
  2827. echo '<div class="proj-bg-img" style="background-image: url('.$bg.');"></div>';
  2828. } elseif(has_post_thumbnail($next_post_id)) {
  2829. //featured image
  2830. $post_thumbnail_id = get_post_thumbnail_id($next_post_id);
  2831. $post_thumbnail_url = wp_get_attachment_url( $post_thumbnail_id );
  2832. echo '<div class="proj-bg-img" style="background-image: url('.$post_thumbnail_url.');"></div>';
  2833. }
  2834. }
  2835. echo '<a href="'.get_permalink($next_post_id).'"></a><h3><span>'.__('Next Project',NECTAR_THEME_NAME).'</span><span class="text">'.$next_post->post_title.'
  2836. <svg class="next-arrow" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 39 12"><line class="top" x1="23" y1="-0.5" x2="29.5" y2="6.5" stroke="#ffffff;"></line><line class="bottom" x1="23" y1="12.5" x2="29.5" y2="5.5" stroke="#ffffff;"></line></svg><span class="line"></span></span></h3>';
  2837. echo '</li>';
  2838. }
  2839. else { ?>
  2840. <li id="prev-link"><?php next_post_link('%link','<i class="icon-salient-left-arrow-thin"></i>'); ?><?php if($single_nav_pos == 'after_project') echo __('Previous Project', NECTAR_THEME_NAME); ?></li>
  2841. <li id="next-link"><?php if($single_nav_pos == 'after_project') echo __('Next Project', NECTAR_THEME_NAME); ?><?php previous_post_link('%link','<i class="icon-salient-right-arrow-thin"></i>'); ?></li>
  2842. <?php } ?>
  2843. <?php } ?>
  2844. </ul>
  2845. </div>
  2846. <?php }
  2847. }
  2848. }
  2849. #-----------------------------------------------------------------#
  2850. # Shortcodes - have to load after taxonomy/post type declarations
  2851. #-----------------------------------------------------------------#
  2852. function nectar_shortcode_init() {
  2853. //load nectar shortcode button
  2854. require_once ( 'nectar/tinymce/tinymce-class.php' );
  2855. }
  2856. if(is_admin()){
  2857. if(is_edit_page()) {
  2858. add_action('init', 'nectar_shortcode_init');
  2859. }
  2860. }
  2861. //Add button to page
  2862. add_action('media_buttons','nectar_buttons',100);
  2863. function nectar_buttons() {
  2864. echo "<a data-effect='mfp-zoom-in' class='button nectar-shortcode-generator' href='#nectar-sc-generator'><img src='".get_template_directory_uri()."/nectar/assets/img/icons/n.png' /> ". __('Nectar Shortcodes', NECTAR_THEME_NAME)."</a>";
  2865. }
  2866. //Shortcode Processing
  2867. if (!function_exists('nectar_shortcode_processing')) {
  2868. function nectar_shortcode_processing(){
  2869. require_once ( 'nectar/tinymce/shortcode-processing.php' );
  2870. }
  2871. }
  2872. add_action('init', 'nectar_shortcode_processing');
  2873. #-----------------------------------------------------------------#
  2874. # Portfolio Meta
  2875. #-----------------------------------------------------------------#
  2876. include("nectar/meta/portfolio-meta.php");
  2877. #-----------------------------------------------------------------#
  2878. # New category walker for portfolio filter
  2879. #-----------------------------------------------------------------#
  2880. class Walker_Portfolio_Filter extends Walker_Category {
  2881. function start_el(&$output, $category, $depth = 0, $args = array(), $current_object_id = 0) {
  2882. extract($args);
  2883. $cat_slug = esc_attr( $category->slug );
  2884. $cat_slug = apply_filters( 'list_cats', $cat_slug, $category );
  2885. $link = '<li><a href="#" data-filter=".'.strtolower(preg_replace('/\s+/', '-', $cat_slug)).'">';
  2886. $cat_name = esc_attr( $category->name );
  2887. $cat_name = apply_filters( 'list_cats', $cat_name, $category );
  2888. $link .= $cat_name;
  2889. if(!empty($category->description)) {
  2890. $link .= ' <span>'.$category->description.'</span>';
  2891. }
  2892. $link .= '</a>';
  2893. $output .= $link;
  2894. }
  2895. }
  2896. #-----------------------------------------------------------------#
  2897. # Function to get the page link back to all portfolio items
  2898. #-----------------------------------------------------------------#
  2899. function get_portfolio_page_link($post_id) {
  2900. global $wpdb;
  2901. $post_id = sanitize_text_field($post_id);
  2902. $results = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta
  2903. WHERE meta_key='_wp_page_template' AND meta_value='template-portfolio.php'");
  2904. //safety net
  2905. $page_id = null;
  2906. foreach ($results as $result)
  2907. {
  2908. $page_id = $result->post_id;
  2909. }
  2910. return get_page_link($page_id);
  2911. }
  2912. #-----------------------------------------------------------------#
  2913. # Function to get verify that the page has the portfolio layout assigned
  2914. #-----------------------------------------------------------------#
  2915. function verify_portfolio_page($post_id) {
  2916. global $wpdb;
  2917. $post_id = sanitize_text_field($post_id);
  2918. $result = $wpdb->get_results("SELECT post_id FROM $wpdb->postmeta
  2919. WHERE meta_key='_wp_page_template' AND meta_value='template-portfolio.php' AND post_id='$post_id' LIMIT 1");
  2920. if(!empty($result)) {
  2921. return get_page_link($result[0]->post_id);
  2922. } else {
  2923. return null;
  2924. }
  2925. }
  2926. #-----------------------------------------------------------------#
  2927. # Function to find page that contains string
  2928. #-----------------------------------------------------------------#
  2929. function get_page_by_title_search($string){
  2930. global $wpdb;
  2931. $string = sanitize_text_field($string);
  2932. $title = esc_sql($string);
  2933. if(!$title) return;
  2934. $page = $wpdb->get_results("
  2935. SELECT *
  2936. FROM $wpdb->posts
  2937. WHERE post_title LIKE '%$title%'
  2938. AND post_type = 'page'
  2939. AND post_status = 'publish'
  2940. LIMIT 1
  2941. ");
  2942. return $page;
  2943. }
  2944. #-----------------------------------------------------------------#
  2945. # Post meta
  2946. #-----------------------------------------------------------------#
  2947. function enqueue_media(){
  2948. //enqueue the correct media scripts for the media library
  2949. if ( floatval(get_bloginfo('version')) < "3.5" ) {
  2950. wp_enqueue_script(
  2951. 'redux-opts-field-upload-js',
  2952. ReduxFramework::$_url . 'inc/fields/upload/field_upload_3_4.js',
  2953. array('jquery', 'thickbox', 'media-upload'),
  2954. '8.5.4',
  2955. true
  2956. );
  2957. wp_enqueue_style('thickbox');// thanks to https://github.com/rzepak
  2958. } else {
  2959. }
  2960. }
  2961. //post meta styling
  2962. function nectar_metabox_styles() {
  2963. wp_enqueue_style('nectar_meta_css', NECTAR_FRAMEWORK_DIRECTORY .'assets/css/nectar_meta.css','', '6.5');
  2964. }
  2965. //post meta scripts
  2966. function nectar_metabox_scripts() {
  2967. wp_register_script('nectar-upload', NECTAR_FRAMEWORK_DIRECTORY .'assets/js/nectar-meta.js', array('jquery'), '8.5.0');
  2968. wp_enqueue_script('nectar-upload');
  2969. wp_localize_script('redux-opts-field-upload-js', 'redux_upload', array('url' => get_template_directory_uri() .'/nectar/redux-framework/ReduxCore/inc/fields/upload/blank.png'));
  2970. if(floatval(get_bloginfo('version')) >= '3.5') {
  2971. wp_enqueue_style('wp-color-picker');
  2972. wp_enqueue_script(
  2973. 'redux-opts-field-upload-js',
  2974. get_template_directory_uri() .'/nectar/redux-framework/ReduxCore/inc/fields/upload/field_upload.js',
  2975. array('jquery'),
  2976. '8.5.4',
  2977. true
  2978. );
  2979. wp_enqueue_script(
  2980. 'redux-opts-field-color-js',
  2981. NECTAR_FRAMEWORK_DIRECTORY . 'options/fields/color/field_color.js',
  2982. array('wp-color-picker'),
  2983. '8.0.1',
  2984. true
  2985. );
  2986. wp_enqueue_media();
  2987. } else {
  2988. wp_enqueue_script(
  2989. 'redux-opts-field-color-js',
  2990. NECTAR_FRAMEWORK_DIRECTORY . 'options/fields/color/field_color_farb.js',
  2991. array('jquery', 'farbtastic'),
  2992. time(),
  2993. true
  2994. );
  2995. }
  2996. }
  2997. add_action('admin_enqueue_scripts', 'nectar_metabox_scripts');
  2998. add_action('admin_print_styles', 'nectar_metabox_styles');
  2999. add_action('admin_print_styles', 'enqueue_media');
  3000. //post meta core functions
  3001. include("nectar/meta/meta-config.php");
  3002. include("nectar/meta/post-meta.php");
  3003. function nectar_blog_social_sharing() {
  3004. global $options;
  3005. global $post;
  3006. ob_start();
  3007. $fullscreen_header = (!empty($options['blog_header_type']) && $options['blog_header_type'] == 'fullscreen' && is_singular('post')) ? true : false;
  3008. $fullscreen_class = ($fullscreen_header == true) ? 'hide-share-count': null;
  3009. $blog_header_type = (!empty($options['blog_header_type'])) ? $options['blog_header_type'] : 'default';
  3010. if( !empty($options['blog_social']) && $options['blog_social'] == 1 || $fullscreen_header == true) {
  3011. echo '<div class="nectar-social '.$fullscreen_class.'">';
  3012. if($fullscreen_header == false) {
  3013. echo '<span class="n-shortcode">'.nectar_love('return').'</span>';
  3014. //facebook
  3015. if(!empty($options['blog-facebook-sharing']) && $options['blog-facebook-sharing'] == 1) {
  3016. echo "<a class='facebook-share nectar-sharing' href='#' title='".__('Share this', NECTAR_THEME_NAME)."'> <i class='fa fa-facebook'></i> <span class='social-text'>".__('Share',NECTAR_THEME_NAME)."</span> <span class='count'></span></a>";
  3017. }
  3018. //twitter
  3019. if(!empty($options['blog-twitter-sharing']) && $options['blog-twitter-sharing'] == 1) {
  3020. echo "<a class='twitter-share nectar-sharing' href='#' title='".__('Tweet this', NECTAR_THEME_NAME)."'> <i class='fa fa-twitter'></i> <span class='social-text'>".__('Tweet',NECTAR_THEME_NAME)."</span> <span class='count'></span></a>";
  3021. }
  3022. //google plus
  3023. if(!empty($options['blog-google-plus-sharing']) && $options['blog-google-plus-sharing'] == 1) {
  3024. echo "<a class='google-plus-share nectar-sharing-alt' href='#' title='".__('Share this', NECTAR_THEME_NAME)."'> <i class='fa fa-google-plus'></i> <span class='social-text'>".__('Share',NECTAR_THEME_NAME)."</span> <span class='count'>0</span></a>";
  3025. }
  3026. //linkedIn
  3027. if(!empty($options['blog-linkedin-sharing']) && $options['blog-linkedin-sharing'] == 1) {
  3028. echo "<a class='linkedin-share nectar-sharing' href='#' title='".__('Share this', NECTAR_THEME_NAME)."'> <i class='fa fa-linkedin'></i> <span class='social-text'>".__('Share',NECTAR_THEME_NAME)."</span> <span class='count'> </span></a>";
  3029. }
  3030. //pinterest
  3031. if(!empty($options['blog-pinterest-sharing']) && $options['blog-pinterest-sharing'] == 1) {
  3032. echo "<a class='pinterest-share nectar-sharing' href='#' title='".__('Pin this', NECTAR_THEME_NAME)."'> <i class='fa fa-pinterest'></i> <span class='social-text'>".__('Pin',NECTAR_THEME_NAME)."</span> <span class='count'></span></a>";
  3033. }
  3034. } else {
  3035. //facebook
  3036. echo "<a class='facebook-share nectar-sharing' href='#' title='".__('Share this', NECTAR_THEME_NAME)."'> <i class='fa fa-facebook'></i> <span class='count'></span></a>";
  3037. echo "<a class='twitter-share nectar-sharing' href='#' title='".__('Tweet this', NECTAR_THEME_NAME)."'> <i class='fa fa-twitter'></i> <span class='count'></span></a>";
  3038. echo "<a class='google-plus-share nectar-sharing-alt' href='#' title='".__('Share this', NECTAR_THEME_NAME)."'> <i class='fa fa-google-plus'></i> <span class='count'>0</span></a>";
  3039. echo "<a class='linkedin-share nectar-sharing' href='#' title='".__('Share this', NECTAR_THEME_NAME)."'> <i class='fa fa-linkedin'></i> <span class='count'> </span></a>";
  3040. echo "<a class='pinterest-share nectar-sharing' href='#' title='".__('Pin this', NECTAR_THEME_NAME)."'> <i class='fa fa-pinterest'></i> <span class='count'></span></a>";
  3041. }
  3042. echo '</div>';
  3043. }
  3044. $sharing_output = ob_get_contents();
  3045. ob_end_clean();
  3046. echo $sharing_output;
  3047. }
  3048. function nectar_next_post_display() {
  3049. global $post;
  3050. global $options;
  3051. $post_header_style = (!empty($options['blog_header_type'])) ? $options['blog_header_type'] : 'default';
  3052. $post_pagination_style = (!empty($options['blog_next_post_link_style'])) ? $options['blog_next_post_link_style'] : 'fullwidth_next_only';
  3053. $post_pagination_style_output = ($post_pagination_style == 'contained_next_prev') ? 'fullwidth_next_prev' : $post_pagination_style;
  3054. $full_width_content_class = ($post_pagination_style == 'contained_next_prev') ? '' : 'full-width-content';
  3055. ob_start();
  3056. $next_post = get_previous_post();
  3057. if (!empty( $next_post ) && !empty($options['blog_next_post_link']) && $options['blog_next_post_link'] == '1' ||
  3058. $post_pagination_style == 'contained_next_prev' && !empty($options['blog_next_post_link']) && $options['blog_next_post_link'] == '1' ||
  3059. $post_pagination_style == 'fullwidth_next_prev' && !empty($options['blog_next_post_link']) && $options['blog_next_post_link'] == '1' ) { ?>
  3060. <div data-post-header-style="<?php echo $post_header_style; ?>" class="blog_next_prev_buttons wpb_row vc_row-fluid <?php echo $full_width_content_class; ?> standard_section" data-style="<?php echo $post_pagination_style_output; ?>" data-midnight="light">
  3061. <?php
  3062. $bg = get_post_meta($next_post->ID, '_nectar_header_bg', true);
  3063. $bg_color = get_post_meta($next_post->ID, '_nectar_header_bg_color', true);
  3064. if($post_pagination_style == 'fullwidth_next_prev' || $post_pagination_style == 'contained_next_prev') {
  3065. //next & prev
  3066. $previous_post = get_next_post();
  3067. $next_post = get_previous_post();
  3068. $hidden_class = (empty($previous_post)) ? 'hidden' : null ;
  3069. $only_class = (empty($next_post)) ? ' only': null;
  3070. echo '<ul class="controls"><li class="previous-post '.$hidden_class.$only_class.'">';
  3071. if(!empty($previous_post)) {
  3072. $previous_post_id = $previous_post->ID;
  3073. $bg = get_post_meta($previous_post_id, '_nectar_header_bg', true);
  3074. if(!empty($bg)){
  3075. //page header
  3076. echo '<div class="post-bg-img" style="background-image: url('.$bg.');"></div>';
  3077. } elseif(has_post_thumbnail($previous_post_id)) {
  3078. //featured image
  3079. $post_thumbnail_id = get_post_thumbnail_id($previous_post_id);
  3080. $post_thumbnail_url = wp_get_attachment_url( $post_thumbnail_id );
  3081. echo '<div class="post-bg-img" style="background-image: url('.$post_thumbnail_url.');"></div>';
  3082. }
  3083. echo '<a href="'.get_permalink($previous_post_id).'"></a><h3><span>'.__('Previous Post',NECTAR_THEME_NAME).'</span><span class="text">'.$previous_post->post_title.'
  3084. <svg class="next-arrow" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 39 12"><line class="top" x1="23" y1="-0.5" x2="29.5" y2="6.5" stroke="#ffffff;"></line><line class="bottom" x1="23" y1="12.5" x2="29.5" y2="5.5" stroke="#ffffff;"></line></svg><span class="line"></span></span></h3>';
  3085. }
  3086. echo '</li>';
  3087. $hidden_class = (empty($next_post)) ? 'hidden' : null ;
  3088. $only_class = (empty($previous_post)) ? ' only': null;
  3089. echo '<li class="next-post '.$hidden_class.$only_class.'">';
  3090. if(!empty($next_post)) {
  3091. $next_post_id = $next_post->ID;
  3092. $bg = get_post_meta($next_post_id, '_nectar_header_bg', true);
  3093. if(!empty($bg)){
  3094. //page header
  3095. echo '<div class="post-bg-img" style="background-image: url('.$bg.');"></div>';
  3096. } elseif(has_post_thumbnail($next_post_id)) {
  3097. //featured image
  3098. $post_thumbnail_id = get_post_thumbnail_id($next_post_id);
  3099. $post_thumbnail_url = wp_get_attachment_url( $post_thumbnail_id );
  3100. echo '<div class="post-bg-img" style="background-image: url('.$post_thumbnail_url.');"></div>';
  3101. }
  3102. }
  3103. echo '<a href="'.get_permalink($next_post_id).'"></a><h3><span>'.__('Next Post',NECTAR_THEME_NAME).'</span><span class="text">'.$next_post->post_title.'
  3104. <svg class="next-arrow" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 39 12"><line class="top" x1="23" y1="-0.5" x2="29.5" y2="6.5" stroke="#ffffff;"></line><line class="bottom" x1="23" y1="12.5" x2="29.5" y2="5.5" stroke="#ffffff;"></line></svg><span class="line"></span></span></h3>';
  3105. echo '</li></ul>';
  3106. } else {
  3107. //next only
  3108. if(!empty($bg) || !empty($bg_color)){
  3109. //page header
  3110. if(!empty($bg)) echo '<img src="'.$bg.'" alt="'.get_the_title($next_post->ID).'" />';
  3111. else echo '<span class="bg-color-only-indicator"></span>';
  3112. } elseif(has_post_thumbnail($next_post->ID)) {
  3113. //featured image
  3114. $post_thumbnail_id = get_post_thumbnail_id($next_post->ID);
  3115. $post_thumbnail_url = wp_get_attachment_url( $post_thumbnail_id );
  3116. echo '<img src="'.$post_thumbnail_url.'" alt="'.get_the_title($next_post->ID).'" />';
  3117. } ?>
  3118. <div class="col span_12 dark left">
  3119. <div class="inner">
  3120. <span><?php echo '<i>'. __('Next Post',NECTAR_THEME_NAME) .'</i>'; ?></span>
  3121. <?php previous_post_link('%link','<h3>%title</h3>'); ?>
  3122. </div>
  3123. </div>
  3124. <span class="bg-overlay"></span>
  3125. <span class="full-link"><?php previous_post_link('%link'); ?></span>
  3126. <?php } ?>
  3127. </div>
  3128. <?php }
  3129. $next_post_link_output = ob_get_contents();
  3130. ob_end_clean();
  3131. echo $next_post_link_output;
  3132. }
  3133. function nectar_related_post_display() {
  3134. global $post;
  3135. global $options;
  3136. $using_related_posts = (!empty($options['blog_related_posts']) && !empty($options['blog_related_posts']) == '1') ? true : false;
  3137. if($using_related_posts == false) return;
  3138. ob_start();
  3139. $current_categories = get_the_category($post->ID);
  3140. if($current_categories) {
  3141. $category_ids = array();
  3142. foreach($current_categories as $individual_category) {
  3143. $category_ids[] = $individual_category->term_id;
  3144. }
  3145. $relatedBlogPosts = array(
  3146. 'category__in' => $category_ids,
  3147. 'post__not_in' => array($post->ID),
  3148. 'showposts' => 3,
  3149. 'ignore_sticky_posts' => 1
  3150. );
  3151. $related_posts_query = new WP_Query($relatedBlogPosts);
  3152. $related_post_count = $related_posts_query->post_count;
  3153. if($related_post_count < 2) return;
  3154. $span_num = ($related_post_count == 2) ? 'span_6' : 'span_4';
  3155. $related_title_text = __("Related Posts", NECTAR_THEME_NAME);
  3156. $related_post_title_option = (!empty($options['blog_related_posts_title_text'])) ? $options['blog_related_posts_title_text'] : 'Related Posts';
  3157. switch($related_post_title_option){
  3158. case 'related_posts':
  3159. $related_title_text = __("Related Posts", NECTAR_THEME_NAME);
  3160. break;
  3161. case 'similar_posts':
  3162. $related_title_text = __("Similar Posts", NECTAR_THEME_NAME);
  3163. break;
  3164. case 'you_may_also_like':
  3165. $related_title_text = __("You May Also Like", NECTAR_THEME_NAME);
  3166. break;
  3167. case 'recommended_for_you':
  3168. $related_title_text = __("Recommended For You", NECTAR_THEME_NAME);
  3169. break;
  3170. }
  3171. $hidden_title_class = null;
  3172. if($related_post_title_option == 'hidden') $hidden_title_class = 'hidden';
  3173. $using_post_pag = (!empty($options['blog_next_post_link']) && $options['blog_next_post_link'] == '1') ? 'true' : 'false';
  3174. $related_post_style = (!empty($options['blog_related_posts_style'])) ? $options['blog_related_posts_style'] : 'material';
  3175. echo '<div class="row vc_row-fluid full-width-section related-post-wrap" data-using-post-pagination="'.$using_post_pag.'" data-midnight="dark"><h3 class="related-title '.$hidden_title_class.'">'. $related_title_text .'</h3><div class="row span_12 blog-recent related-posts columns-'.$related_post_count.'" data-style="'.$related_post_style.'" data-color-scheme="light">';
  3176. if( $related_posts_query->have_posts() ) : while( $related_posts_query->have_posts() ) : $related_posts_query->the_post(); ?>
  3177. <div class="col <?php echo $span_num; ?>">
  3178. <div <?php post_class('inner-wrap'); ?>>
  3179. <?php
  3180. if ( has_post_thumbnail() ) {
  3181. $related_image_size = ($related_post_count == 2) ? 'wide_photography' : 'portfolio-thumb';
  3182. echo'<a href="' . get_permalink() . '" class="img-link"><span class="post-featured-img">'.get_the_post_thumbnail($post->ID, $related_image_size, array('title' => '')) .'</span></a>';
  3183. } ?>
  3184. <?php
  3185. echo '<span class="meta-category">';
  3186. $categories = get_the_category();
  3187. if ( ! empty( $categories ) ) {
  3188. $output = null;
  3189. foreach( $categories as $category ) {
  3190. $output .= '<a class="'.$category->slug.'" href="' . esc_url( get_category_link( $category->term_id ) ) . '">' . esc_html( $category->name ) . '</a>';
  3191. }
  3192. echo trim( $output);
  3193. }
  3194. echo '</span>'; ?>
  3195. <a class="entire-meta-link" href="<?php the_permalink(); ?>"></a>
  3196. <div class="article-content-wrap">
  3197. <div class="post-header">
  3198. <span class="meta"> <?php if($related_post_style != 'material') echo get_the_date(); ?> </span>
  3199. <h3 class="title"><?php the_title(); ?></h3>
  3200. </div><!--/post-header-->
  3201. <?php
  3202. if (function_exists('get_avatar') && $related_post_style == 'material') {
  3203. echo '<div class="grav-wrap">'.get_avatar( get_the_author_meta('email'), 70, null, get_the_author() ). '<div class="text"> <a href="'.get_author_posts_url($post->post_author).'">' .get_the_author().'</a><span>'. get_the_date() .'</span></div></div>'; }
  3204. ?>
  3205. </div>
  3206. <?php if($related_post_style != 'material') { ?>
  3207. <div class="post-meta">
  3208. <span class="meta-author"> <a href="<?php echo get_author_posts_url( get_the_author_meta( 'ID' ) ); ?>"> <i class="icon-default-style icon-salient-m-user"></i> <?php the_author(); ?></a> </span>
  3209. <?php if(comments_open()) { ?>
  3210. <span class="meta-comment-count"> <a href="<?php comments_link(); ?>">
  3211. <i class="icon-default-style steadysets-icon-chat-3"></i> <?php comments_number( '0', '1','%' ); ?></a>
  3212. </span>
  3213. <?php } ?>
  3214. </div>
  3215. <?php
  3216. } ?>
  3217. </div>
  3218. </div>
  3219. <?php
  3220. endwhile; endif;
  3221. echo '</div></div>';
  3222. wp_reset_postdata();
  3223. }// if has categories
  3224. $related_posts_content = ob_get_contents();
  3225. ob_end_clean();
  3226. echo $related_posts_content;
  3227. }
  3228. //default video size
  3229. $content_width = 1080;
  3230. /** Grab IDs from new WP 3.5 gallery **/
  3231. function grab_ids_from_gallery() {
  3232. global $post;
  3233. if($post != null) {
  3234. $attachment_ids = array();
  3235. $pattern = '\[(\[?)(gallery)(?![\w-])([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\[]*+(?:\[(?!\/\2\])[^\[]*+)*+)\[\/\2\])?)(\]?)';
  3236. $ids = array();
  3237. $portfolio_extra_content = get_post_meta($post->ID, '_nectar_portfolio_extra_content', true);
  3238. if (preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches ) ) {
  3239. $count=count($matches[3]); //in case there is more than one gallery in the post.
  3240. for ($i = 0; $i < $count; $i++){
  3241. $atts = shortcode_parse_atts( $matches[3][$i] );
  3242. if ( isset( $atts['ids'] ) ){
  3243. $attachment_ids = explode( ',', $atts['ids'] );
  3244. $ids = array_merge($ids, $attachment_ids);
  3245. }
  3246. }
  3247. }
  3248. if (preg_match_all( '/'. $pattern .'/s', $portfolio_extra_content, $matches ) ) {
  3249. $count=count($matches[3]);
  3250. for ($i = 0; $i < $count; $i++){
  3251. $atts = shortcode_parse_atts( $matches[3][$i] );
  3252. if ( isset( $atts['ids'] ) ){
  3253. $attachment_ids = explode( ',', $atts['ids'] );
  3254. $ids = array_merge($ids, $attachment_ids);
  3255. }
  3256. }
  3257. }
  3258. return $ids;
  3259. } else {
  3260. $ids = array();
  3261. return $ids;
  3262. }
  3263. }
  3264. add_action( 'wp', 'grab_ids_from_gallery' );
  3265. /*Previous and Next Post in Same Taxonomy*/
  3266. /*Author: Bill Erickson*/
  3267. function be_get_previous_post($in_same_cat = false, $excluded_categories = '', $taxonomy = 'category') {
  3268. return be_get_adjacent_post($in_same_cat, $excluded_categories, true, $taxonomy);
  3269. }
  3270. function be_get_next_post($in_same_cat = false, $excluded_categories = '', $taxonomy = 'category') {
  3271. return be_get_adjacent_post($in_same_cat, $excluded_categories, false, $taxonomy);
  3272. }
  3273. function be_get_adjacent_post( $in_same_cat = false, $excluded_categories = '', $previous = true, $taxonomy = 'category' ) {
  3274. global $post, $wpdb;
  3275. if ( empty( $post ) )
  3276. return null;
  3277. $current_post_date = $post->post_date;
  3278. $join = '';
  3279. $posts_in_ex_cats_sql = '';
  3280. if ( $in_same_cat || ! empty( $excluded_categories ) ) {
  3281. $join = " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id";
  3282. if ( $in_same_cat ) {
  3283. $cat_array = wp_get_object_terms($post->ID, $taxonomy, array('fields' => 'ids'));
  3284. $join .= " AND tt.taxonomy = '$taxonomy' AND tt.term_id IN (" . implode(',', $cat_array) . ")";
  3285. }
  3286. $posts_in_ex_cats_sql = "AND tt.taxonomy = '$taxonomy'";
  3287. if ( ! empty( $excluded_categories ) ) {
  3288. if ( ! is_array( $excluded_categories ) ) {
  3289. // back-compat, $excluded_categories used to be IDs separated by " and "
  3290. if ( strpos( $excluded_categories, ' and ' ) !== false ) {
  3291. _deprecated_argument( __FUNCTION__, '3.3', sprintf( __( 'Use commas instead of %s to separate excluded categories.' ), "'and'" ) );
  3292. $excluded_categories = explode( ' and ', $excluded_categories );
  3293. } else {
  3294. $excluded_categories = explode( ',', $excluded_categories );
  3295. }
  3296. }
  3297. $excluded_categories = array_map( 'intval', $excluded_categories );
  3298. if ( ! empty( $cat_array ) ) {
  3299. $excluded_categories = array_diff($excluded_categories, $cat_array);
  3300. $posts_in_ex_cats_sql = '';
  3301. }
  3302. if ( !empty($excluded_categories) ) {
  3303. $posts_in_ex_cats_sql = " AND tt.taxonomy = '$taxonomy' AND tt.term_id NOT IN (" . implode($excluded_categories, ',') . ')';
  3304. }
  3305. }
  3306. }
  3307. $adjacent = $previous ? 'previous' : 'next';
  3308. $op = $previous ? '<' : '>';
  3309. $order = $previous ? 'DESC' : 'ASC';
  3310. $join = apply_filters( "get_{$adjacent}_post_join", $join, $in_same_cat, $excluded_categories );
  3311. $where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare("WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $posts_in_ex_cats_sql", $current_post_date, $post->post_type), $in_same_cat, $excluded_categories );
  3312. $sort = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" );
  3313. $query = "SELECT p.* FROM $wpdb->posts AS p $join $where $sort";
  3314. $query_key = 'adjacent_post_' . md5($query);
  3315. $result = wp_cache_get($query_key, 'counts');
  3316. if ( false !== $result )
  3317. return $result;
  3318. $result = $wpdb->get_row("SELECT p.* FROM $wpdb->posts AS p $join $where $sort");
  3319. if ( null === $result )
  3320. $result = '';
  3321. wp_cache_set($query_key, $result, 'counts');
  3322. return $result;
  3323. }
  3324. function be_previous_post_link($format='&laquo; %link', $link='%title', $in_same_cat = false, $excluded_categories = '', $taxonomy = 'category') {
  3325. be_adjacent_post_link($format, $link, $in_same_cat, $excluded_categories, true, $taxonomy);
  3326. }
  3327. function be_next_post_link($format='%link &raquo;', $link='%title', $in_same_cat = false, $excluded_categories = '', $taxonomy = 'category') {
  3328. be_adjacent_post_link($format, $link, $in_same_cat, $excluded_categories, false, $taxonomy);
  3329. }
  3330. function be_adjacent_post_link($format, $link, $in_same_cat = false, $excluded_categories = '', $previous = true, $taxonomy = 'category') {
  3331. if ( $previous && is_attachment() )
  3332. $post = & get_post($GLOBALS['post']->post_parent);
  3333. else
  3334. $post = be_get_adjacent_post($in_same_cat, $excluded_categories, $previous, $taxonomy);
  3335. if ( !$post )
  3336. return;
  3337. $title = $post->post_title;
  3338. if ( empty($post->post_title) )
  3339. $title = $previous ? __('Previous Post') : __('Next Post');
  3340. $title = apply_filters('the_title', $title, $post->ID);
  3341. $date = mysql2date(get_option('date_format'), $post->post_date);
  3342. $rel = $previous ? 'prev' : 'next';
  3343. $string = '<a href="'.get_permalink($post).'" rel="'.$rel.'">';
  3344. $link = str_replace('%title', $title, $link);
  3345. $link = str_replace('%date', $date, $link);
  3346. $link = $string . $link . '</a>';
  3347. $format = str_replace('%link', $link, $format);
  3348. $adjacent = $previous ? 'previous' : 'next';
  3349. echo apply_filters( "{$adjacent}_post_link", $format, $link );
  3350. }
  3351. #-----------------------------------------------------------------#
  3352. # Custom page header
  3353. #-----------------------------------------------------------------#
  3354. if ( !function_exists( 'nectar_page_header' ) ) {
  3355. function nectar_page_header($postid) {
  3356. global $options;
  3357. global $post;
  3358. global $nectar_theme_skin;
  3359. global $woocommerce;
  3360. $bg = get_post_meta($postid, '_nectar_header_bg', true);
  3361. $bg_color = get_post_meta($postid, '_nectar_header_bg_color', true);
  3362. $bg_type = get_post_meta($postid, '_nectar_slider_bg_type', true);
  3363. $height = get_post_meta($postid, '_nectar_header_bg_height', true);
  3364. $title = get_post_meta($postid, '_nectar_header_title', true);
  3365. if(empty($bg_type)) $bg_type = 'image_bg';
  3366. $early_exit = ( isset($post->post_type) && $post->post_type == 'page' && $bg_type == 'image_bg' && empty($bg_color) && empty($bg) && empty($height) && empty($title)) ? true : false;
  3367. $fullscreen_rows = get_post_meta($postid, '_nectar_full_screen_rows', true);
  3368. if($fullscreen_rows == 'on' || $early_exit)
  3369. return;
  3370. $subtitle = get_post_meta($postid, '_nectar_header_subtitle', true);
  3371. $bg_overlay_color = get_post_meta($postid, '_nectar_header_bg_overlay_color', true);
  3372. $font_color = get_post_meta($postid, '_nectar_header_font_color', true);
  3373. $parallax_bg = get_post_meta($postid, '_nectar_header_parallax', true);
  3374. //woocommerce archives
  3375. if(function_exists('woocommerce_page_title')) {
  3376. if($woocommerce && is_product_category() || $woocommerce && is_product_tag() || $woocommerce && is_product_taxonomy() ) {
  3377. $subtitle = '';
  3378. $title = woocommerce_page_title(false);
  3379. $cate = get_queried_object();
  3380. $t_id = (property_exists($cate, 'term_id')) ? $cate->term_id : '';
  3381. $product_terms = get_option( "taxonomy_$t_id" );
  3382. $bg = (!empty($product_terms['product_category_image'])) ? $product_terms['product_category_image'] : $bg;
  3383. }
  3384. }
  3385. $page_template = get_post_meta($postid, '_wp_page_template', true);
  3386. $display_sortable = get_post_meta($postid, 'nectar-metabox-portfolio-display-sortable', true);
  3387. $inline_filters = (!empty($options['portfolio_inline_filters']) && $options['portfolio_inline_filters'] == '1') ? '1' : '0';
  3388. $filters_id = (!empty($options['portfolio_inline_filters']) && $options['portfolio_inline_filters'] == '1') ? 'portfolio-filters-inline' : 'portfolio-filters';
  3389. $text_align = get_post_meta($postid, '_nectar_page_header_alignment', true);
  3390. $text_align_v = get_post_meta($postid, '_nectar_page_header_alignment_v', true);
  3391. $fullscreen_header = (!empty($options['blog_header_type']) && $options['blog_header_type'] == 'fullscreen' && is_singular('post')) ? true : false;
  3392. $post_header_style = (!empty($options['blog_header_type'])) ? $options['blog_header_type'] : 'default';
  3393. $bottom_shadow = get_post_meta($postid, '_nectar_header_bottom_shadow', true);
  3394. $bg_overlay = get_post_meta($postid, '_nectar_header_overlay', true);
  3395. $text_effect = get_post_meta($postid, '_nectar_page_header_text-effect', true);
  3396. $animate_in_effect = (!empty($options['header-animate-in-effect'])) ? $options['header-animate-in-effect'] : 'none';
  3397. (!empty($display_sortable) && $display_sortable == 'on') ? $display_sortable = '1' : $display_sortable = '0';
  3398. //incase no title is entered for portfolio, still show the filters
  3399. if( $page_template == 'template-portfolio.php' && empty($title)) $title = get_the_title($post->ID);
  3400. if( (!empty($bg) || !empty($bg_color) || $bg_type == 'video_bg' || $bg_type == 'particle_bg') && !is_post_type_archive( 'post' ) ) {
  3401. $social_img_src = (empty($bg)) ? 'none' : $bg;
  3402. $bg = (empty($bg)) ? 'none' : $bg;
  3403. if($bg_type == 'image_bg' || $bg_type == 'particle_bg') {
  3404. (empty($bg_color)) ? $bg_color = '#000' : $bg_color = $bg_color;
  3405. } else {
  3406. $bg = 'none'; //remove stnd bg image for video BG type
  3407. }
  3408. $bg_color_string = (!empty($bg_color)) ? 'background-color: '.$bg_color.'; ' : null;
  3409. if($bg_type == 'particle_bg') {
  3410. $rotate_timing = get_post_meta($postid, '_nectar_particle_rotation_timing', true);
  3411. $disable_explosion = get_post_meta($postid, '_nectar_particle_disable_explosion', true);
  3412. $shapes = get_post_meta($postid, '_nectar_canvas_shapes', true);
  3413. if(empty($shapes)) $bg_type = 'image_bg';
  3414. }
  3415. if($bg_type == 'video_bg') {
  3416. $video_webm = get_post_meta($postid, '_nectar_media_upload_webm', true);
  3417. $video_mp4 = get_post_meta($postid, '_nectar_media_upload_mp4', true);
  3418. $video_ogv = get_post_meta($postid, '_nectar_media_upload_ogv', true);
  3419. $video_image = get_post_meta($postid, '_nectar_slider_preview_image', true);
  3420. }
  3421. $box_roll = get_post_meta($postid, '_nectar_header_box_roll', true);
  3422. if(!empty($options['boxed_layout']) && $options['boxed_layout'] == '1') $box_roll = 'off';
  3423. $bg_position = get_post_meta($postid, '_nectar_page_header_bg_alignment', true);
  3424. if(empty($bg_position)) $bg_position = 'top';
  3425. if( $post_header_style == 'default_minimal' && (isset($post->post_type) && $post->post_type == 'post' && is_single())) {
  3426. $height = (!empty($height)) ? preg_replace('/\s+/', '', $height) : 550;
  3427. } else {
  3428. $height = (!empty($height)) ? preg_replace('/\s+/', '', $height) : 350;
  3429. }
  3430. $not_loaded_class = ($nectar_theme_skin != 'ascend') ? "not-loaded" : null;
  3431. $page_fullscreen_header = get_post_meta($postid, '_nectar_header_fullscreen', true);
  3432. $fullscreen_class = ($fullscreen_header == true || $page_fullscreen_header == 'on') ? "fullscreen-header" : null;
  3433. $bottom_shadow_class = ($bottom_shadow == 'on') ? " bottom-shadow": null;
  3434. $bg_overlay_class = ($bg_overlay == 'on') ? " bg-overlay": null;
  3435. $ajax_page_loading = (!empty($options['ajax-page-loading']) && $options['ajax-page-loading'] == '1') ? true : false;
  3436. $hentry_post_class = ( isset($post->post_type) && $post->post_type == 'post' && is_single() ) ? ' hentry' : '';
  3437. if($animate_in_effect == 'slide-down') {
  3438. $wrapper_height_style = null;
  3439. } else {
  3440. $wrapper_height_style = 'style="height: '.$height.'px;"';
  3441. }
  3442. if($fullscreen_header == true && ($post->post_type == 'post' && is_single()) || $page_fullscreen_header == 'on') $wrapper_height_style = null; //diable slide down for fullscreen headers
  3443. $force_transparent_header_color = (isset($post->ID)) ? get_post_meta($post->ID, '_force_transparent_header_color', true) : '';
  3444. if(empty($force_transparent_header_color)) { $force_transparent_header_color = 'light'; }
  3445. $midnight_non_parallax = (!empty($parallax_bg) && $parallax_bg == 'on') ? null : 'data-midnight="light"';
  3446. $regular_page_header_midnight_override = 'data-midnight="'.$force_transparent_header_color.'"';
  3447. if($box_roll != 'on') { echo '<div id="page-header-wrap" data-animate-in-effect="'. $animate_in_effect .'" data-midnight="'.$force_transparent_header_color.'" class="'.$fullscreen_class.'" '.$wrapper_height_style.'>'; }
  3448. if(!empty($box_roll) && $box_roll == 'on') {
  3449. wp_enqueue_style('box-roll');
  3450. echo '<div class="nectar-box-roll">';
  3451. }
  3452. ?>
  3453. <div class="<?php echo $not_loaded_class . ' ' . $fullscreen_class . $bottom_shadow_class . $hentry_post_class . $bg_overlay_class; ?>" <?php if(isset($post->post_type) && $post->post_type == 'post' && is_single()) echo 'data-post-hs="'.$post_header_style.'"'; ?> data-animate-in-effect="<?php echo $animate_in_effect; ?>" id="page-header-bg" <?php echo $regular_page_header_midnight_override; ?> data-text-effect="<?php echo $text_effect; ?>" data-bg-pos="<?php echo $bg_position; ?>" data-alignment="<?php echo (!empty($text_align)) ? $text_align : 'left' ; ?>" data-alignment-v="<?php echo (!empty($text_align_v)) ? $text_align_v : 'middle' ; ?>" data-parallax="<?php echo (!empty($parallax_bg) && $parallax_bg == 'on') ? '1' : '0'; ?>" data-height="<?php echo (!empty($height)) ? $height : '350'; ?>" style="<?php echo $bg_color_string; ?> height: <?php echo (!empty($height)) ? $height : '350'; ?>px;">
  3454. <?php
  3455. if(!empty($bg) && $bg != 'none') { ?><div class="page-header-bg-image" style="background-image: url(<?php echo $bg; ?>);"></div> <?php }
  3456. if(!empty($bg_overlay_color)) { ?><div class="page-header-overlay-color" style="background-color: <?php echo $bg_overlay_color; ?>;"></div> <?php } ?>
  3457. <?php if($bg_type != 'particle_bg') { echo '<div class="container">'; }
  3458. if($post->ID != 0 && $post->post_type && $post->post_type == 'portfolio') { ?>
  3459. <div class="row project-title">
  3460. <div class="container">
  3461. <div class="col span_6 section-title <?php if(empty($options['portfolio_social']) || $options['portfolio_social'] == 0 || empty($options['portfolio_date']) || $options['portfolio_date'] == 0 ) echo 'no-date'?>">
  3462. <div class="inner-wrap">
  3463. <h1><?php the_title(); ?></h1>
  3464. <?php if(!empty($subtitle)) { ?> <span class="subheader"><?php echo $subtitle; ?></span> <?php } ?>
  3465. <?php
  3466. global $options;
  3467. $single_nav_pos = (!empty($options['portfolio_single_nav'])) ? $options['portfolio_single_nav'] : 'in_header';
  3468. if($single_nav_pos == 'in_header') project_single_controls(); ?>
  3469. </div>
  3470. </div>
  3471. </div>
  3472. </div><!--/row-->
  3473. <?php } elseif($post->ID != 0 && $post->post_type == 'post' && is_single() ) {
  3474. // also set as an img for social sharing/
  3475. if($social_img_src != 'none') echo '<img class="hidden-social-img" src="'.$social_img_src.'" alt="'.get_the_title().'" />';
  3476. ?>
  3477. <div class="row">
  3478. <div class="col span_6 section-title blog-title">
  3479. <div class="inner-wrap">
  3480. <?php
  3481. global $options;
  3482. $theme_skin = (!empty($options['theme-skin'])) ? $options['theme-skin'] : 'default';
  3483. if( ($post->post_type == 'post' && is_single()) && $post_header_style == 'default_minimal' ||
  3484. ($post->post_type == 'post' && is_single()) && $fullscreen_header == true && $theme_skin == 'material') {
  3485. $categories = get_the_category();
  3486. if ( ! empty( $categories ) ) {
  3487. $output = null;
  3488. foreach( $categories as $category ) {
  3489. $output .= '<a class="'.$category->slug.'" href="' . esc_url( get_category_link( $category->term_id ) ) . '" >' . esc_html( $category->name ) . '</a>';
  3490. }
  3491. echo trim( $output);
  3492. }
  3493. } ?>
  3494. <h1 class="entry-title"><?php the_title(); ?></h1>
  3495. <?php if(($post->post_type == 'post' && is_single()) && $fullscreen_header == true ) { ?>
  3496. <div class="author-section">
  3497. <span class="meta-author">
  3498. <?php if (function_exists('get_avatar')) { echo get_avatar( get_the_author_meta('email'), 100 ); }?>
  3499. </span>
  3500. <div class="avatar-post-info vcard author">
  3501. <span class="fn"><?php the_author_posts_link(); ?></span>
  3502. <span class="meta-date date updated"><i><?php echo get_the_date(); ?></i></span>
  3503. </div>
  3504. </div>
  3505. <?php } ?>
  3506. <?php if($fullscreen_header != true) { ?>
  3507. <div id="single-below-header">
  3508. <span class="meta-author vcard author"><span class="fn"><?php echo __('By', NECTAR_THEME_NAME); ?> <?php the_author_posts_link(); ?></span></span><!--
  3509. --><span class="meta-date date updated"><?php echo get_the_date(); ?></span><!--
  3510. --><?php if($post_header_style != 'default_minimal') { ?> <span class="meta-category"><?php the_category(', '); ?></span> <?php } else { ?><!--
  3511. --><span class="meta-comment-count"><a href="<?php comments_link(); ?>"> <?php comments_number( __('No Comments', NECTAR_THEME_NAME), __('One Comment ', NECTAR_THEME_NAME), __('% Comments', NECTAR_THEME_NAME) ); ?></a></span>
  3512. <?php } ?>
  3513. </div><!--/single-below-header-->
  3514. <?php } ?>
  3515. <?php if($fullscreen_header != true && $post_header_style != 'default_minimal') { ?>
  3516. <div id="single-meta" data-sharing="<?php echo ( !empty($options['blog_social']) && $options['blog_social'] == 1 ) ? '1' : '0'; ?>">
  3517. <ul>
  3518. <li class="meta-comment-count">
  3519. <a href="<?php comments_link(); ?>"><i class="icon-default-style steadysets-icon-chat"></i> <?php comments_number( __('No Comments', NECTAR_THEME_NAME), __('One Comment ', NECTAR_THEME_NAME), __('% Comments', NECTAR_THEME_NAME) ); ?></a>
  3520. </li>
  3521. <li>
  3522. <?php echo '<span class="n-shortcode">'.nectar_love('return').'</span>'; ?>
  3523. </li>
  3524. <?php
  3525. $blog_social_style = (!empty($options['blog_social_style'])) ? $options['blog_social_style'] : 'default';
  3526. if( !empty($options['blog_social']) && $options['blog_social'] == 1 && $blog_social_style != 'fixed_bottom_right') {
  3527. echo '<li class="meta-share-count"><a href="#"><i class="icon-default-style steadysets-icon-share"></i><span class="share-count-total">0</span></a> <div class="nectar-social">';
  3528. //facebook
  3529. if(!empty($options['blog-facebook-sharing']) && $options['blog-facebook-sharing'] == 1) {
  3530. echo "<a class='facebook-share nectar-sharing' href='#' title='".__('Share this', NECTAR_THEME_NAME)."'> <i class='fa fa-facebook'></i> <span class='count'></span></a>";
  3531. }
  3532. //twitter
  3533. if(!empty($options['blog-twitter-sharing']) && $options['blog-twitter-sharing'] == 1) {
  3534. echo "<a class='twitter-share nectar-sharing' href='#' title='".__('Tweet this', NECTAR_THEME_NAME)."'> <i class='fa fa-twitter'></i> <span class='count'></span></a>";
  3535. }
  3536. //google plus
  3537. if(!empty($options['blog-google-plus-sharing']) && $options['blog-google-plus-sharing'] == 1) {
  3538. echo "<a class='google-plus-share nectar-sharing-alt' href='#' title='".__('Share this', NECTAR_THEME_NAME)."'> <i class='fa fa-google-plus'></i> <span class='count'>0</span></a>";
  3539. }
  3540. //linkedIn
  3541. if(!empty($options['blog-linkedin-sharing']) && $options['blog-linkedin-sharing'] == 1) {
  3542. echo "<a class='linkedin-share nectar-sharing' href='#' title='".__('Share this', NECTAR_THEME_NAME)."'> <i class='fa fa-linkedin'></i> <span class='count'> </span></a>";
  3543. }
  3544. //pinterest
  3545. if(!empty($options['blog-pinterest-sharing']) && $options['blog-pinterest-sharing'] == 1) {
  3546. echo "<a class='pinterest-share nectar-sharing' href='#' title='".__('Pin this', NECTAR_THEME_NAME)."'> <i class='fa fa-pinterest'></i> <span class='count'></span></a>";
  3547. }
  3548. echo '</div></li>';
  3549. }
  3550. ?>
  3551. </ul>
  3552. </div><!--/single-meta-->
  3553. <?php } //end if theme skin default ?>
  3554. </div>
  3555. </div><!--/section-title-->
  3556. </div><!--/row-->
  3557. <?php //default
  3558. } else if($bg_type != 'particle_bg') {
  3559. if(!empty($box_roll) && $box_roll == 'on') {
  3560. $alignment = (!empty($text_align)) ? $text_align : 'left';
  3561. $v_alignment = (!empty($text_align_v)) ? $text_align_v : 'middle';
  3562. echo '<div class="overlaid-content" data-text-effect="'.$text_effect.'" data-alignment="'.$alignment.'" data-alignment-v="'.$v_alignment.'"><div class="container">';
  3563. } ?>
  3564. <div class="row">
  3565. <div class="col span_6">
  3566. <div class="inner-wrap">
  3567. <h1><?php echo $title; ?></h1>
  3568. <span class="subheader"><?php echo $subtitle; ?></span>
  3569. </div>
  3570. <?php // portfolio filters
  3571. if( $page_template == 'template-portfolio.php' && $display_sortable == '1' && $inline_filters == '0') { ?>
  3572. <div class="<?php echo $filters_id;?>" instance="0">
  3573. <a href="#" data-sortable-label="<?php echo (!empty($options['portfolio-sortable-text'])) ? $options['portfolio-sortable-text'] :'Sort Portfolio'; ?>" id="sort-portfolio"><span><?php echo (!empty($options['portfolio-sortable-text'])) ? $options['portfolio-sortable-text'] : __('Sort Portfolio',NECTAR_THEME_NAME); ?></span> <i class="icon-angle-down"></i></a>
  3574. <ul>
  3575. <li><a href="#" data-filter="*"><?php echo __('All', NECTAR_THEME_NAME); ?></a></li>
  3576. <?php wp_list_categories(array('title_li' => '', 'taxonomy' => 'project-type', 'show_option_none' => '', 'walker' => new Walker_Portfolio_Filter())); ?>
  3577. </ul>
  3578. </div>
  3579. <?php } ?>
  3580. </div>
  3581. </div>
  3582. <?php if(!empty($box_roll) && $box_roll == 'on') echo '</div></div><!--/overlaid-content-->';
  3583. } ?>
  3584. <?php if($bg_type != 'particle_bg') { echo '</div>'; } //closing container
  3585. if(($post->ID != 0 && $post->post_type == 'post' && is_single()) && $fullscreen_header == true || $page_fullscreen_header == 'on') {
  3586. $rotate_in_class = ( $text_effect == 'rotate_in') ? 'hidden' : null;
  3587. $button_styling = (!empty($options['button-styling'])) ? $options['button-styling'] : 'default';
  3588. $header_down_arrow_style = (!empty($options['header-down-arrow-style'])) ? $options['header-down-arrow-style'] : 'default';
  3589. if($header_down_arrow_style == 'scroll-animation' || $button_styling == 'slightly_rounded' || $button_styling == 'slightly_rounded_shadow') {
  3590. echo '<div class="scroll-down-wrap no-border"><a href="#" class="section-down-arrow '.$rotate_in_class.'"><svg class="nectar-scroll-icon" viewBox="0 0 30 45" enable-background="new 0 0 30 45">
  3591. <path class="nectar-scroll-icon-path" fill="none" stroke="#ffffff" stroke-width="2" stroke-miterlimit="10" d="M15,1.118c12.352,0,13.967,12.88,13.967,12.88v18.76 c0,0-1.514,11.204-13.967,11.204S0.931,32.966,0.931,32.966V14.05C0.931,14.05,2.648,1.118,15,1.118z"></path>
  3592. </svg></a></div>';
  3593. } else {
  3594. if($button_styling == 'default'){
  3595. echo '<div class="scroll-down-wrap"><a href="#" class="section-down-arrow '.$rotate_in_class.'"><i class="icon-salient-down-arrow icon-default-style"> </i></a></div>';
  3596. } else {
  3597. echo '<div class="scroll-down-wrap '.$rotate_in_class.'"><a href="#" class="section-down-arrow"><i class="fa fa-angle-down top"></i><i class="fa fa-angle-down"></i></a></div>';
  3598. }
  3599. }
  3600. }
  3601. //video bg
  3602. if($bg_type == 'video_bg') {
  3603. if ( floatval(get_bloginfo('version')) >= "3.6" ) {
  3604. wp_enqueue_script('wp-mediaelement');
  3605. wp_enqueue_style('wp-mediaelement');
  3606. } else {
  3607. //register media element for WordPress 3.5
  3608. wp_register_script('wp-mediaelement', get_template_directory_uri() . '/js/mediaelement-and-player.min.js', array('jquery'), '1.0', TRUE);
  3609. wp_register_style('wp-mediaelement', get_template_directory_uri() . '/css/mediaelementplayer.min.css');
  3610. wp_enqueue_script('wp-mediaelement');
  3611. wp_enqueue_style('wp-mediaelement');
  3612. }
  3613. //parse video image
  3614. if(strpos($video_image, "http://") !== false || strpos($video_image, "https://") !== false){
  3615. $video_image_src = $video_image;
  3616. } else {
  3617. $video_image_src = wp_get_attachment_image_src($video_image, 'full');
  3618. $video_image_src = $video_image_src[0];
  3619. }
  3620. //$poster_markup = (!empty($video_image)) ? 'poster="'.$video_image_src.'"' : null ;
  3621. $poster_markup = null;
  3622. $video_markup = null;
  3623. $video_markup .= '<div class="video-color-overlay" data-color="'.$bg_color.'"></div>';
  3624. $video_markup .= '
  3625. <div class="mobile-video-image" style="background-image: url('.$video_image_src.')"></div>
  3626. <div class="nectar-video-wrap" data-bg-alignment="'.$bg_position.'">
  3627. <video class="nectar-video-bg" width="1800" height="700" '.$poster_markup.' preload="auto" loop autoplay>';
  3628. if(!empty($video_webm)) { $video_markup .= '<source type="video/webm" src="'.$video_webm.'">'; }
  3629. if(!empty($video_mp4)) { $video_markup .= '<source type="video/mp4" src="'.$video_mp4.'">'; }
  3630. if(!empty($video_ogv)) { $video_markup .= '<source type="video/ogg" src="'. $video_ogv.'">'; }
  3631. $video_markup .='</video>
  3632. </div>';
  3633. echo $video_markup;
  3634. }
  3635. //particle bg
  3636. if($bg_type == 'particle_bg') {
  3637. wp_enqueue_script('nectarParticles');
  3638. echo '<div class=" nectar-particles" data-disable-explosion="'.$disable_explosion.'" data-rotation-timing="'.$rotate_timing.'"><div class="canvas-bg"><canvas id="canvas" data-active-index="0"></canvas></div>';
  3639. $images = explode( ',', $shapes);
  3640. $i = 0;
  3641. if(!empty($shapes)) {
  3642. if(!empty($box_roll) && $box_roll == 'on') {
  3643. $alignment = (!empty($text_align)) ? $text_align : 'left';
  3644. $v_alignment = (!empty($text_align_v)) ? $text_align_v : 'middle';
  3645. echo '<div class="overlaid-content" data-text-effect="'.$text_effect.'" data-alignment="'.$alignment.'" data-alignment-v="'.$v_alignment.'">';
  3646. }
  3647. echo '<div class="container"><div class="row"><div class="col span_6" >';
  3648. foreach ( $images as $attach_id ) {
  3649. $i++;
  3650. $img = wp_get_attachment_image_src( $attach_id, 'full' );
  3651. $attachment = get_post( $attach_id );
  3652. $shape_meta = array(
  3653. 'caption' => $attachment->post_excerpt,
  3654. 'title' => $attachment->post_title,
  3655. 'bg_color' => get_post_meta( $attachment->ID, 'nectar_particle_shape_bg_color', true ),
  3656. 'color' => get_post_meta( $attachment->ID, 'nectar_particle_shape_color', true ),
  3657. 'color_mapping' => get_post_meta( $attachment->ID, 'nectar_particle_shape_color_mapping', true ),
  3658. 'alpha' => get_post_meta( $attachment->ID, 'nectar_particle_shape_color_alpha', true ),
  3659. 'density' => get_post_meta( $attachment->ID, 'nectar_particle_shape_density', true ),
  3660. 'max_particle_size' => get_post_meta( $attachment->ID, 'nectar_particle_max_particle_size', true )
  3661. );
  3662. if(!empty($shape_meta['density'])) {
  3663. switch($shape_meta['density']) {
  3664. case 'very_low':
  3665. $shape_meta['density'] = '19';
  3666. break;
  3667. case 'low':
  3668. $shape_meta['density'] = '16';
  3669. break;
  3670. case 'medium':
  3671. $shape_meta['density'] = '13';
  3672. break;
  3673. case 'high':
  3674. $shape_meta['density'] = '10';
  3675. break;
  3676. case 'very_high':
  3677. $shape_meta['density'] = '8';
  3678. break;
  3679. }
  3680. }
  3681. if(!empty($shape_meta['color']) && $shape_meta['color'] == '#fff' || !empty($shape_meta['color']) && $shape_meta['color'] == '#ffffff') $shape_meta['color'] = '#fefefe';
  3682. //data for particle shape
  3683. echo '<div class="shape" data-src="'.$img[0].'" data-max-size="'.$shape_meta['max_particle_size'].'" data-alpha="'.$shape_meta['alpha'].'" data-density="'.$shape_meta['density'].'" data-color-mapping="'.$shape_meta['color_mapping'].'" data-color="'.$shape_meta['color'].'" data-bg-color="'.$shape_meta['bg_color'].'"></div>';
  3684. //overlaid content
  3685. echo '<div class="inner-wrap shape-'.$i.'">';
  3686. echo '<h1>'.$shape_meta["title"].'</h1> <span class="subheader">'.$shape_meta["caption"].'</span>';
  3687. echo '</div>';
  3688. } ?>
  3689. </div></div></div>
  3690. <div class="pagination-navigation">
  3691. <div class="pagination-current"></div>
  3692. <div class="pagination-dots">
  3693. <?php foreach ( $images as $attach_id ) {
  3694. echo '<button class="pagination-dot"></button>';
  3695. } ?>
  3696. </div>
  3697. </div>
  3698. <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="690">
  3699. <defs>
  3700. <filter id="goo">
  3701. <feGaussianBlur in="SourceGraphic" stdDeviation="10" result="blur"></feGaussianBlur>
  3702. <feColorMatrix in="blur" mode="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 69 -16" result="goo"></feColorMatrix>
  3703. <feComposite in="SourceGraphic" in2="goo" operator="atop"></feComposite>
  3704. </filter>
  3705. </defs>
  3706. </svg>
  3707. <?php if(!empty($box_roll) && $box_roll == 'on') echo '</div><!--/overlaid-content-->'; ?>
  3708. </div> <!--/nectar particles-->
  3709. <?php }
  3710. } //particle bg ?>
  3711. </div>
  3712. <?php
  3713. echo '</div>';
  3714. } else if( !empty($title) && !is_archive()) { ?>
  3715. <div class="row page-header-no-bg" data-alignment="<?php echo (!empty($text_align)) ? $text_align : 'left' ; ?>">
  3716. <div class="container">
  3717. <div class="col span_12 section-title">
  3718. <h1><?php echo $title; ?><?php if(!empty($subtitle)) echo '<span>' . $subtitle . '</span>'; ?></h1>
  3719. <?php // portfolio filters
  3720. if( $page_template == 'template-portfolio.php' && $display_sortable == '1' && $inline_filters == '0') { ?>
  3721. <div class="<?php echo $filters_id;?>" instance="0">
  3722. <a href="#" data-sortable-label="<?php echo (!empty($options['portfolio-sortable-text'])) ? $options['portfolio-sortable-text'] :'Sort Portfolio'; ?>" id="sort-portfolio"><span><?php echo (!empty($options['portfolio-sortable-text'])) ? $options['portfolio-sortable-text'] : __('Sort Portfolio',NECTAR_THEME_NAME); ?></span> <i class="icon-angle-down"></i></a>
  3723. <ul>
  3724. <li><a href="#" data-filter="*"><?php echo __('All', NECTAR_THEME_NAME); ?></a></li>
  3725. <?php wp_list_categories(array('title_li' => '', 'taxonomy' => 'project-type', 'show_option_none' => '', 'walker' => new Walker_Portfolio_Filter())); ?>
  3726. </ul>
  3727. </div>
  3728. <?php } ?>
  3729. </div>
  3730. </div>
  3731. </div>
  3732. <?php } else if(is_category() || is_tag() || is_date() || is_author() ) {
  3733. /*blog archives*/
  3734. $archive_bg_img = (isset($options['blog_archive_bg_image'])) ? nectar_options_img($options['blog_archive_bg_image']) : null;
  3735. $t_id = get_cat_ID( single_cat_title( '', false ) ) ;
  3736. $terms = get_option( "taxonomy_$t_id" );
  3737. $heading = null;
  3738. $subtitle = null;
  3739. if(is_author()){
  3740. $heading = get_the_author();
  3741. $subtitle = __('All Posts By', NECTAR_THEME_NAME );
  3742. } else if(is_category()) {
  3743. $heading = single_cat_title( '', false );
  3744. $subtitle = __('Category', NECTAR_THEME_NAME );
  3745. } else if(is_tag()) {
  3746. $heading = wp_title("",false);
  3747. $subtitle = __('Tag', NECTAR_THEME_NAME );
  3748. } else if(is_date()){
  3749. if ( is_day() ) :
  3750. $heading = get_the_date();
  3751. $subtitle = __('Daily Archives', NECTAR_THEME_NAME );
  3752. elseif ( is_month() ) :
  3753. $heading = get_the_date( _x( 'F Y', 'monthly archives date format', NECTAR_THEME_NAME ) );
  3754. $subtitle = __('Monthly Archives', NECTAR_THEME_NAME );
  3755. elseif ( is_year() ) :
  3756. $heading = get_the_date( _x( 'Y', 'yearly archives date format', NECTAR_THEME_NAME ) );
  3757. $subtitle = __('Yearly Archives', NECTAR_THEME_NAME );
  3758. else :
  3759. $heading = __( 'Archives', NECTAR_THEME_NAME );
  3760. endif;
  3761. } else {
  3762. $heading = wp_title("",false);
  3763. } ?>
  3764. <?php
  3765. //category archive text align
  3766. $blog_type = $options['blog_type'];
  3767. if($blog_type == null) $blog_type = 'std-blog-sidebar';
  3768. $blog_standard_type = (!empty($options['blog_standard_type'])) ? $options['blog_standard_type'] : 'classic';
  3769. $archive_header_text_align = ($blog_type != 'masonry-blog-sidebar' && $blog_type != 'masonry-blog-fullwidth' && $blog_type != 'masonry-blog-full-screen-width' && $blog_standard_type == 'minimal') ? 'center' : 'left';
  3770. if(!empty($terms['category_image']) || !empty($archive_bg_img)) {
  3771. $bg_img = $archive_bg_img;
  3772. if(!empty($terms['category_image'])) $bg_img = $terms['category_image'];
  3773. if($animate_in_effect == 'slide-down') {
  3774. $wrapper_height_style = null;
  3775. } else {
  3776. $wrapper_height_style = 'style="height: 350px;"';
  3777. }
  3778. ?>
  3779. <div id="page-header-wrap" data-midnight="light" <?php echo $wrapper_height_style; ?>>
  3780. <div id="page-header-bg" data-animate-in-effect="<?php echo $animate_in_effect; ?>" id="page-header-bg" data-text-effect="" data-bg-pos="center" data-alignment="<?php echo $archive_header_text_align; ?>" data-alignment-v="center" data-parallax="0" data-height="350" style="height: 350px;">
  3781. <div class="page-header-bg-image" style="background-image: url(<?php echo $bg_img; ?>);"></div>
  3782. <div class="container">
  3783. <div class="row">
  3784. <div class="col span_6">
  3785. <div class="inner-wrap">
  3786. <span class="subheader"><?php echo $subtitle; ?></span>
  3787. <h1><?php echo $heading; ?></h1>
  3788. </div>
  3789. </div>
  3790. </div>
  3791. </div>
  3792. </div>
  3793. </div>
  3794. <?php } else { ?>
  3795. <div class="row page-header-no-bg" data-alignment="<?php echo (!empty($text_align)) ? $text_align : 'left' ; ?>">
  3796. <div class="container">
  3797. <div class="col span_12 section-title">
  3798. <span class="subheader"><?php echo $subtitle; ?></span>
  3799. <h1><?php echo $heading; ?></h1>
  3800. </div>
  3801. </div>
  3802. </div>
  3803. <?php }
  3804. }
  3805. }
  3806. }
  3807. function using_page_header($post_id){
  3808. global $post;
  3809. global $woocommerce;
  3810. global $options;
  3811. $force_effect = null;
  3812. if($woocommerce && is_shop() || $woocommerce && is_product_category() || $woocommerce && is_product_tag()) {
  3813. if( version_compare( $woocommerce->version, "3.0", ">=" ) ) {
  3814. $header_title = get_post_meta(wc_get_page_id('shop'), '_nectar_header_title', true);
  3815. $header_bg = get_post_meta(wc_get_page_id('shop'), '_nectar_header_bg', true);
  3816. $header_bg_color = get_post_meta(wc_get_page_id('shop'), '_nectar_header_bg_color', true);
  3817. $bg_type = get_post_meta(wc_get_page_id('shop'), '_nectar_slider_bg_type', true);
  3818. if(empty($bg_type)) $bg_type = 'image_bg';
  3819. $disable_effect = get_post_meta(wc_get_page_id('shop'), '_disable_transparent_header', true);
  3820. $force_effect = null;
  3821. } else {
  3822. $header_title = get_post_meta(woocommerce_get_page_id('shop'), '_nectar_header_title', true);
  3823. $header_bg = get_post_meta(woocommerce_get_page_id('shop'), '_nectar_header_bg', true);
  3824. $header_bg_color = get_post_meta(woocommerce_get_page_id('shop'), '_nectar_header_bg_color', true);
  3825. $bg_type = get_post_meta(woocommerce_get_page_id('shop'), '_nectar_slider_bg_type', true);
  3826. if(empty($bg_type)) $bg_type = 'image_bg';
  3827. $disable_effect = get_post_meta(woocommerce_get_page_id('shop'), '_disable_transparent_header', true);
  3828. $force_effect = null;
  3829. }
  3830. }
  3831. else if(is_home()){
  3832. $header_title = get_post_meta(get_option('page_for_posts'), '_nectar_header_title', true);
  3833. $header_bg = get_post_meta(get_option('page_for_posts'), '_nectar_header_bg', true);
  3834. $header_bg_color = get_post_meta(get_option('page_for_posts'), '_nectar_header_bg_color', true);
  3835. $bg_type = get_post_meta(get_option('page_for_posts'), '_nectar_slider_bg_type', true);
  3836. if(empty($bg_type)) $bg_type = 'image_bg';
  3837. $disable_effect = get_post_meta(get_option('page_for_posts'), '_disable_transparent_header', true);
  3838. $force_effect = null;
  3839. }
  3840. else if(!is_category() && !is_tag() && !is_date() & !is_author()) {
  3841. $header_title = get_post_meta($post->ID, '_nectar_header_title', true);
  3842. $header_bg = get_post_meta($post->ID, '_nectar_header_bg', true);
  3843. $header_bg_color = get_post_meta($post->ID, '_nectar_header_bg_color', true);
  3844. $bg_type = get_post_meta($post->ID, '_nectar_slider_bg_type', true);
  3845. if(empty($bg_type)) $bg_type = 'image_bg';
  3846. $disable_effect = get_post_meta($post->ID, '_disable_transparent_header', true);
  3847. $force_effect = get_post_meta($post->ID, '_force_transparent_header', true);
  3848. }
  3849. //blog archives
  3850. if(is_category() || is_tag() || is_date() || is_author()){
  3851. $bg_type = null;
  3852. $disable_effect = null;
  3853. $archive_bg_img = ( isset($options['blog_archive_bg_image']['id']) && !empty($options['blog_archive_bg_image']['id']) ) ? nectar_options_img($options['blog_archive_bg_image']) : null;
  3854. $t_id = get_cat_ID( single_cat_title( '', false ) ) ;
  3855. $terms = get_option( "taxonomy_$t_id" );
  3856. if(!empty($archive_bg_img) || !empty($terms['category_image'])) {
  3857. $force_effect = 'on';
  3858. $bg_type = 'image_bg';
  3859. }
  3860. }
  3861. $pattern = get_shortcode_regex();
  3862. $using_applicable_shortcode = 0;
  3863. if ( preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches ) && array_key_exists( 0, $matches )) {
  3864. if($matches[0][0]){
  3865. if( strpos($matches[0][0],'nectar_slider') !== false && strpos($matches[0][0],'full_width="true"') !== false) {
  3866. if(empty($header_title)) $using_applicable_shortcode = 1;
  3867. } else {
  3868. $using_applicable_shortcode = 0;
  3869. }
  3870. }
  3871. }
  3872. //stop effect from WooCommerce single pages
  3873. global $woocommerce;
  3874. if($woocommerce && is_product()) { $using_applicable_shortcode = 0; $header_bg = 0; $header_bg_color = 0; }
  3875. //alternate header style
  3876. global $options;
  3877. if(!empty($options['blog_header_type']) && $options['blog_header_type'] == 'fullscreen' && is_singular('post')) $using_applicable_shortcode = 1;
  3878. //incase of search / tax / removing effect
  3879. if(is_search() || $disable_effect == 'on') { $using_applicable_shortcode = 0; $header_bg = 0; $header_bg_color = 0; $bg_type = 'image_bg'; }
  3880. $page_full_screen_rows = (isset($post->ID)) ? get_post_meta($post->ID, '_nectar_full_screen_rows', true) : '';
  3881. //if forcing effect
  3882. if($force_effect == 'on' && (!is_search() && !is_tax()) || $page_full_screen_rows == 'on' && (!is_search() && !is_tax()) ) { $using_applicable_shortcode = 1; }
  3883. $the_verdict = (!empty($header_bg_color) || !empty($header_bg) || $bg_type == 'video_bg' || $bg_type == 'particle_bg' || $using_applicable_shortcode) ? true : false;
  3884. //verify its not a portfolio archive
  3885. if( is_tax('project-type') || is_tax('project-attributes') ) { $the_verdict = false; }
  3886. return $the_verdict;
  3887. }
  3888. function using_nectar_slider(){
  3889. global $post;
  3890. global $woocommerce;
  3891. if($woocommerce && is_shop() || $woocommerce && is_product_category() || $woocommerce && is_product_tag()) {
  3892. if( version_compare( $woocommerce->version, "3.0", ">=" ) ) {
  3893. $header_title = get_post_meta(wc_get_page_id('shop'), '_nectar_header_title', true);
  3894. $header_bg = get_post_meta(wc_get_page_id('shop'), '_nectar_header_bg', true);
  3895. $header_bg_color = get_post_meta(wc_get_page_id('shop'), '_nectar_header_bg_color', true);
  3896. } else {
  3897. $header_title = get_post_meta(woocommerce_get_page_id('shop'), '_nectar_header_title', true);
  3898. $header_bg = get_post_meta(woocommerce_get_page_id('shop'), '_nectar_header_bg', true);
  3899. $header_bg_color = get_post_meta(woocommerce_get_page_id('shop'), '_nectar_header_bg_color', true);
  3900. }
  3901. }
  3902. else if(is_home() || is_archive()){
  3903. $header_title = get_post_meta(get_option('page_for_posts'), '_nectar_header_title', true);
  3904. $header_bg = get_post_meta(get_option('page_for_posts'), '_nectar_header_bg', true);
  3905. $header_bg_color = get_post_meta(get_option('page_for_posts'), '_nectar_header_bg_color', true);
  3906. } else {
  3907. $header_title = get_post_meta($post->ID, '_nectar_header_title', true);
  3908. $header_bg = get_post_meta($post->ID, '_nectar_header_bg', true);
  3909. $header_bg_color = get_post_meta($post->ID, '_nectar_header_bg_color', true);
  3910. }
  3911. $pattern = get_shortcode_regex();
  3912. $using_fullwidth_slider = 0;
  3913. if ( preg_match_all( '/'. $pattern .'/s', $post->post_content, $matches ) && array_key_exists( 0, $matches )) {
  3914. if($matches[0][0]){
  3915. if( strpos($matches[0][0],'nectar_slider') !== false && strpos($matches[0][0],'full_width="true"') !== false
  3916. || strpos($matches[0][0],' type="full_width_content"') !== false && strpos($matches[0][0],'nectar_slider') !== false && strpos($matches[0][0],'[vc_column width="1/1"') !== false ) {
  3917. $using_fullwidth_slider = 1;
  3918. } else {
  3919. $using_fullwidth_slider = 0;
  3920. }
  3921. }
  3922. }
  3923. //incase of search
  3924. if(is_search() || is_tax()) $using_fullwidth_slider = 0;
  3925. //stop effect from WooCommerce single pages
  3926. global $woocommerce;
  3927. if($woocommerce && is_product()) $using_fullwidth_slider = 0;
  3928. $the_verdict = (empty($header_title) && empty($header_bg) && empty($header_bg_color) && $using_fullwidth_slider) ? true : false;
  3929. return $the_verdict;
  3930. }
  3931. #-----------------------------------------------------------------#
  3932. # Pagination
  3933. #-----------------------------------------------------------------#
  3934. if ( !function_exists( 'nectar_pagination' ) ) {
  3935. function nectar_pagination() {
  3936. global $options;
  3937. //extra pagination
  3938. if( !empty($options['extra_pagination']) && $options['extra_pagination'] == '1' ){
  3939. global $wp_query, $wp_rewrite;
  3940. $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;
  3941. $total_pages = $wp_query->max_num_pages;
  3942. if ($total_pages > 1){
  3943. $permalink_structure = get_option('permalink_structure');
  3944. $query_type = (count($_GET)) ? '&' : '?';
  3945. $format = empty( $permalink_structure ) ? $query_type.'paged=%#%' : 'page/%#%/';
  3946. echo '<div id="pagination" data-is-text="'.__("All items loaded", NECTAR_THEME_NAME).'">';
  3947. echo paginate_links(array(
  3948. 'base' => get_pagenum_link(1) . '%_%',
  3949. 'format' => $format,
  3950. 'current' => $current,
  3951. 'total' => $total_pages,
  3952. 'prev_text' => __('Previous',NECTAR_THEME_NAME),
  3953. 'next_text' => __('Next',NECTAR_THEME_NAME)
  3954. ));
  3955. echo '</div>';
  3956. }
  3957. }
  3958. //regular pagination
  3959. else{
  3960. if( get_next_posts_link() || get_previous_posts_link() ) {
  3961. echo '<div id="pagination" data-is-text="'.__("All items loaded", NECTAR_THEME_NAME).'">
  3962. <div class="prev">'.get_previous_posts_link('&laquo; Previous').'</div>
  3963. <div class="next">'.get_next_posts_link('NextPrevious &raquo;','').'</div>
  3964. </div>';
  3965. }
  3966. }
  3967. }
  3968. }
  3969. #-----------------------------------------------------------------#
  3970. # Woocommerce
  3971. #-----------------------------------------------------------------#
  3972. global $woocommerce;
  3973. $main_shop_layout = (!empty($options['main_shop_layout'])) ? $options['main_shop_layout'] : 'no-sidebar';
  3974. $single_product_layout = (!empty($options['single_product_layout'])) ? $options['single_product_layout'] : 'no-sidebar';
  3975. remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10);
  3976. remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10);
  3977. function nectar_shop_wrapper_start() {
  3978. echo '<div class="container-wrap"><div class="container main-content"><div class="row"><div class="nectar-shop-header">';
  3979. do_action( 'nectar_shop_header_markup' );
  3980. echo '</div>';
  3981. }
  3982. function nectar_shop_wrapper_end() {
  3983. echo '</div></div></div>';
  3984. }
  3985. function nectar_shop_wrapper_start_sidebar_left() {
  3986. echo '<div class="container-wrap"><div class="container main-content"><div class="nectar-shop-header">';
  3987. do_action( 'nectar_shop_header_markup' );
  3988. echo '</div><div class="row"><div id="sidebar" class="col span_3 col">';
  3989. if ( function_exists('dynamic_sidebar')) {
  3990. dynamic_sidebar('woocommerce-sidebar');
  3991. }
  3992. echo '</div><div class="post-area col span_9 col_last">';
  3993. }
  3994. function nectar_shop_wrapper_end_sidebar_left() {
  3995. echo '</div></div></div></div>';
  3996. }
  3997. function nectar_shop_wrapper_start_sidebar_right() {
  3998. echo '<div class="container-wrap"><div class="container main-content"><div class="nectar-shop-header">';
  3999. do_action( 'nectar_shop_header_markup' );
  4000. echo '</div><div class="row"><div class="post-area col span_9">';
  4001. }
  4002. function nectar_shop_wrapper_end_sidebar_right() {
  4003. echo '</div><div id="sidebar" class="col span_3 col_last">';
  4004. if ( function_exists('dynamic_sidebar')) {
  4005. dynamic_sidebar('woocommerce-sidebar');
  4006. }
  4007. echo '</div></div></div></div>';
  4008. }
  4009. function nectar_shop_wrapper_start_fullwidth() {
  4010. echo '<div class="container-wrap"><div class="container main-content"><div class="row"><div class="full-width-content"><div class="nectar-shop-header">';
  4011. do_action( 'nectar_shop_header_markup' );
  4012. echo '</div>';
  4013. }
  4014. function nectar_shop_wrapper_end_fullwidth() {
  4015. echo '</div></div></div></div>';
  4016. }
  4017. if (!function_exists('nectar_shop_loop_columns')) {
  4018. function nectar_shop_loop_columns() {
  4019. return 3; // 3 products per row
  4020. }
  4021. }
  4022. if (!function_exists('nectar_shop_loop_columns_std')) {
  4023. function nectar_shop_loop_columns_std() {
  4024. return 4; // 3 products per row
  4025. }
  4026. }
  4027. //change header
  4028. remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 );
  4029. remove_action('woocommerce_before_shop_loop', 'woocommerce_catalog_ordering',30);
  4030. add_filter( 'woocommerce_show_page_title', '__return_false' );
  4031. add_filter( 'woocommerce_breadcrumb_defaults', 'nectar_change_breadcrumb_delimiter' );
  4032. function nectar_change_breadcrumb_delimiter( $defaults ) {
  4033. $defaults['delimiter'] = ' <i class="fa fa-angle-right"></i> ';
  4034. return $defaults;
  4035. }
  4036. if($woocommerce) {
  4037. add_action( 'wp', 'nectar_woo_shop_markup' );
  4038. }
  4039. function nectar_woo_shop_markup() {
  4040. global $single_product_layout;
  4041. global $main_shop_layout;
  4042. global $woocommerce;
  4043. if($woocommerce && !is_product()) {
  4044. remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20);
  4045. }
  4046. //page header
  4047. if(is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy() ) {
  4048. add_action('woocommerce_before_main_content', 'salient_shop_header', 10);
  4049. function salient_shop_header() {
  4050. global $woocommerce;
  4051. //page header for main shop page
  4052. if( $woocommerce && version_compare( $woocommerce->version, "3.0", ">=" ) ) {
  4053. nectar_page_header(wc_get_page_id('shop'));
  4054. } else {
  4055. nectar_page_header(woocommerce_get_page_id('shop'));
  4056. }
  4057. }
  4058. function salient_woo_shop_title() {
  4059. echo '<h1 class="page-title">';
  4060. woocommerce_page_title();
  4061. echo '</h1>';
  4062. }
  4063. if( $woocommerce && version_compare( $woocommerce->version, "3.0", ">=" ) ) {
  4064. $header_title = get_post_meta(wc_get_page_id('shop'), '_nectar_header_title', true);
  4065. $header_bg_color = get_post_meta(wc_get_page_id('shop'), '_nectar_header_bg_color', true);
  4066. $header_bg_image = get_post_meta(wc_get_page_id('shop'), '_nectar_header_bg', true);
  4067. } else {
  4068. $header_title = get_post_meta(woocommerce_get_page_id('shop'), '_nectar_header_title', true);
  4069. $header_bg_color = get_post_meta(woocommerce_get_page_id('shop'), '_nectar_header_bg_color', true);
  4070. $header_bg_image = get_post_meta(woocommerce_get_page_id('shop'), '_nectar_header_bg', true);
  4071. }
  4072. if(is_shop()) {
  4073. if(empty($header_bg_color) && empty($header_bg_image)) {
  4074. add_action('nectar_shop_header_markup','salient_woo_shop_title',10);
  4075. }
  4076. }
  4077. else if( is_product_category() ) {
  4078. $cate = get_queried_object();
  4079. $t_id = (property_exists($cate, 'term_id')) ? $cate->term_id : '';
  4080. $product_terms = get_option( "taxonomy_$t_id" );
  4081. $using_cat_bg = (!empty($product_terms['product_category_image'])) ? true : false;
  4082. if(empty($header_bg_color) && empty($header_bg_image) && !$using_cat_bg) {
  4083. add_action('nectar_shop_header_markup','salient_woo_shop_title',10);
  4084. }
  4085. }
  4086. else if( is_product_tag() || is_product_taxonomy() ) {
  4087. if(empty($header_bg_color) && empty($header_bg_image)) {
  4088. add_action('nectar_shop_header_markup','salient_woo_shop_title',10);
  4089. }
  4090. }
  4091. //if(function_exists('wc_setup_loop')) {
  4092. // add_action('nectar_shop_header_markup', 'wc_setup_loop' );
  4093. //}
  4094. add_action('nectar_shop_header_markup', 'woocommerce_catalog_ordering', 10);
  4095. add_action('nectar_shop_header_markup', 'woocommerce_result_count', 10);
  4096. add_action('nectar_shop_header_markup', 'woocommerce_breadcrumb', 10);
  4097. }
  4098. //no sidebar shop single
  4099. if (is_product() && $single_product_layout != 'right-sidebar' && is_product() && $single_product_layout != 'left-sidebar') {
  4100. remove_action('woocommerce_sidebar','woocommerce_get_sidebar',10);
  4101. add_action('woocommerce_before_main_content', 'nectar_shop_wrapper_start', 10);
  4102. add_action('woocommerce_after_main_content', 'nectar_shop_wrapper_end', 10);
  4103. add_filter('loop_shop_columns', 'nectar_shop_loop_columns_std');
  4104. }
  4105. //no sidebar shop
  4106. if(is_shop() || is_product_category() || is_product_tag() || is_product_taxonomy() ) {
  4107. if($main_shop_layout != 'right-sidebar' && $main_shop_layout != 'left-sidebar' && $main_shop_layout != 'fullwidth') {
  4108. remove_action('woocommerce_sidebar','woocommerce_get_sidebar',10);
  4109. add_action('woocommerce_before_main_content', 'nectar_shop_wrapper_start', 10);
  4110. add_action('woocommerce_after_main_content', 'nectar_shop_wrapper_end', 10);
  4111. add_filter('loop_shop_columns', 'nectar_shop_loop_columns_std');
  4112. }
  4113. if($main_shop_layout == 'fullwidth') {
  4114. add_filter('loop_shop_columns', 'nectar_shop_loop_columns_std');
  4115. }
  4116. }
  4117. //using sidebar
  4118. if(is_shop() || is_product_category() || is_product_tag() || is_product() || is_product_taxonomy() ) {
  4119. $nectar_shop_layout = (is_product()) ? $single_product_layout : $main_shop_layout;
  4120. if($nectar_shop_layout == 'right-sidebar') {
  4121. remove_action('woocommerce_sidebar','woocommerce_get_sidebar',10);
  4122. add_action('woocommerce_before_main_content', 'nectar_shop_wrapper_start_sidebar_right', 10);
  4123. add_action('woocommerce_after_main_content', 'nectar_shop_wrapper_end_sidebar_right', 10);
  4124. add_filter('loop_shop_columns', 'nectar_shop_loop_columns');
  4125. } else if($nectar_shop_layout == 'left-sidebar') {
  4126. remove_action('woocommerce_sidebar','woocommerce_get_sidebar',10);
  4127. add_action('woocommerce_before_main_content', 'nectar_shop_wrapper_start_sidebar_left', 10);
  4128. add_action('woocommerce_after_main_content', 'nectar_shop_wrapper_end_sidebar_left', 10);
  4129. add_filter('loop_shop_columns', 'nectar_shop_loop_columns');
  4130. }
  4131. else if($nectar_shop_layout == 'fullwidth') {
  4132. remove_action('woocommerce_sidebar','woocommerce_get_sidebar',10);
  4133. add_action('woocommerce_before_main_content', 'nectar_shop_wrapper_start_fullwidth', 10);
  4134. add_action('woocommerce_after_main_content', 'nectar_shop_wrapper_end_fullwidth', 10);
  4135. }
  4136. }
  4137. }
  4138. /*
  4139. remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10);
  4140. remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10);
  4141. add_action('woocommerce_before_main_content', 'salient_theme_wrapper_start', 10);
  4142. add_action('woocommerce_after_main_content', 'salient_theme_wrapper_end', 10);
  4143. function salient_theme_wrapper_start() {
  4144. echo '<div class="container main-content">';
  4145. }
  4146. function salient_theme_wrapper_end() {
  4147. echo '</div>';
  4148. }*/
  4149. add_theme_support( 'woocommerce' );
  4150. //remove parentheses in counts
  4151. function nectar_remove_categories_count ($variable) {
  4152. $variable = str_replace('(', '<span class="post_count"> ', $variable);
  4153. $variable = str_replace(')', ' </span>', $variable);
  4154. return $variable;
  4155. }
  4156. if($woocommerce) {
  4157. add_filter('wp_list_categories','nectar_remove_categories_count');
  4158. add_filter('woocommerce_layered_nav_count','nectar_remove_categories_count');
  4159. }
  4160. add_filter( 'woocommerce_pagination_args' , 'nectar_override_pagination_args' );
  4161. function nectar_override_pagination_args( $args ) {
  4162. $args['prev_text'] = __( 'Previous', NECTAR_THEME_NAME );
  4163. $args['next_text'] = __( 'Next', NECTAR_THEME_NAME );
  4164. return $args;
  4165. }
  4166. if( $woocommerce && version_compare( $woocommerce->version, "3.0", ">=" ) ) {
  4167. add_filter('woocommerce_add_to_cart_fragments', 'add_to_cart_fragment');
  4168. } else {
  4169. add_filter('add_to_cart_fragments', 'add_to_cart_fragment');
  4170. }
  4171. // update the cart with ajax
  4172. function add_to_cart_fragment( $fragments ) {
  4173. global $woocommerce;
  4174. ob_start();
  4175. $fragments['a.cart-parent'] = ob_get_clean();
  4176. return $fragments;
  4177. }
  4178. //remove_action( 'woocommerce_cart_collaterals', 'woocommerce_cart_totals', 10 );
  4179. //change summary html markup to fit responsive
  4180. add_action( 'woocommerce_before_single_product_summary', 'summary_div', 35);
  4181. add_action( 'woocommerce_after_single_product_summary', 'close_div', 4);
  4182. function summary_div() {
  4183. echo "<div class='span_7 col col_last single-product-summary'>";
  4184. }
  4185. function close_div() {
  4186. echo "</div>";
  4187. }
  4188. //change tab position to be inside summary
  4189. if(empty($options['product_tab_position']) || $options['product_tab_position'] == 'in_sidebar') {
  4190. remove_action('woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10);
  4191. add_action('woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 1);
  4192. }
  4193. //wrap single product image in an extra div
  4194. add_action( 'woocommerce_before_single_product_summary', 'images_div', 8);
  4195. add_action( 'woocommerce_before_single_product_summary', 'close_div', 29);
  4196. function images_div()
  4197. {
  4198. echo "<div class='span_5 col single-product-main-image'>";
  4199. }
  4200. // display upsells and related products within dedicated div with different column and number of products
  4201. remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products',20);
  4202. remove_action( 'woocommerce_after_single_product', 'woocommerce_output_related_products',10);
  4203. add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);
  4204. function woocommerce_output_related_products() {
  4205. $output = null;
  4206. ob_start();
  4207. woocommerce_related_products(array('columns' => 4, 'posts_per_page' => 4));
  4208. $content = ob_get_clean();
  4209. if($content) { $output .= $content; }
  4210. echo '<div class="clear"></div>' . $output;
  4211. }
  4212. remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
  4213. remove_action( 'woocommerce_after_single_product', 'woocommerce_upsell_display',10);
  4214. add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_upsells', 21);
  4215. function woocommerce_output_upsells() {
  4216. $output = null;
  4217. ob_start();
  4218. woocommerce_upsell_display(4,4);
  4219. $content = ob_get_clean();
  4220. if($content) { $output .= $content; }
  4221. echo $output;
  4222. }
  4223. if( $woocommerce && version_compare( $woocommerce->version, "3.0", ">=" ) ) {
  4224. add_filter('woocommerce_add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment');
  4225. if($nectar_theme_skin == 'material') {
  4226. add_filter('woocommerce_add_to_cart_fragments', 'mobile_woocommerce_header_add_to_cart_fragment');
  4227. }
  4228. } else {
  4229. add_filter('add_to_cart_fragments', 'woocommerce_header_add_to_cart_fragment');
  4230. }
  4231. function woocommerce_header_add_to_cart_fragment( $fragments ) {
  4232. global $woocommerce;
  4233. ob_start(); ?>
  4234. <a class="cart-contents" href="<?php echo wc_get_cart_url(); ?>"><div class="cart-icon-wrap"><i class="icon-salient-cart"></i> <div class="cart-wrap"><span><?php echo $woocommerce->cart->cart_contents_count; ?> </span></div> </div></a>
  4235. <?php
  4236. $fragments['a.cart-contents'] = ob_get_clean();
  4237. return $fragments;
  4238. }
  4239. function mobile_woocommerce_header_add_to_cart_fragment( $fragments ) {
  4240. global $woocommerce;
  4241. ob_start(); ?>
  4242. <a id="mobile-cart-link" href="<?php echo wc_get_cart_url(); ?>"><i class="icon-salient-cart"></i><div class="cart-wrap"><span><?php echo $woocommerce->cart->cart_contents_count; ?> </span></div></a>
  4243. <?php
  4244. $fragments['a#mobile-cart-link'] = ob_get_clean();
  4245. return $fragments;
  4246. }
  4247. //change how many products are displayed per page
  4248. global $options;
  4249. $product_hover_alt_image = ( !empty($options['product_hover_alt_image']) ) ? $options['product_hover_alt_image'] : 'off';
  4250. $nectar_woo_products_per_page = ( !empty($options['woo-products-per-page']) ) ? $options['woo-products-per-page'] : '12';
  4251. add_filter( 'loop_shop_per_page', function($cols){ global $nectar_woo_products_per_page; return $nectar_woo_products_per_page; }, 20 );
  4252. //change the position of add to cart
  4253. remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10);
  4254. remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
  4255. $product_style = (!empty($options['product_style'])) ? $options['product_style'] : 'classic';
  4256. if( $product_style == 'classic'){
  4257. add_action('woocommerce_before_shop_loop_item_title', 'product_thumbnail_with_cart', 10 );
  4258. } else if($product_style == 'text_on_hover') {
  4259. add_action('woocommerce_before_shop_loop_item_title', 'product_thumbnail_with_cart_alt', 10 );
  4260. remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10 );
  4261. remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5 );
  4262. add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 5 );
  4263. add_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 10 );
  4264. } else {
  4265. add_action('woocommerce_before_shop_loop_item_title', 'product_thumbnail_material', 10 );
  4266. remove_action( 'woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open', 10 );
  4267. remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5 );
  4268. }
  4269. /*add 3.0 gallery support when using default lightbox option in theme*/
  4270. $nectar_product_gal_type = ( !empty($options['single_product_gallery_type']) ) ? $options['single_product_gallery_type'] : 'default';
  4271. if($nectar_product_gal_type != 'ios_slider') {
  4272. add_theme_support( 'wc-product-gallery-zoom' );
  4273. add_theme_support( 'wc-product-gallery-lightbox' );
  4274. add_theme_support( 'wc-product-gallery-slider' );
  4275. }
  4276. function product_thumbnail_with_cart() {
  4277. global $product;
  4278. global $woocommerce;
  4279. global $product_hover_alt_image; ?>
  4280. <div class="product-wrap">
  4281. <a href="<?php the_permalink(); ?>"> <?php
  4282. $product_second_image = null;
  4283. if($product_hover_alt_image == '1') {
  4284. if( $woocommerce && version_compare( $woocommerce->version, "3.0", ">=" ) ) {
  4285. $product_attach_ids = $product->get_gallery_image_ids();
  4286. } else {
  4287. $product_attach_ids = $product->get_gallery_attachment_ids();
  4288. }
  4289. if ( isset($product_attach_ids[0]) )
  4290. $product_second_image = wp_get_attachment_image($product_attach_ids[0], 'shop_catalog', false, array( 'class' => 'hover-gallery-image' ));
  4291. }
  4292. echo woocommerce_get_product_thumbnail() . $product_second_image; ?> </a>
  4293. <?php woocommerce_template_loop_add_to_cart(); ?>
  4294. </div>
  4295. <?php
  4296. }
  4297. function product_thumbnail_material() {
  4298. global $product;
  4299. global $woocommerce;
  4300. global $product_hover_alt_image; ?>
  4301. <div class="product-wrap">
  4302. <?php
  4303. $product_second_image = null;
  4304. if($product_hover_alt_image == '1') {
  4305. if( $woocommerce && version_compare( $woocommerce->version, "3.0", ">=" ) ) {
  4306. $product_attach_ids = $product->get_gallery_image_ids();
  4307. } else {
  4308. $product_attach_ids = $product->get_gallery_attachment_ids();
  4309. }
  4310. if ( isset($product_attach_ids[0]) )
  4311. $product_second_image = wp_get_attachment_image($product_attach_ids[0], 'shop_catalog', false, array( 'class' => 'hover-gallery-image' ));
  4312. }
  4313. echo '<a href="'.get_permalink().'">';
  4314. echo woocommerce_get_product_thumbnail() . $product_second_image;
  4315. echo '</a>';
  4316. echo '<div class="product-meta">';
  4317. echo '<a href="'.get_permalink().'">';
  4318. do_action( 'woocommerce_shop_loop_item_title' );
  4319. echo '</a>';
  4320. do_action( 'woocommerce_after_shop_loop_item_title' );
  4321. echo '<div class="product-add-to-cart">';
  4322. woocommerce_template_loop_add_to_cart();
  4323. echo '</div></div>'; ?>
  4324. </div>
  4325. <?php
  4326. }
  4327. function product_thumbnail_with_cart_alt() { ?>
  4328. <div class="product-wrap">
  4329. <?php
  4330. global $product;
  4331. global $woocommerce;
  4332. global $product_hover_alt_image;
  4333. $product_second_image = null;
  4334. if($product_hover_alt_image == '1') {
  4335. if( $woocommerce && version_compare( $woocommerce->version, "3.0", ">=" ) ) {
  4336. $product_attach_ids = $product->get_gallery_image_ids();
  4337. } else {
  4338. $product_attach_ids = $product->get_gallery_attachment_ids();
  4339. }
  4340. if ( isset($product_attach_ids[0]) )
  4341. $product_second_image = wp_get_attachment_image($product_attach_ids[0], 'shop_catalog', false, array( 'class' => 'hover-gallery-image' ));
  4342. }
  4343. echo woocommerce_get_product_thumbnail() . $product_second_image; ?>
  4344. <div class="bg-overlay"></div>
  4345. <a href="<?php the_permalink(); ?>" class="link-overlay"></a>
  4346. <div class="text-on-hover-wrap">
  4347. <?php do_action( 'woocommerce_after_shop_loop_item_title' ); ?>
  4348. <?php
  4349. if( $woocommerce && version_compare( $woocommerce->version, "3.0", ">=" ) ) {
  4350. echo '<div class="categories">' . wc_get_product_category_list($product->get_id()) .'</div>';
  4351. } else {
  4352. echo '<div class="categories">' . $product->get_categories() .'</div>';
  4353. }
  4354. ?>
  4355. </div>
  4356. </div>
  4357. <a href="<?php the_permalink(); ?>"><?php do_action( 'woocommerce_shop_loop_item_title' ); ?></a>
  4358. <?php woocommerce_template_loop_add_to_cart();
  4359. }
  4360. //add link to item titles
  4361. /*add_action('woocommerce_before_shop_loop_item_title','product_item_title_link_open');
  4362. add_action('woocommerce_after_shop_loop_item_title','product_item_title_link_close');
  4363. function product_item_title_link_open(){
  4364. echo '<a href="'.get_permalink().'">';
  4365. }
  4366. function product_item_title_link_close(){
  4367. echo '</a>';
  4368. }*/
  4369. function nectar_header_cart_output() {
  4370. global $woocommerce;
  4371. global $options;
  4372. $headerFormat = (!empty($options['header_format'])) ? $options['header_format'] : 'default';
  4373. $userSetSideWidgetArea = (!empty($options['header-slide-out-widget-area']) && $headerFormat != 'left-header' ) ? $options['header-slide-out-widget-area'] : 'off';
  4374. ob_start();
  4375. if ($woocommerce) {
  4376. $nav_cart_style = (!empty($options['ajax-cart-style'])) ? $options['ajax-cart-style'] : 'default';
  4377. ?>
  4378. <div class="cart-outer" data-user-set-ocm="<?php echo $userSetSideWidgetArea; ?>" data-cart-style="<?php echo $nav_cart_style; ?>">
  4379. <div class="cart-menu-wrap">
  4380. <div class="cart-menu">
  4381. <a class="cart-contents" href="<?php echo wc_get_cart_url(); ?>"><div class="cart-icon-wrap"><i class="icon-salient-cart"></i> <div class="cart-wrap"><span><?php echo $woocommerce->cart->cart_contents_count; ?> </span></div> </div></a>
  4382. </div>
  4383. </div>
  4384. <div class="cart-notification">
  4385. <span class="item-name"></span> <?php echo __('was successfully added to your cart.', NECTAR_THEME_NAME); ?>
  4386. </div>
  4387. <?php
  4388. if($nav_cart_style != 'slide_in') {
  4389. // Check for WooCommerce 2.0 and display the cart widget
  4390. if ( version_compare( WOOCOMMERCE_VERSION, "2.0.0" ) >= 0 ) {
  4391. the_widget( 'WC_Widget_Cart' );
  4392. } else {
  4393. the_widget( 'WooCommerce_Widget_Cart', 'title= ' );
  4394. }
  4395. }
  4396. ?>
  4397. </div>
  4398. <?php }
  4399. $captured_cart_content = ob_get_clean();
  4400. return $captured_cart_content;
  4401. }
  4402. if(empty($options['product_tab_position']) || $options['product_tab_position'] == 'in_sidebar') {
  4403. add_action( 'woocommerce_single_product_summary', 'review_quickview', 7 );
  4404. } else {
  4405. add_action( 'woocommerce_single_product_summary', 'review_quickview', 100 );
  4406. add_action( 'woocommerce_after_single_product_summary', 'nectar_woo_clearfix', 7 );
  4407. }
  4408. function nectar_woo_clearfix() {
  4409. echo '<div class="after-product-summary-clear"></div>';
  4410. }
  4411. function review_quickview(){
  4412. global $product, $options, $post;
  4413. /*$rating_count = $product->get_rating_count();
  4414. if(!empty($rating_count)) {
  4415. echo '<div class="review_num">'.sprintf( _n('%s review %s', '%s reviews %s', $rating_count, 'woocommerce'), '<span itemprop="ratingCount" class="count">'. $rating_count .'</span>', '' ).'</div>';
  4416. echo '<div class="quick_rating">';
  4417. woocommerce_get_template( 'loop/rating.php' );
  4418. echo '</div>';
  4419. } */ ?>
  4420. <div id="single-meta" data-sharing="<?php echo ( !empty($options['woo_social']) && $options['woo_social'] == 1 ) ? '1' : '0'; ?>">
  4421. <ul class="product-sharing">
  4422. <?php
  4423. // portfolio social sharting icons
  4424. if( !empty($options['woo_social']) && $options['woo_social'] == 1 ) {
  4425. echo '<li class="meta-share-count"><a href="#"><i class="icon-default-style steadysets-icon-share"></i><span class="share-count-total">0</span> <span class="plural">'. __('Shares',NECTAR_THEME_NAME) . '</span> <span class="singular">'. __('Share',NECTAR_THEME_NAME) .'</span></a> <div class="nectar-social">';
  4426. echo '<div class="nectar-social woo">';
  4427. //facebook
  4428. if(!empty($options['woo-facebook-sharing']) && $options['woo-facebook-sharing'] == 1) {
  4429. echo "<a class='facebook-share nectar-sharing' href='#' title='Share this'> <i class='fa fa-facebook'></i> <span class='count'></span></a>";
  4430. }
  4431. //twitter
  4432. if(!empty($options['woo-twitter-sharing']) && $options['woo-twitter-sharing'] == 1) {
  4433. echo "<a class='twitter-share nectar-sharing' href='#' title='Tweet this'> <i class='fa fa-twitter'></i> <span class='count'></span></a>";
  4434. }
  4435. //google plus
  4436. if(!empty($options['woo-google-plus-sharing']) && $options['woo-google-plus-sharing'] == 1) {
  4437. echo "<a class='google-plus-share nectar-sharing-alt' href='#' title='".__('Share this', NECTAR_THEME_NAME)."'> <i class='fa fa-google-plus'></i> <span class='count'>0</span></a>";
  4438. }
  4439. //linkedIn
  4440. if(!empty($options['woo-linkedin-sharing']) && $options['woo-linkedin-sharing'] == 1) {
  4441. echo "<a class='linkedin-share nectar-sharing' href='#' title='".__('Share this', NECTAR_THEME_NAME)."'> <i class='fa fa-linkedin'></i> <span class='count'> </span></a>";
  4442. }
  4443. //pinterest
  4444. if(!empty($options['woo-pinterest-sharing']) && $options['woo-pinterest-sharing'] == 1) {
  4445. echo "<a class='pinterest-share nectar-sharing' href='#' title='Pin this'> <i class='fa fa-pinterest'></i> <span class='count'></span></a>";
  4446. }
  4447. echo '</div></div></li>';
  4448. }
  4449. ?>
  4450. </ul>
  4451. </div>
  4452. <?php
  4453. }
  4454. // Image sizes
  4455. global $pagenow;
  4456. if ( is_admin() && isset( $_GET['activated'] ) && $pagenow == 'themes.php' ) add_action( 'init', 'nectar_woocommerce_image_dimensions', 1 );
  4457. // Define image sizes
  4458. function nectar_woocommerce_image_dimensions() {
  4459. $catalog = array(
  4460. 'width' => '375',
  4461. 'height' => '400',
  4462. 'crop' => 1
  4463. );
  4464. $single = array(
  4465. 'width' => '600',
  4466. 'height' => '630',
  4467. 'crop' => 1
  4468. );
  4469. $thumbnail = array(
  4470. 'width' => '130',
  4471. 'height' => '130',
  4472. 'crop' => 1
  4473. );
  4474. update_option( 'shop_catalog_image_size', $catalog ); // Product category thumbs
  4475. update_option( 'shop_single_image_size', $single ); // Single product image
  4476. update_option( 'shop_thumbnail_image_size', $thumbnail ); // Image gallery thumbs
  4477. }
  4478. // Open Graph
  4479. if (!function_exists('add_opengraph')) {
  4480. function add_opengraph() {
  4481. global $post; // Ensures we can use post variables outside the loop
  4482. // Start with some values that don't change.
  4483. echo "<meta property='og:site_name' content='". get_bloginfo('name') ."'/>"; // Sets the site name to the one in your WordPress settings
  4484. echo "<meta property='og:url' content='" . get_permalink() . "'/>"; // Gets the permalink to the post/page
  4485. if (is_singular()) { // If we are on a blog post/page
  4486. echo "<meta property='og:title' content='" . get_the_title() . "'/>"; // Gets the page title
  4487. echo "<meta property='og:type' content='article'/>"; // Sets the content type to be article.
  4488. } elseif(is_front_page() or is_home()) { // If it is the front page or home page
  4489. echo "<meta property='og:title' content='" . get_bloginfo("name") . "'/>"; // Get the site title
  4490. echo "<meta property='og:type' content='website'/>"; // Sets the content type to be website.
  4491. }
  4492. if(has_post_thumbnail( $post->ID )) { // If the post has a featured image.
  4493. $thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'large' );
  4494. echo "<meta property='og:image' content='" . esc_attr( $thumbnail[0] ) . "'/>"; // If it has a featured image, then display this for Facebook
  4495. }
  4496. }
  4497. }
  4498. if( !function_exists('nectar_remove_hentry_cssclass') ) {
  4499. function nectar_remove_hentry_cssclass( $classes ) {
  4500. $classes = array_diff( $classes, array( 'hentry' ) );
  4501. return $classes;
  4502. }
  4503. }
  4504. add_filter( 'post_class', 'nectar_remove_hentry_cssclass' );
  4505. $using_jetpack_publicize = ( class_exists( 'Jetpack' ) && in_array( 'publicize', Jetpack::get_active_modules()) ) ? true : false;
  4506. if ( !defined('WPSEO_VERSION') && !class_exists('NY_OG_Admin') && !class_exists('Wpsso') && $using_jetpack_publicize == false) {
  4507. add_action( 'wp_head', 'add_opengraph', 5 );
  4508. }
  4509. ?>