Current Path : /var/www/html/anwc/wp-content/themes/khore/ |
Current File : /var/www/html/anwc/wp-content/themes/khore/functions.php |
<?php require_once 'event-framework/event-framework.php'; add_filter('ef_content_builder_templates', 'khore_ef_content_builder_templates'); function khore_ef_content_builder_templates($templates) { $templates['list'] = array(); return $templates; } add_filter('ef_content_builder_sections', 'khore_ef_content_builder_sections'); function khore_ef_content_builder_sections($sections) { unset($sections['speakers']); unset($sections['exhibitors']); unset($sections['fullexhibitors']); unset($sections['schedule']); unset($sections['calltoaction']); unset($sections['sponsors']); unset($sections['news']); array_values($sections); return $sections; } add_filter('ef_theme_options_logo', 'khore_set_theme_options_logo'); function khore_set_theme_options_logo() { return get_template_directory_uri() . '/img/khore_logo.png'; } function khore_setup_social_networks() { global $twitter, $facebook, $instagram; $ef_options = EF_Event_Options::get_theme_options(); if (!empty($ef_options['efcb_facebook_rsvp_app_id']) && !empty($ef_options['efcb_facebook_rsvp_secret'])) { $facebook = new Facebook(array( 'appId' => $ef_options['efcb_facebook_rsvp_app_id'], 'secret' => $ef_options['efcb_facebook_rsvp_secret'], )); } if (!empty($ef_options['efcb_twitter_access_token']) && !empty($ef_options['efcb_twitter_access_token_secret']) && !empty($ef_options['efcb_twitter_consumer_key']) && !empty($ef_options['efcb_twitter_consumer_secret'])) { $twitter = new TwitterAPIExchange(array( 'oauth_access_token' => $ef_options['efcb_twitter_access_token'], 'oauth_access_token_secret' => $ef_options['efcb_twitter_access_token_secret'], 'consumer_key' => $ef_options['efcb_twitter_consumer_key'], 'consumer_secret' => $ef_options['efcb_twitter_consumer_secret'] )); } if (!empty($ef_options['efcb_instagram_client_id']) && !empty($ef_options['efcb_instagram_client_secret'])) { $instagramAccessToken = get_option('khore_instagram_token'); if (!empty($ef_options['efcb_instagram_new_api_mode'])) { $instagram = new InstagramAPI(array( 'apiKey' => $ef_options['efcb_instagram_client_id'], 'apiSecret' => $ef_options['efcb_instagram_client_secret'], 'apiCallback' => admin_url('admin.php?page=ef-options') )); if (!empty($instagramAccessToken)) { $instagram->setAccessToken($instagramAccessToken); } } else { $instagram = new InstagramAPI($ef_options['efcb_instagram_client_id']); } } } add_action('init', 'khore_setup_social_networks'); function khore_get_instagram_token() { if (!defined('DOING_AJAX') || !DOING_AJAX) { global $instagram; $page = filter_input(INPUT_GET, 'page'); $code = filter_input(INPUT_GET, 'code'); $token = ''; if ($page == 'ef-options' && !empty($code)) { if (!current_user_can('manage_options')) { wp_die(); } $token = $instagram->getOAuthToken($code, false); $_SESSION['instagram_token'] = $token; if (!empty($token->access_token)) { $instagram->setAccessToken($token->access_token); update_option('khore_instagram_token', $token->access_token, true); add_action('admin_notices', 'khore_get_instagram_notice_updated'); } else { add_action('admin_notices', 'khore_get_instagram_notice_error'); } } } } function khore_get_instagram_notice_updated() { ?> <div class="updated"> <p><?php _e('Instagram Token successfully acquired!', 'khore'); ?></p> </div> <?php } function khore_get_instagram_notice_error() { ?> <div class="error"> <p>Instagram Login: <?php echo $_SESSION['instagram_token']->error_message; ?></p> </div> <?php } add_action('admin_init', 'khore_get_instagram_token'); // ******************* Scripts and Styles ****************** // add_action('wp_enqueue_scripts', 'khore_enqueue_scripts'); add_action('after_setup_theme', 'khore_after_theme_setup'); function khore_after_theme_setup() { // ******************* Localizations ****************** // load_theme_textdomain('khore', get_template_directory() . '/languages/'); // ******************* Add Custom Menus ****************** // add_theme_support('menus'); // ******************* Add Post Thumbnails ****************** // add_theme_support('post-thumbnails'); add_image_size('khore-speaker', 531, 424, true); add_image_size('khore-news', 531, 424, true); add_image_size('khore-session', 549, 549, true); // ******************* Add Navigation Menu ****************** // register_nav_menu('primary', __('Navigation Menu', 'khore')); } add_action('admin_enqueue_scripts', 'khore_admin_enqueue_scripts'); function khore_admin_enqueue_scripts($hook) { global $post_type; if (in_array($hook, array('post.php', 'post-new.php'))) { if ($post_type == 'session') { wp_enqueue_script('jquery-ui-datepicker'); wp_enqueue_style('jquery-ui-datepicker', get_template_directory_uri() . '/css/admin/jquery-ui-smoothness/jquery-ui-1.10.3.custom.min.css'); wp_enqueue_script('jquery-ui-sortable'); wp_enqueue_style('khore-sortable', get_template_directory_uri() . '/css/admin/sortable.css'); } } else if ($hook == 'toplevel_page_ef-options') { wp_enqueue_style('khore-theme-options', get_template_directory_uri() . '/css/admin/themeoptions.css'); wp_enqueue_script('khore-theme-options', get_template_directory_uri() . '/js/admin/themeoptions.js', array('jquery'), false, true); } } function khore_enqueue_scripts() { global $post; $ef_options = EF_Event_Options::get_theme_options(); $google_maps_key = ''; if (!empty($ef_options['efcb_googlemaps_key'])) { $google_maps_key = $ef_options['efcb_googlemaps_key']; } wp_enqueue_style('khore-font-noto', 'https://fonts.googleapis.com/css?family=Noto+Sans:400,700,400italic,700italic'); wp_enqueue_style('khore-font-Dosis', 'https://fonts.googleapis.com/css?family=Dosis:200,300,400,500,600,700,800'); wp_enqueue_style('khore-font-awesome', get_template_directory_uri() . '/css/font-awesome.min.css'); wp_enqueue_style('khore-style-reset', get_template_directory_uri() . '/css/reset.css'); wp_enqueue_style('khore-style-bootstrap', get_template_directory_uri() . '/css/bootstrap.min.css'); wp_enqueue_style('khore-style-main', get_template_directory_uri() . '/css/main.css'); if ($post) { $customCss = get_post_meta($post->ID, 'ef-cb-custom-css', true); if (!empty($customCss)) { wp_add_inline_style('khore-style-main', $customCss); } } wp_enqueue_style('swiper-css', get_template_directory_uri() . '/css/swiper.min.css'); wp_enqueue_style('index-css', get_template_directory_uri() . '/css/index.css'); wp_enqueue_style('schedule-css', get_template_directory_uri() . '/css/schedule.css'); wp_enqueue_style('speakers-css', get_template_directory_uri() . '/css/news.css'); wp_enqueue_style('tickets-css', get_template_directory_uri() . '/css/tickets.css'); wp_enqueue_style('twiiter-sc-css', get_template_directory_uri() . '/css/twittering.css'); wp_enqueue_style('latest-news-css', get_template_directory_uri() . '/css/news.css'); wp_enqueue_style('instagram-css', get_template_directory_uri() . '/css/inst.css'); wp_enqueue_style('fb-rsvp-css', get_template_directory_uri() . '/css/fbook.css'); wp_enqueue_style('explore-css', get_template_directory_uri() . '/css/location.css'); wp_enqueue_style('contact-css', get_template_directory_uri() . '/css/contact.css'); wp_enqueue_style('sponsors-css', get_template_directory_uri() . '/css/sponsors.css'); wp_enqueue_style('media-grid-css', get_template_directory_uri() . '/css/gallery.css'); wp_enqueue_style('text-blocks-css', get_template_directory_uri() . '/css/samples.css'); wp_enqueue_style('registration-css', get_template_directory_uri() . '/css/registration.css'); wp_enqueue_style('samplepage-css', get_template_directory_uri() . '/css/samplepage.css'); wp_enqueue_style('khore-dynamic-css', admin_url('admin-ajax.php') . '?action=dynamic-css'); wp_enqueue_style('khore-style', get_stylesheet_uri()); if (!empty($ef_options['ef_font'])) { wp_enqueue_style('khore-font-custom', 'https://fonts.googleapis.com/css?family=' . $ef_options['ef_font']); } // Scripts wp_deregister_script('jquery'); wp_enqueue_script('jquery', get_template_directory_uri() . '/js/jquery-2.1.1.min.js', false, false, false); wp_enqueue_script('jquery-migrate', 'http://code.jquery.com/jquery-migrate-1.2.1.js', false, false, false); wp_enqueue_script('jquery-cookie', get_template_directory_uri() . '/js/jquery.cookie.js', false, false, false); wp_enqueue_script('khore-script-googlemaps', 'https://maps.google.com/maps/api/js?key=' . $google_maps_key, false, false, false); wp_enqueue_script('khore-script-bootstrap', get_template_directory_uri() . '/js/bootstrap.min.js', array('jquery'), false, false); wp_enqueue_script('khore-script-device', get_template_directory_uri() . '/js/device.js', array('jquery'), false, false); wp_enqueue_script('khore-script-countdown', get_template_directory_uri() . '/js/jquery.countdown.min.js', array('jquery'), false, true); wp_enqueue_script('khore-script-iscroll-probe', get_template_directory_uri() . '/js/iscroll-probe.js', array('jquery'), false, false); wp_enqueue_script('khore-script-nicescroll', get_template_directory_uri() . '/js/jquery.nicescroll.min.js', array('jquery'), false, false); wp_enqueue_script('khore-script-swiper', get_template_directory_uri() . '/js/swiper.jquery.min.js', array('jquery'), false, false); wp_enqueue_script('khore-script-main', get_template_directory_uri() . '/js/jquery.main.js', array('jquery'), false, false); wp_enqueue_script('khore-tweetmachine', get_template_directory_uri() . '/js/tweetMachine.min.js'); wp_enqueue_script('khore-recaptcha', 'https://www.google.com/recaptcha/api/js/recaptcha_ajax.js'); wp_enqueue_script('khore-woocommerce', get_template_directory_uri() . '/js/woocommerce.js', array('jquery'), false, false); if (is_singular() && comments_open() && get_option('thread_comments')) { wp_enqueue_script('comment-reply'); } } function khore_template_hash($hashtag, $count = 9) { ?> <script type="text/javascript"> var khore_hash = '<?php echo $hashtag; ?>'; var khore_count = '<?php echo $count; ?>'; </script> <?php } add_action('set_ajax_params', 'khore_template_hash', 10, 2); // ******************* Ajax ****************** // add_action('wp_ajax_nopriv_get_tweets', 'khore_ajax_get_tweets'); add_action('wp_ajax_get_tweets', 'khore_ajax_get_tweets'); function khore_ajax_get_tweets() { global $twitter; $tweets = array(); if (!empty($twitter)) { $url = 'https://api.twitter.com/1.1/search/tweets.json'; $getfield = "?q={$_GET['queryParams']['q']}&count={$_GET['queryParams']['count']}"; $requestMethod = 'GET'; $store = $twitter->setGetfield($getfield) ->buildOauth($url, $requestMethod) ->performRequest(); $tweets = json_decode($store); echo json_encode($tweets->statuses); } die; } add_action('wp_ajax_nopriv_get_instagrams', 'khore_ajax_get_instagrams'); add_action('wp_ajax_get_instagrams', 'khore_ajax_get_instagrams'); function khore_ajax_get_instagrams() { global $instagram; $ef_options = EF_Event_Options::get_theme_options(); $instagramhash = !empty($_POST['hashtag']) ? $_POST['hashtag'] : ''; $limit = !empty($_POST['limit']) ? $_POST['limit'] : '9'; $ret = array(); if (isset($instagram) && !empty($instagramhash)) { $instagramAccessToken = get_option('khore_instagram_token'); if (!empty($ef_options['efcb_instagram_new_api_mode']) && !empty($instagramAccessToken)) { $photos = $instagram->getTagMedia($instagramhash, $limit, true); } else { $photos = $instagram->getTagMedia($instagramhash, $limit, false); } //$instagrams = $instagram->getTagMedia($instagramhash, $limit); $ret = $photos->data; } echo json_encode($ret); die; } function khore_parse_tweet_text($text) { $text = preg_replace('/(https?:\/\/[^\s"<>]+)/', '<a href="$1">$1</a>', $text); $text = preg_replace('/(^|[\n\s])@([^\s"\t\n\r<:]*)/is', '$1<a href="http://twitter.com/$2">@$2</a>', $text); $text = preg_replace('/(^|[\n\s])#([^\s"\t\n\r<:]*)/is', '$1<a href="http://twitter.com/search?q=%23$2">#$2</a>', $text); return $text; } // widgets add_filter('ef_widget_render', 'khore_ef_widget_render', 10, 3); function khore_ef_widget_render($content, $id_base, $args) { ob_start(); include(locate_template("components/templates/widgets/$id_base.php")); return ob_get_clean(); } // shortcodes add_filter('efcb_shortcode_render', 'khore_efcb_shortcode_render', 10, 3); function khore_efcb_shortcode_render($content, $id_base, $args) { ob_start(); include(locate_template("components/templates/shortcodes/$id_base.php")); return ob_get_clean(); } add_filter('efcb_shortcode_render', 'khore_efcb_shortcode_render', 10, 3); add_action('wp_ajax_nopriv_get_section', 'khore_efcb_section_render'); add_action('wp_ajax_get_section', 'khore_efcb_section_render'); function khore_efcb_section_render() { $page_id = !empty($_REQUEST["page_id"]) ? $_REQUEST["page_id"] : null; $frontpage_id = get_option('page_on_front'); if ($page_id) { if (!empty($frontpage_id) && $frontpage_id == $page_id) { $pageQuery = new WP_Query(array( 'post__in' => array($page_id), 'post_type' => 'page' )); if ($pageQuery->have_posts()) : while ($pageQuery->have_posts()) : $pageQuery->the_post(); ob_start(); get_template_part('front-page-content'); $ret = ob_get_contents(); ob_end_clean(); endwhile; endif; echo $ret; } else { $pageQuery = new WP_Query(array( 'post__in' => array($page_id), 'post_type' => 'page' )); if ($pageQuery->have_posts()) : while ($pageQuery->have_posts()) : $pageQuery->the_post(); echo do_shortcode(the_content()); endwhile; endif; } } else { echo 'Page not found'; } die(); } add_action('wp_ajax_nopriv_get_template_part', 'khore_efcb_get_template_part'); add_action('wp_ajax_get_template_part', 'khore_efcb_get_template_part'); function khore_efcb_get_template_part() { $post_id = !empty($_REQUEST['post_id']) ? $_REQUEST['post_id'] : null; $post_type = !empty($_REQUEST['post_type']) ? $_REQUEST['post_type'] : null; $ret = ''; if ($post_id && $post_type) { global $post; $post = get_post($post_id); setup_postdata($post); ob_start(); get_template_part("$post_type-content"); $ret = ob_get_contents(); ob_end_clean(); } echo $ret; die(); } add_action('wp_ajax_nopriv_get_schedule', array('EF_Session_Helper', 'ef_ajax_get_schedule')); add_action('wp_ajax_get_schedule', array('EF_Session_Helper', 'ef_ajax_get_schedule')); add_action('wp_ajax_nopriv_get_video_thumbnail', 'khore_ajax_get_video_thumbnail'); add_action('wp_ajax_get_video_thumbnail', 'khore_ajax_get_video_thumbnail'); function khore_ajax_get_video_thumbnail() { $ret = ''; $url = filter_input(INPUT_POST, 'url'); if (!empty($url)) { $ret = khore_get_video_thumbnail($url, array('youtube' => 'default', 'vimeo' => 'thumbnail_small')); } echo json_encode($ret); die; } // ******************* Misc ****************** // add_filter('manage_edit-speaker_columns', 'edit_speaker_columns'); function edit_speaker_columns($columns) { $new_columns = array( 'cb' => $columns['cb'], 'title' => $columns['title'], 'menu_order' => __('Order', 'khore'), 'date' => $columns['date'], ); return $new_columns; } add_action('manage_posts_custom_column', 'edit_post_columns', 10, 2); function edit_post_columns($column_name) { global $post; switch ($column_name) { case 'menu_order' : echo $post->menu_order; break; default: } } function getRelativeTime($date) { $diff = time() - strtotime($date); if ($diff < 60) return $diff . _n(' second', ' seconds', $diff, 'khore') . __(' ago', 'khore'); $diff = round($diff / 60); if ($diff < 60) return $diff . _n(' minute', ' minutes', $diff, 'khore') . __(' ago', 'khore'); $diff = round($diff / 60); if ($diff < 24) return $diff . _n(' hour', ' hours', $diff, 'khore') . __(' ago', 'khore'); $diff = round($diff / 24); if ($diff < 7) return $diff . _n(' day', ' days', $diff, 'khore') . __(' ago', 'khore'); $diff = round($diff / 7); if ($diff < 4) return $diff . _n(' week', ' weeks', $diff, 'khore') . __(' ago', 'khore'); return __('on ', 'khore') . date("F j, Y", strtotime($date)); } function khore_get_video_embedded_url($url) { $ret = $url; try { if (!empty($url)) { $image_url = parse_url($url); if (!empty($image_url['host'])) { if ($image_url['host'] == 'www.youtube.com' || $image_url['host'] == 'youtube.com') { $query_params = explode('&', $image_url['query']); if (!empty($query_params)) { foreach ($query_params as $query_param) { $parts = explode('=', $query_param); if ($parts[0] == 'v') { $ret = "https://www.youtube.com/embed/{$parts[1]}"; break; } } } } else if ($image_url['host'] == 'www.vimeo.com' || $image_url['host'] == 'vimeo.com') { if (!empty($image_url['path'])) { $ret = "https://player.vimeo.com/video{$image_url['path']}"; } } } } } catch (Exception $e) { } return $ret; } function khore_get_video_thumbnail($url, $sizes) { $ret = ''; try { if (!empty($url)) { $image_url = parse_url($url); if (!empty($image_url['host'])) { if ($image_url['host'] == 'www.youtube.com' || $image_url['host'] == 'youtube.com') { $query_params = explode('&', $image_url['query']); if (!empty($query_params)) { foreach ($query_params as $query_param) { $parts = explode('=', $query_param); if ($parts[0] == 'v') { $ret = "http://img.youtube.com/vi/" . $parts[1] . "/{$sizes['youtube']}.jpg"; break; } } } } else if ($image_url['host'] == 'www.vimeo.com' || $image_url['host'] == 'vimeo.com') { $hash = unserialize(file_get_contents("http://vimeo.com/api/v2/video/" . substr($image_url['path'], 1) . ".php")); $ret = $hash[0][$sizes['vimeo']]; } } } } catch (Exception $e) { } return $ret; } ################################################################ /** * Retrieve adjacent post link. * * Can either be next or previous post link. * * Based on get_adjacent_post() from wp-includes/link-template.php * * @param array $r Arguments. * @param bool $previous Optional. Whether to retrieve previous post. * @return array of post objects. */ function khore_get_adjacent_post_plus($r, $previous = true) { global $post, $wpdb; extract($r, EXTR_SKIP); if (empty($post)) return null; // Sanitize $order_by, since we are going to use it in the SQL query. Default to 'post_date'. if (in_array($order_by, array('post_date', 'post_title', 'post_excerpt', 'post_name', 'post_modified'))) { $order_format = '%s'; } elseif (in_array($order_by, array('ID', 'post_author', 'post_parent', 'menu_order', 'comment_count'))) { $order_format = '%d'; } elseif ($order_by == 'custom' && !empty($meta_key)) { // Don't allow a custom sort if meta_key is empty. $order_format = '%s'; } elseif ($order_by == 'numeric' && !empty($meta_key)) { $order_format = '%d'; } else { $order_by = 'post_date'; $order_format = '%s'; } // Sanitize $order_2nd. Only columns containing unique values are allowed here. Default to 'post_date'. if (in_array($order_2nd, array('post_date', 'post_title', 'post_modified'))) { $order_format2 = '%s'; } elseif (in_array($order_2nd, array('ID'))) { $order_format2 = '%d'; } else { $order_2nd = 'post_date'; $order_format2 = '%s'; } // Sanitize num_results (non-integer or negative values trigger SQL errors) $num_results = intval($num_results) < 2 ? 1 : intval($num_results); // Queries involving custom fields require an extra table join if ($order_by == 'custom' || $order_by == 'numeric') { $current_post = get_post_meta($post->ID, $meta_key, TRUE); $order_by = ($order_by === 'numeric') ? 'm.meta_value+0' : 'm.meta_value'; $meta_join = $wpdb->prepare(" INNER JOIN $wpdb->postmeta AS m ON p.ID = m.post_id AND m.meta_key = %s", $meta_key); } elseif ($in_same_meta) { $current_post = $post->$order_by; $order_by = 'p.' . $order_by; $meta_join = $wpdb->prepare(" INNER JOIN $wpdb->postmeta AS m ON p.ID = m.post_id AND m.meta_key = %s", $in_same_meta); } else { $current_post = $post->$order_by; $order_by = 'p.' . $order_by; $meta_join = ''; } // Get the current post value for the second sort column $current_post2 = $post->$order_2nd; $order_2nd = 'p.' . $order_2nd; // Get the list of post types. Default to current post type if (empty($post_type)) $post_type = "'$post->post_type'"; // Put this section in a do-while loop to enable the loop-to-first-post option do { $join = $meta_join; $excluded_categories = $ex_cats; $included_categories = $in_cats; $excluded_posts = $ex_posts; $included_posts = $in_posts; $in_same_term_sql = $in_same_author_sql = $in_same_meta_sql = $ex_cats_sql = $in_cats_sql = $ex_posts_sql = $in_posts_sql = ''; // Get the list of hierarchical taxonomies, including customs (don't assume taxonomy = 'category') $taxonomies = array_filter(get_post_taxonomies($post->ID), "is_taxonomy_hierarchical"); if (($in_same_cat || $in_same_tax || $in_same_format || !empty($excluded_categories) || !empty($included_categories)) && !empty($taxonomies)) { $cat_array = $tax_array = $format_array = array(); if ($in_same_cat) { $cat_array = wp_get_object_terms($post->ID, $taxonomies, array('fields' => 'ids')); } if ($in_same_tax && !$in_same_cat) { if ($in_same_tax === true) { if ($taxonomies != array('category')) $taxonomies = array_diff($taxonomies, array('category')); } else $taxonomies = (array) $in_same_tax; $tax_array = wp_get_object_terms($post->ID, $taxonomies, array('fields' => 'ids')); } if ($in_same_format) { $taxonomies[] = 'post_format'; $format_array = wp_get_object_terms($post->ID, 'post_format', array('fields' => 'ids')); } $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 AND tt.taxonomy IN (\"" . implode('", "', $taxonomies) . "\")"; $term_array = array_unique(array_merge($cat_array, $tax_array, $format_array)); if (!empty($term_array)) $in_same_term_sql = "AND tt.term_id IN (" . implode(',', $term_array) . ")"; if (!empty($excluded_categories)) { // Support for both (1 and 5 and 15) and (1, 5, 15) delimiter styles $delimiter = (strpos($excluded_categories, ',') !== false) ? ',' : 'and'; $excluded_categories = array_map('intval', explode($delimiter, $excluded_categories)); // Three category exclusion methods are supported: 'strong', 'diff', and 'weak'. // Default is 'weak'. See the plugin documentation for more information. if ($ex_cats_method === 'strong') { $taxonomies = array_filter(get_post_taxonomies($post->ID), "is_taxonomy_hierarchical"); if (function_exists('get_post_format')) $taxonomies[] = 'post_format'; $ex_cats_posts = get_objects_in_term($excluded_categories, $taxonomies); if (!empty($ex_cats_posts)) $ex_cats_sql = "AND p.ID NOT IN (" . implode($ex_cats_posts, ',') . ")"; } else { if (!empty($term_array) && !in_array($ex_cats_method, array('diff', 'differential'))) $excluded_categories = array_diff($excluded_categories, $term_array); if (!empty($excluded_categories)) $ex_cats_sql = "AND tt.term_id NOT IN (" . implode($excluded_categories, ',') . ')'; } } if (!empty($included_categories)) { $in_same_term_sql = ''; // in_cats overrides in_same_cat $delimiter = (strpos($included_categories, ',') !== false) ? ',' : 'and'; $included_categories = array_map('intval', explode($delimiter, $included_categories)); $in_cats_sql = "AND tt.term_id IN (" . implode(',', $included_categories) . ")"; } } // Optionally restrict next/previous links to same author if ($in_same_author) $in_same_author_sql = $wpdb->prepare("AND p.post_author = %d", $post->post_author); // Optionally restrict next/previous links to same meta value if ($in_same_meta && $r['order_by'] != 'custom' && $r['order_by'] != 'numeric') $in_same_meta_sql = $wpdb->prepare("AND m.meta_value = %s", get_post_meta($post->ID, $in_same_meta, TRUE)); // Optionally exclude individual post IDs if (!empty($excluded_posts)) { $excluded_posts = array_map('intval', explode(',', $excluded_posts)); $ex_posts_sql = " AND p.ID NOT IN (" . implode(',', $excluded_posts) . ")"; } // Optionally include individual post IDs if (!empty($included_posts)) { $included_posts = array_map('intval', explode(',', $included_posts)); $in_posts_sql = " AND p.ID IN (" . implode(',', $included_posts) . ")"; } $adjacent = $previous ? 'previous' : 'next'; $order = $previous ? 'DESC' : 'ASC'; $op = $previous ? '<' : '>'; // Optionally get the first/last post. Disable looping and return only one result. if ($end_post) { $order = $previous ? 'ASC' : 'DESC'; $num_results = 1; $loop = false; if ($end_post === 'fixed') // display the end post link even when it is the current post $op = $previous ? '<=' : '>='; } // If there is no next/previous post, loop back around to the first/last post. if ($loop && isset($result)) { $op = $previous ? '>=' : '<='; $loop = false; // prevent an infinite loop if no first/last post is found } $join = apply_filters("get_{$adjacent}_post_plus_join", $join, $r); // In case the value in the $order_by column is not unique, select posts based on the $order_2nd column as well. // This prevents posts from being skipped when they have, for example, the same menu_order. $where = apply_filters("get_{$adjacent}_post_plus_where", $wpdb->prepare("WHERE ( $order_by $op $order_format OR $order_2nd $op $order_format2 AND $order_by = $order_format ) AND p.post_type IN ($post_type) AND p.post_status = 'publish' $in_same_term_sql $in_same_author_sql $in_same_meta_sql $ex_cats_sql $in_cats_sql $ex_posts_sql $in_posts_sql", $current_post, $current_post2, $current_post), $r); $sort = apply_filters("get_{$adjacent}_post_plus_sort", "ORDER BY $order_by $order, $order_2nd $order LIMIT $num_results", $r); $query = "SELECT DISTINCT p.* FROM $wpdb->posts AS p $join $where $sort"; $query_key = 'adjacent_post_' . md5($query); $result = wp_cache_get($query_key); if (false !== $result) return $result; // echo $query . '<br />'; // Use get_results instead of get_row, in order to retrieve multiple adjacent posts (when $num_results > 1) // Add DISTINCT keyword to prevent posts in multiple categories from appearing more than once $result = $wpdb->get_results("SELECT DISTINCT p.* FROM $wpdb->posts AS p $join $where $sort"); if (null === $result) $result = ''; } while (!$result && $loop); wp_cache_set($query_key, $result); return $result; } //Event Framwork Session Order By Session Date /** * Display previous post link that is adjacent to the current post. * * Based on previous_post_link() from wp-includes/link-template.php * * @param array|string $args Optional. Override default arguments. * @return bool True if previous post link is found, otherwise false. */ function khore_previous_post_link_plus($args = '') { return khore_adjacent_post_link_plus($args, '« %link', true); } /** * Display next post link that is adjacent to the current post. * * Based on next_post_link() from wp-includes/link-template.php * * @param array|string $args Optional. Override default arguments. * @return bool True if next post link is found, otherwise false. */ function khore_next_post_link_plus($args = '') { return khore_adjacent_post_link_plus($args, '%link »', false); } /** * Display adjacent post link. * * Can be either next post link or previous. * * Based on adjacent_post_link() from wp-includes/link-template.php * * @param array|string $args Optional. Override default arguments. * @param bool $previous Optional, default is true. Whether display link to previous post. * @return bool True if next/previous post is found, otherwise false. */ function khore_adjacent_post_link_plus($args = '', $format = '%link »', $previous = true) { $defaults = array( 'order_by' => 'post_date', 'order_2nd' => 'post_date', 'meta_key' => '', 'post_type' => '', 'loop' => false, 'end_post' => false, 'thumb' => false, 'max_length' => 0, 'format' => '', 'link' => '%title', 'date_format' => '', 'tooltip' => '%title', 'in_same_cat' => false, 'in_same_tax' => false, 'in_same_format' => false, 'in_same_author' => false, 'in_same_meta' => false, 'ex_cats' => '', 'ex_cats_method' => 'weak', 'in_cats' => '', 'ex_posts' => '', 'in_posts' => '', 'before' => '', 'after' => '', 'num_results' => 1, 'return' => false, 'echo' => true ); //If Post Types Order plugin is installed, default to sorting on menu_order if (function_exists('CPTOrderPosts')) { $defaults['order_by'] = 'menu_order'; } $r = wp_parse_args($args, $defaults); if (empty($r['format'])) { $r['format'] = $format; } if (empty($r['date_format'])) { $r['date_format'] = get_option('date_format'); } if (!function_exists('get_post_format')) { $r['in_same_format'] = false; } if ($previous && is_attachment()) { $posts = array(); $posts[] = &get_post($GLOBALS['post']->post_parent); } else { $posts = khore_get_adjacent_post_plus($r, $previous); } //If there is no next/previous post, return false so themes may conditionally display inactive link text. if (!$posts) { return false; } //If sorting by date, display posts in reverse chronological order. Otherwise display in alpha/numeric order. if (($previous && $r['order_by'] != 'post_date') || (!$previous && $r['order_by'] == 'post_date')) { $posts = array_reverse($posts, true); } //Option to return something other than the formatted link if ($r['return']) { if ($r['num_results'] == 1) { reset($posts); $post = current($posts); if ($r['return'] === 'id') return $post->ID; if ($r['return'] === 'href') return get_permalink($post); if ($r['return'] === 'object') return $post; if ($r['return'] === 'title') return $post->post_title; if ($r['return'] === 'date') return mysql2date($r['date_format'], $post->post_date); } elseif ($r['return'] === 'object') { return $posts; } } $output = $r['before']; //When num_results > 1, multiple adjacent posts may be returned. Use foreach to display each adjacent post. foreach ($posts as $post) { $title = $post->post_title; if (empty($post->post_title)) { $title = $previous ? __('Previous Post', 'khore') : __('Next Post', 'khore'); } $title = apply_filters('the_title', $title, $post->ID); $date = mysql2date($r['date_format'], $post->post_date); $author = get_the_author_meta('display_name', $post->post_author); //Set anchor title attribute to long post title or custom tooltip text. Supports variable replacement in custom tooltip. if ($r['tooltip']) { $tooltip = str_replace('%title', $title, $r['tooltip']); $tooltip = str_replace('%date', $date, $tooltip); $tooltip = str_replace('%author', $author, $tooltip); $tooltip = ' title="' . esc_attr($tooltip) . '"'; } else $tooltip = ''; //Truncate the link title to nearest whole word under the length specified. $max_length = intval($r['max_length']) < 1 ? 9999 : intval($r['max_length']); if (strlen($title) > $max_length) $title = substr($title, 0, strrpos(substr($title, 0, $max_length), ' ')) . '...'; $rel = $previous ? 'prev' : 'next'; $anchor = '<a href="' . get_permalink($post) . '" rel="' . $rel . '"' . $tooltip . '>'; $link = str_replace('%title', $title, $r['link']); $link = str_replace('%date', $date, $link); $link = $anchor . $link . '</a>'; $format = str_replace('%link', $link, $r['format']); $format = str_replace('%title', $title, $format); $format = str_replace('%date', $date, $format); $format = str_replace('%author', $author, $format); if (($r['order_by'] == 'custom' || $r['order_by'] == 'numeric') && !empty($r['meta_key'])) { $meta = get_post_meta($post->ID, $r['meta_key'], true); $format = str_replace('%meta', $meta, $format); } elseif ($r['in_same_meta']) { $meta = get_post_meta($post->ID, $r['in_same_meta'], true); $format = str_replace('%meta', $meta, $format); } //Get the category list, including custom taxonomies (only if the %category variable has been used). if ((strpos($format, '%category') !== false) && version_compare(PHP_VERSION, '5.0.0', '>=')) { $term_list = ''; $taxonomies = array_filter(get_post_taxonomies($post->ID), "is_taxonomy_hierarchical"); if ($r['in_same_format'] && get_post_format($post->ID)) $taxonomies[] = 'post_format'; foreach ($taxonomies as &$taxonomy) { //No, this is not a mistake. Yes, we are testing the result of the assignment ( = ). //We are doing it this way to stop it from appending a comma when there is no next term. if ($next_term = get_the_term_list($post->ID, $taxonomy, '', ', ', '')) { $term_list .= $next_term; if (current($taxonomies)) $term_list .= ', '; } } $format = str_replace('%category', $term_list, $format); } //Optionally add the post thumbnail to the link. Wrap the link in a span to aid CSS styling. if ($r['thumb'] && has_post_thumbnail($post->ID)) { if ($r['thumb'] === true) // use 'post-thumbnail' as the default size $r['thumb'] = 'post-thumbnail'; $thumbnail = '<a class="post-thumbnail" href="' . get_permalink($post) . '" rel="' . $rel . '"' . $tooltip . '>' . get_the_post_thumbnail($post->ID, $r['thumb']) . '</a>'; $format = $thumbnail . '<span class="post-link">' . $format . '</span>'; } //If more than one link is returned, wrap them in <li> tags if (intval($r['num_results']) > 1) $format = '<li>' . $format . '</li>'; $output .= $format; } $output .= $r['after']; //If echo is false, don't display anything. Return the link as a PHP string. if (!$r['echo'] || $r['return'] === 'output') return $output; $adjacent = $previous ? 'previous' : 'next'; echo apply_filters("{$adjacent}_post_link_plus", $output, $r); return true; } /** * * Woocommerce Integration * */ add_action('after_setup_theme', 'khore_woocommerce_setup_theme'); function khore_woocommerce_setup_theme() { add_theme_support('woocommerce'); } add_action('wp_head', 'khore_wp_head'); function khore_wp_head() { global $post; if (isset($post) && isset($post->post_content) && in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins'))) && (has_shortcode($post->post_content, 'efcb-section-registration') || has_shortcode($post->post_content, 'efcb-section-samplepage'))) { remove_action('woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10); remove_action('woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash', 10); remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10); remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10); remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 10); add_action('woocommerce_before_shop_loop_item', 'khore_woocommerce_before_shop_loop_item', 10); add_filter('woocommerce_locate_template', 'khore_woocommerce_locate_template', 10, 3); } } function khore_woocommerce_before_shop_loop_item() { global $post; echo '<td class="title">'; do_action('woocommerce_before_shop_loop_item_title'); echo '<h3>' . get_the_title() . '</h3>'; do_action('woocommerce_after_shop_loop_item_title'); echo '</td>'; echo '<td class="description">'; echo '<span class="short-description">' . $post->post_excerpt . '</span>'; echo '</td>'; echo '<td class="price">'; woocommerce_template_loop_price(); echo '</td>'; echo '<td class="quantity">'; woocommerce_quantity_input(); echo '<input type="hidden" name="product_id" value="' . $post->ID . '" />'; echo '</td>'; } function khore_woocommerce_locate_template($template, $template_name, $template_path) { return $template; } /* ----------------------------- */ add_filter('walker_nav_menu_start_el', 'khore_walker_nav_menu_start_el', 10, 4); function khore_walker_nav_menu_start_el($item_output, $item, $depth, $args) { if (in_array('menu-item-has-children', $item->classes)) { $item_output = "<a href=\"$item->url\" class=\"menu-item-header\">$item->title</a> <i class=\"fa fa-chevron-down\"></i>"; } return $item_output; } add_filter('ef_schedule_speakers_thumbnail_size', 'khore_ef_schedule_speakers_thumbnail_size'); function khore_ef_schedule_speakers_thumbnail_size($size) { return 'khore-speaker'; } add_filter('ef_schedule_speakers_thumbnail_class', 'khore_ef_schedule_speakers_thumbnail_class'); function khore_ef_schedule_speakers_thumbnail_class($class) { return 'image scalable-image'; } add_filter('next_post_link', 'khore_next_post_link'); add_filter('next_post_link_plus', 'khore_next_post_link'); function khore_next_post_link($html) { $html = str_replace('<a', '<a class="next pull-right"', $html); return $html; } add_filter('previous_post_link', 'khore_previous_post_link'); add_filter('previous_post_link_plus', 'khore_previous_post_link'); function khore_previous_post_link($html) { $html = str_replace('<a', '<a class="prev pull-left"', $html); return $html; } function khore_exhibitor_letter_posts_where($where) { return $where . " AND `post_title` LIKE '" . trim($_REQUEST['letter']) . "%' "; } function khore_exhibitor_text_posts_where($where) { return $where . " AND `post_title` LIKE '%" . trim($_REQUEST['text']) . "%' "; } function khore_main_pagination($paged, $total, $styles = null) { global $wp; $primary_style = !empty($styles) && !empty($styles[0]) ? $styles[0] : ''; $secondary_style = !empty($styles) && !empty($styles[1]) ? $styles[1] : ''; $current_url = remove_query_arg('paged', add_query_arg($wp->query_string, '', home_url($wp->request))); $pag_links = paginate_links(array( 'base' => $current_url . '%_%', 'format' => strstr($current_url, '?') === false ? '?paged=%#%' : '&paged=%#%', 'current' => $paged, 'total' => $total, 'show_all' => true, 'prev_text' => __('PREV', 'khore'), 'next_text' => __('NEXT', 'khore'), 'type' => 'array' )); //$pag_links = str_replace('<a ', '<a id="53" ', $pag_links); if ($pag_links && count($pag_links) > 0) { ?> <nav class="pagination" <?php echo $secondary_style; ?>> <?php echo '<ul>'; foreach ($pag_links as $pag_link) { if (strstr($pag_link, 'prev ') !== false) { echo '<li>' . str_replace('<a class="', "<a $primary_style class=\"pagination-lnk pagination-lnk_prev ", $pag_link) . '</li>'; } if (strstr($pag_link, 'next ') === false && strstr($pag_link, 'prev ') === false) { ?> <li> <?php $replace = str_replace("<span class='", "<a $primary_style class='active ", $pag_link); $pag_link = str_replace('</span>', '</a>', $replace); echo $pag_link; ?> </li> <?php } if (strstr($pag_link, 'next ') !== false) { echo '<li>' . str_replace('<a class="', "<a $primary_style class=\"pagination-lnk pagination-lnk_next ", $pag_link) . '</li>'; } } echo '</ul>'; ?> </nav> <?php } } add_filter('ef_content_builder_items', 'ef_content_builder_items'); add_filter('ef_content_builder_sections', 'ef_content_builder_sections'); add_filter('ef_content_builder_options', 'ef_content_builder_options'); add_filter('ef_content_builder_templates', 'ef_content_builder_templates'); function ef_content_builder_items($items) { //array_push($items, 'gigilatrottola.php'); return $items; } function ef_content_builder_sections($items) { //array_push($items, 'gigilatrottola.php'); return $items; } function ef_content_builder_options($items) { //array_push($items, 'gigilatrottola.php'); return $items; } function ef_content_builder_templates($items) { //array_push($items, 'gigilatrottola.php'); return $items; } function get_id_for_section($name_page) { } add_action('wp_update_nav_menu_item', 'custom_nav_update', 10, 3); function custom_nav_update($menu_id, $menu_item_db_id, $args) { if (!isset($_REQUEST['khore-menu-item-custom-icon'])) $_REQUEST['khore-menu-item-custom-icon'] = array(); if (!isset($_REQUEST['khore-menu-item-custom-icon'][$menu_item_db_id])) $_REQUEST['khore-menu-item-custom-icon'][$menu_item_db_id] = false; if (is_array($_REQUEST['khore-menu-item-custom-icon'])) { $custom_value = $_REQUEST['khore-menu-item-custom-icon'][$menu_item_db_id]; update_post_meta($menu_item_db_id, '_khore_menu_item_custom_icon', $custom_value); } } add_filter('wp_setup_nav_menu_item', 'custom_nav_item'); function custom_nav_item($menu_item) { $menu_item->custom_icon = get_post_meta($menu_item->ID, '_khore_menu_item_custom_icon', true); return $menu_item; } add_filter('wp_edit_nav_menu_walker', 'custom_nav_edit_walker', 10, 2); function custom_nav_edit_walker($walker, $menu_id) { return 'Walker_Nav_Menu_Edit_Custom'; } class Walker_Nav_Menu_Edit_Custom extends Walker_Nav_Menu { /** * @see Walker_Nav_Menu::start_lvl() * @since 3.0.0 * * @param string $output Passed by reference. */ function start_lvl(&$output, $depth = 0, $args = array()) { } /** * @see Walker_Nav_Menu::end_lvl() * @since 3.0.0 * * @param string $output Passed by reference. */ function end_lvl(&$output, $depth = 0, $args = array()) { } /** * @see Walker::start_el() * @since 3.0.0 * * @param string $output Passed by reference. Used to append additional content. * @param object $item Menu item data object. * @param int $depth Depth of menu item. Used for padding. * @param object $args */ public function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0) { global $_wp_nav_menu_max_depth; $_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth; ob_start(); $item_id = esc_attr($item->ID); $removed_args = array( 'action', 'customlink-tab', 'edit-menu-item', 'menu-item', 'page-tab', '_wpnonce', ); $original_title = ''; if ('taxonomy' == $item->type) { $original_title = get_term_field('name', $item->object_id, $item->object, 'raw'); if (is_wp_error($original_title)) $original_title = false; } elseif ('post_type' == $item->type) { $original_object = get_post($item->object_id); $original_title = get_the_title($original_object->ID); } $classes = array( 'menu-item menu-item-depth-' . $depth, 'menu-item-' . esc_attr($item->object), 'menu-item-edit-' . ( ( isset($_GET['edit-menu-item']) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'), ); $title = $item->title; if (!empty($item->_invalid)) { $classes[] = 'menu-item-invalid'; /* translators: %s: title of menu item which is invalid */ $title = sprintf(__('%s (Invalid)'), $item->title); } elseif (isset($item->post_status) && 'draft' == $item->post_status) { $classes[] = 'pending'; /* translators: %s: title of menu item in draft status */ $title = sprintf(__('%s (Pending)'), $item->title); } $title = (!isset($item->label) || '' == $item->label ) ? $title : $item->label; $submenu_text = ''; if (0 == $depth) $submenu_text = 'style="display: none;"'; ?> <li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes); ?>"> <dl class="menu-item-bar"> <dt class="menu-item-handle"> <span class="item-title"><span class="menu-item-title"><?php echo esc_html($title); ?></span> <span class="is-submenu" <?php echo $submenu_text; ?>><?php _e('sub item'); ?></span></span> <span class="item-controls"> <span class="item-type"><?php echo esc_html($item->type_label); ?></span> <span class="item-order hide-if-js"> <a href="<?php echo wp_nonce_url( add_query_arg( array( 'action' => 'move-up-menu-item', 'menu-item' => $item_id, ), remove_query_arg($removed_args, admin_url('nav-menus.php')) ), 'move-menu_item' ); ?>" class="item-move-up"><abbr title="<?php esc_attr_e('Move up'); ?>">↑</abbr></a> | <a href="<?php echo wp_nonce_url( add_query_arg( array( 'action' => 'move-down-menu-item', 'menu-item' => $item_id, ), remove_query_arg($removed_args, admin_url('nav-menus.php')) ), 'move-menu_item' ); ?>" class="item-move-down"><abbr title="<?php esc_attr_e('Move down'); ?>">↓</abbr></a> </span> <a class="item-edit" id="edit-<?php echo $item_id; ?>" title="<?php esc_attr_e('Edit Menu Item'); ?>" href="<?php echo ( isset($_GET['edit-menu-item']) && $item_id == $_GET['edit-menu-item'] ) ? admin_url('nav-menus.php') : add_query_arg('edit-menu-item', $item_id, remove_query_arg($removed_args, admin_url('nav-menus.php#menu-item-settings-' . $item_id))); ?>"><?php _e('Edit Menu Item'); ?></a> </span> </dt> </dl> <div class="menu-item-settings" id="menu-item-settings-<?php echo $item_id; ?>"> <?php if ('custom' == $item->type) : ?> <p class="field-url description description-wide"> <label for="edit-menu-item-url-<?php echo $item_id; ?>"> <?php _e('URL'); ?><br /> <input type="text" id="edit-menu-item-url-<?php echo $item_id; ?>" class="widefat code edit-menu-item-url" name="menu-item-url[<?php echo $item_id; ?>]" value="<?php echo esc_attr($item->url); ?>" /> </label> </p> <?php endif; ?> <p class="description description-thin"> <label for="edit-menu-item-title-<?php echo $item_id; ?>"> <?php _e('Navigation Label'); ?><br /> <input type="text" id="edit-menu-item-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-title" name="menu-item-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr($item->title); ?>" /> </label> </p> <p class="description description-thin"> <label for="edit-menu-item-attr-title-<?php echo $item_id; ?>"> <?php _e('Title Attribute'); ?><br /> <input type="text" id="edit-menu-item-attr-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr($item->post_excerpt); ?>" /> </label> </p> <p class="description description-wide"> <label for="edit-menu-item-custom-<?php echo $item_id; ?>"> <?php _e('Icon'); ?><br /> <input type="text" id="edit-menu-item-custom-icon-<?php echo $item_id; ?>" class="widefat edit-menu-item-attr-title" name="khore-menu-item-custom-icon[<?php echo $item_id; ?>]" value="<?php echo esc_attr($item->custom_icon); ?>" /> <span class="description"><?php _e('Type full name of Font Awesome icon. You can find all icons on <a href="http://fontawesome.io/icons" target="_blank">FontAwesome</a>', 'khore'); ?></span> </label> </p> <p class="field-link-target description"> <label for="edit-menu-item-target-<?php echo $item_id; ?>"> <input type="checkbox" id="edit-menu-item-target-<?php echo $item_id; ?>" value="_blank" name="menu-item-target[<?php echo $item_id; ?>]"<?php checked($item->target, '_blank'); ?> /> <?php _e('Open link in a new window/tab'); ?> </label> </p> <p class="field-css-classes description description-thin"> <label for="edit-menu-item-classes-<?php echo $item_id; ?>"> <?php _e('CSS Classes (optional)'); ?><br /> <input type="text" id="edit-menu-item-classes-<?php echo $item_id; ?>" class="widefat code edit-menu-item-classes" name="menu-item-classes[<?php echo $item_id; ?>]" value="<?php echo esc_attr(implode(' ', $item->classes)); ?>" /> </label> </p> <p class="field-xfn description description-thin"> <label for="edit-menu-item-xfn-<?php echo $item_id; ?>"> <?php _e('Link Relationship (XFN)'); ?><br /> <input type="text" id="edit-menu-item-xfn-<?php echo $item_id; ?>" class="widefat code edit-menu-item-xfn" name="menu-item-xfn[<?php echo $item_id; ?>]" value="<?php echo esc_attr($item->xfn); ?>" /> </label> </p> <p class="field-description description description-wide"> <label for="edit-menu-item-description-<?php echo $item_id; ?>"> <?php _e('Description'); ?><br /> <textarea id="edit-menu-item-description-<?php echo $item_id; ?>" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description[<?php echo $item_id; ?>]"><?php echo esc_html($item->description); // textarea_escaped ?></textarea> <span class="description"><?php _e('The description will be displayed in the menu if the current theme supports it.'); ?></span> </label> </p> <p class="field-move hide-if-no-js description description-wide"> <label> <span><?php _e('Move'); ?></span> <a href="#" class="menus-move-up"><?php _e('Up one'); ?></a> <a href="#" class="menus-move-down"><?php _e('Down one'); ?></a> <a href="#" class="menus-move-left"></a> <a href="#" class="menus-move-right"></a> <a href="#" class="menus-move-top"><?php _e('To the top'); ?></a> </label> </p> <div class="menu-item-actions description-wide submitbox"> <?php if ('custom' != $item->type && $original_title !== false) : ?> <p class="link-to-original"> <?php printf(__('Original: %s'), '<a href="' . esc_attr($item->url) . '">' . esc_html($original_title) . '</a>'); ?> </p> <?php endif; ?> <a class="item-delete submitdelete deletion" id="delete-<?php echo $item_id; ?>" href="<?php echo wp_nonce_url( add_query_arg( array( 'action' => 'delete-menu-item', 'menu-item' => $item_id, ), admin_url('nav-menus.php') ), 'delete-menu_item_' . $item_id ); ?>"><?php _e('Remove'); ?></a> <span class="meta-sep hide-if-no-js"> | </span> <a class="item-cancel submitcancel hide-if-no-js" id="cancel-<?php echo $item_id; ?>" href="<?php echo esc_url(add_query_arg(array('edit-menu-item' => $item_id, 'cancel' => time()), admin_url('nav-menus.php'))); ?>#menu-item-settings-<?php echo $item_id; ?>"><?php _e('Cancel'); ?></a> </div> <input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" /> <input class="menu-item-data-object-id" type="hidden" name="menu-item-object-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr($item->object_id); ?>" /> <input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr($item->object); ?>" /> <input class="menu-item-data-parent-id" type="hidden" name="menu-item-parent-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr($item->menu_item_parent); ?>" /> <input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr($item->menu_order); ?>" /> <input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr($item->type); ?>" /> </div><!-- .menu-item-settings--> <ul class="menu-item-transport"></ul> <?php $output .= ob_get_clean(); } } /* Return image URL from text content */ function catch_that_image($contnent) { $first_img = ''; ob_start(); ob_end_clean(); $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $contnent, $matches); $first_img = $matches [1] [0]; // No Image found. Total fail :-D if (empty($first_img)) { $first_img = false; } return $first_img; } function get_home_page_slider() { $ef_options = EF_Event_Options::get_theme_options(); $header_logo = !empty($ef_options['ef_header_logo']) ? $ef_options['ef_header_logo'] : ''; $image_ids = !empty($ef_options['ef_header_gallery']) ? explode(',', $ef_options['ef_header_gallery']) : array(); $image_url = ''; $video_markup = ''; $videocontainer_color = !empty($ef_options['ef_videobutton_color']) ? "style=\"border-color: {$ef_options['ef_videobutton_color']};\"" : ''; $videoicon_size = !empty($ef_options['ef_videobutton_color']) ? "style=\"color: {$ef_options['ef_videobutton_color']};\"" : ''; if (!empty($ef_options['ef_header_video'])) { /* $video_url = parse_url($ef_options['ef_header_video']); $video_id = explode("=", $video_url['query']); */ //$video_id[1] $video_markup = '<a class="video-card__lnk" href="#" data-video="' . khore_get_video_embedded_url($ef_options['ef_header_video']) . '" ' . $videocontainer_color . '> <i class="fa fa-play fa-5x" ' . $videoicon_size . '></i> </a>'; } $event_title = !empty($ef_options['ef_herotitle']) ? $ef_options['ef_herotitle'] : ''; $event_s_title = !empty($ef_options['ef_herosubtitle']) ? $ef_options['ef_herosubtitle'] : ''; $date_n_time = !empty($ef_options['ef_datetimeplace']) ? $ef_options['ef_datetimeplace'] : ''; $registration_btn = ''; $html = ''; if (isset($ef_options['ef_home_show_register_btn'])) { $button_font_size = !empty($ef_options['ef_home_registerbutton_font_size']) ? "font-size: {$ef_options['ef_home_registerbutton_font_size']};" : ''; $button_text_color = !empty($ef_options['ef_home_registerbutton_color']) ? "color: {$ef_options['ef_home_registerbutton_color']};" : ''; $button_border_color = !empty($ef_options['ef_home_registerbutton_color']) ? "border-color: {$ef_options['ef_home_registerbutton_color']};" : ''; $button_style = ''; if (!empty($button_font_size) || !empty($button_text_color)) { $button_style = "style=\"$button_font_size $button_text_color $button_border_color\""; } $registration_btn = '<a href="' . $ef_options['ef_home_registerbtnurl'] . '" title="' . stripslashes($ef_options['ef_home_registerbtntext']) . '" class="video-card__reg" ' . $button_style . '>' . $ef_options['ef_home_registerbtntext'] . '</a>'; } $header_logo_item = ''; if (!empty($header_logo)) { if (isset($ef_options['ef_logo_remove_size'])) { $header_logo_size = ''; } else { $header_logo_size = 'width="300" height="101"'; } $header_logo_item = '<img src="' . $header_logo . '"' . $header_logo_size . ' alt="' . get_bloginfo('name') . '">'; } $event_title_color = !empty($ef_options['ef_herotitle_color']) ? "color:{$ef_options['ef_herotitle_color']};" : ''; $event_subtitle_color = !empty($ef_options['ef_herosubtitle_color']) ? "color:{$ef_options['ef_herosubtitle_color']};" : ''; $event_datetime_color = !empty($ef_options['ef_datetimeplace_color']) ? "color:{$ef_options['ef_datetimeplace_color']};" : ''; $event_title_size = !empty($ef_options['ef_herotitle_font_size']) ? "font-size:{$ef_options['ef_herotitle_font_size']};" : ''; $event_subtitle_size = !empty($ef_options['ef_herosubtitle_font_size']) ? "font-size:{$ef_options['ef_herosubtitle_font_size']};" : ''; $event_datetime_size = !empty($ef_options['ef_datetimeplace_font_size']) ? "font-size:{$ef_options['ef_datetimeplace_font_size']};" : ''; $title_style = ''; $subtitle_style = ''; $date_style = ''; if (!empty($event_title_color) || !empty($event_title_size)) { $title_style = "style=\"$event_title_color $event_title_size\""; } if (!empty($event_subtitle_color) || !empty($event_subtitle_size)) { $subtitle_style = "style=\"$event_subtitle_color $event_subtitle_size\""; } if (!empty($event_datetime_color) || !empty($event_datetime_size)) { $date_style = "style=\"$event_datetime_color $event_datetime_size\""; } if (!empty($image_ids)) { foreach ($image_ids as $image) { $image_url = wp_get_attachment_image_src($image, 'full'); $html = $html . '<div class="swiper-slide"> <div class="video-card" style="background-image:url(' . $image_url[0] . ');"> <div> <div> <h2 class="video-card__title">' . $header_logo_item . "<span $title_style>" . stripslashes($event_title) . '</span> </h2> <p ' . $subtitle_style . '>' . stripslashes($event_s_title) . '</p> ' . $video_markup . ' <div class="video-card__place"' . $date_style . '> ' . stripslashes($date_n_time) . ' </div> ' . $registration_btn . ' </div> </div> </div> </div>'; } } return '<div class="swiper-wrapper">' . $html . '</div>'; } function khore_comment_callback($comment, $args, $depth) { $GLOBALS['comment'] = $comment; extract($args, EXTR_SKIP); ?> <!-- comments__item --> <div class="comments__item"> <!-- comments__pic --> <div class="comments__pic"> <?php if ($args['avatar_size'] != 0) { echo get_avatar($comment, $args['avatar_size']); } ?> </div> <!-- /comments__pic --> <!-- comments__text --> <div class="comments__text"> <cite><?php comment_author(); ?></cite> <time><?php printf(__('%1$s at %2$s', 'khore'), get_comment_date(), get_comment_time()); ?></time> <?php if ($comment->comment_approved == '0') : ?> <em class="comment-awaiting-moderation"><?php _e('Your comment is awaiting moderation.', 'khore'); ?></em> <br /> <?php endif; ?> <?php comment_text(); ?> <div class="reply"> <?php comment_reply_link(array_merge($args, array('add_below' => 'comments__text', 'depth' => $depth, 'max_depth' => $args['max_depth']))); ?> </div> </div> <!-- /comments__text --> </div> <!-- /comments__item --> <?php } add_filter('comment_form_submit_button', 'khore_comment_form_submit_button', 10, 2); function khore_comment_form_submit_button($button, $args) { return sprintf('<button name="%s" type="submit" class="%s" id="%s">%s</button>', $args['name_submit'], $args['class_submit'], $args['id_submit'], $args['title_reply']); } add_action('wp_footer', 'khore_wp_footer', 100); function khore_wp_footer() { global $khore_footer_scripts; if (isset($khore_footer_scripts)) { echo '<style type="text/css">'; foreach ($khore_footer_scripts as $script) { echo $script; } echo '</style>'; } } add_filter('admin_post_thumbnail_html', 'khore_admin_post_thumbnail_html'); function khore_admin_post_thumbnail_html($content) { global $post_type; $size_text = ''; switch ($post_type) { case 'post': $size_text = '531x424'; break; case 'speaker': $size_text = '531x424'; break; case 'sponsor': $size_text = sprintf('<br/>%s: 213x143<br/>%s: 426x285<br/>%s: 853x570', __('Small', 'khore'), __('Medium', 'khore'), __('Large', 'khore')); break; case 'session': $size_text = '549x549'; break; } if (!empty($size_text)) { $content .= sprintf('<p>%s: %s</p>', __('Recommended size', 'khore'), $size_text); } return $content; } add_filter('ef_post_type_label', 'khore_ef_post_type_label', 10, 3); function khore_ef_post_type_label($label, $postType, $count) { $ef_options = EF_Event_Options::get_theme_options(); $label_key = "ef_{$postType}_label_"; if ($count > 1) { $label_key .= 'plural'; } else { $label_key .= 'singular'; } return !empty($ef_options[$label_key]) ? $ef_options[$label_key] : $label; } add_action('wp_ajax_dynamic-css', 'khore_wp_ajax_dynamic_css'); add_action('wp_ajax_nopriv_dynamic-css', 'khore_wp_ajax_dynamic_css'); function khore_wp_ajax_dynamic_css() { require(get_template_directory() . '/css/dynamic.css.php'); die; } add_filter('wp_import_nav_menu_item_args', 'khore_wp_import_nav_menu_item_args', 10, 2); function khore_wp_import_nav_menu_item_args($args, $metas) { if (!empty($metas)) { foreach ($metas as $meta) { if ($meta['key'] == '_khore_menu_item_custom_icon') { $args['_khore_menu_item_custom_icon'] = $meta['value']; break; } } } return $args; } add_action('wp_update_nav_menu_item', 'khore_wp_update_nav_menu_item', 10, 3); function khore_wp_update_nav_menu_item($menu_id, $menu_item_db_id, $args) { if (isset($args['_khore_menu_item_custom_icon'])) { update_post_meta($menu_item_db_id, '_khore_menu_item_custom_icon', $args['_khore_menu_item_custom_icon']); } } add_filter('ef_schedule_sessions_thumbnail_size', 'khore_ef_schedule_sessions_thumbnail_size'); function khore_ef_schedule_sessions_thumbnail_size($size) { return 'khore-session'; }