public function wpseo_hook_sitemap_index() { $now = date('c', time()); $sitemap_url = wpseo_xml_sitemaps_base_url('ecwid-sitemap.xml'); return <<<XML \t\t<sitemap> \t\t\t<loc>{$sitemap_url}</loc> \t\t\t<lastmod>{$now}</lastmod> \t\t</sitemap> XML; }
WPSEO_Local_Admin_Wrappers::checkbox('use_multiple_locations', '', __('Use multiple locations', 'yoast-local-seo')); echo '</div>'; echo '<div id="show-single-location" style="clear: both; ' . (wpseo_has_multiple_locations() ? 'display: none;' : '') . '">'; WPSEO_Local_Admin_Wrappers::textinput('location_name', __('Business name', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::select('business_type', __('Business type:', 'yoast-local-seo'), $wpseo_local_core->get_local_business_types()); echo '<p class="desc label" style="border:none; margin-bottom: 0;">' . sprintf(__('If your business type is not listed, please read %sthe FAQ entry%s.', 'yoast-local-seo'), '<a href="http://kb.yoast.com/article/49-my-business-is-not-listed-can-you-add-it" target="_blank">', '</a>') . '</p>'; WPSEO_Local_Admin_Wrappers::textinput('location_address', __('Business address', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::textinput('location_city', __('Business city', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::textinput('location_state', __('Business state', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::textinput('location_zipcode', __('Business zipcode', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::select('location_country', __('Business country', 'yoast-local-seo') . ':', WPSEO_Local_Frontend::get_country_array()); WPSEO_Local_Admin_Wrappers::textinput('location_phone', __('Business phone', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::textinput('location_phone_2nd', __('2nd Business phone', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::textinput('location_fax', __('Business fax', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::textinput('location_email', __('Business email', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::textinput('location_url', __('URL', 'yoast-local-seo'), '', array('placeholder' => wpseo_xml_sitemaps_base_url(''))); WPSEO_Local_Admin_Wrappers::textinput('location_vat_id', __('VAT ID', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::textinput('location_tax_id', __('Tax ID', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::textinput('location_coc_id', __('Chamber of Commerce ID', 'yoast-local-seo')); // Calculate lat/long coordinates when address is entered. if (empty($options['location_coords_lat']) || empty($options['location_coords_long'])) { $location_coordinates = $wpseo_local_core->get_geo_data(array('_wpseo_business_address' => isset($options['location_address']) ? esc_attr($options['location_address']) : '', '_wpseo_business_city' => isset($options['location_city']) ? esc_attr($options['location_city']) : '', '_wpseo_business_state' => isset($options['location_state']) ? esc_attr($options['location_state']) : '', '_wpseo_business_zipcode' => isset($options['location_zipcode']) ? esc_attr($options['location_zipcode']) : '', '_wpseo_business_country' => isset($options['location_country']) ? esc_attr($options['location_country']) : ''), true); if (!empty($location_coordinates['coords'])) { $options['location_coords_lat'] = $location_coordinates['coords']['lat']; $options['location_coords_long'] = $location_coordinates['coords']['long']; update_option('wpseo_local', $options); } } echo '<p>' . __('You can enter the lat/long coordinates yourself. If you leave them empty they will be calculated automatically. If you want to re-calculate these fields, please make them blank before saving this location.', 'yoast-local-seo') . '</p>'; WPSEO_Local_Admin_Wrappers::textinput('location_coords_lat', __('Latitude', 'yoast-local-seo')); WPSEO_Local_Admin_Wrappers::textinput('location_coords_long', __('Longitude', 'yoast-local-seo'));
/** * Notify search engines of the updated sitemap. * * @param string|null $sitemapurl */ function wpseo_ping_search_engines($sitemapurl = null) { // Don't ping if blog is not public if ('0' == get_option('blog_public')) { return; } $options = get_option('wpseo_xml'); if ($sitemapurl == null) { $sitemapurl = urlencode(wpseo_xml_sitemaps_base_url('sitemap_index.xml')); } // Always ping Google and Bing, optionally ping Ask and Yahoo! wp_remote_get('http://www.google.com/webmasters/tools/ping?sitemap=' . $sitemapurl); wp_remote_get('http://www.bing.com/ping?sitemap=' . $sitemapurl); if ($options['xml_ping_yahoo'] === true) { wp_remote_get('http://search.yahooapis.com/SiteExplorerService/V1/updateNotification?appid=3usdTDLV34HbjQpIBuzMM1UkECFl5KDN7fogidABihmHBfqaebDuZk1vpLDR64I-&url=' . $sitemapurl); } if ($options['xml_ping_ask'] === true) { wp_remote_get('http://submissions.ask.com/ping?sitemap=' . $sitemapurl); } }
exit; } global $wpseo_admin_pages; $wpseo_admin_pages->admin_header(true, WPSEO_Options::get_group_name('wpseo_xml'), 'wpseo_xml'); $options = get_option('wpseo_xml'); $content = $wpseo_admin_pages->checkbox('enablexmlsitemap', __('Check this box to enable XML sitemap functionality.', 'wordpress-seo'), false); $content .= '<div id="sitemapinfo">'; if (wpseo_is_nginx()) { $content .= '<div style="margin: 5px 0; padding: 3px 10px; background-color: #ffffe0; border: 1px solid #E6DB55; border-radius: 3px;">'; $content .= '<p>' . __('As you\'re on NGINX, you\'ll need the following rewrites:', 'wordpress-seo') . '</p>'; $content .= '<pre>rewrite ^/sitemap_index\\.xml$ /index.php?sitemap=1 last; rewrite ^/([^/]+?)-sitemap([0-9]+)?\\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;</pre>'; $content .= '</div>'; } if ($options['enablexmlsitemap'] === true) { $content .= '<p>' . sprintf(esc_html__('You can find your XML Sitemap here: %sXML Sitemap%s', 'wordpress-seo'), '<a target="_blank" class="button-secondary" href="' . esc_url(wpseo_xml_sitemaps_base_url('sitemap_index.xml')) . '">', '</a>') . '<br/><br/>' . __('You do <strong>not</strong> need to generate the XML sitemap, nor will it take up time to generate after publishing a post.', 'wordpress-seo') . '</p>'; } else { $content .= '<p>' . __('Save your settings to activate XML Sitemaps.', 'wordpress-seo') . '</p>'; } // When we write the help tab for this we should definitely reference this plugin :https://wordpress.org/plugins/edit-author-slug/ $content .= '<h2>' . __('User sitemap', 'wordpress-seo') . '</h2>'; $content .= $wpseo_admin_pages->checkbox('disable_author_sitemap', __('Disable author/user sitemap', 'wordpress-seo'), false); $content .= '<div id="xml_user_block">'; $content .= '<p><strong>' . __('Exclude users without posts', 'wordpress-seo') . '</strong><br/>'; $content .= $wpseo_admin_pages->checkbox('disable_author_noposts', __('Disable all users with zero posts', 'wordpress-seo'), false); $roles = wpseo_get_roles(); if (is_array($roles) && $roles !== array()) { $content .= '<p><strong>' . __('Exclude user roles', 'wordpress-seo') . '</strong><br/>'; $content .= __('Please check the appropriate box below if there\'s a user role that you do <strong>NOT</strong> want to include in your sitemap:', 'wordpress-seo') . '</p>'; foreach ($roles as $role_key => $role_name) { $content .= $wpseo_admin_pages->checkbox('user_role-' . $role_key . '-not_in_sitemap', $role_name);
/** * Notify search engines of the updated sitemap. * * @param string|null $sitemapurl */ function wpseo_ping_search_engines($sitemapurl = null) { // Don't ping if blog is not public. if ('0' == get_option('blog_public')) { return; } if ($sitemapurl == null) { $sitemapurl = urlencode(wpseo_xml_sitemaps_base_url('sitemap_index.xml')); } // Ping Google and Bing. wp_remote_get('http://www.google.com/webmasters/tools/ping?sitemap=' . $sitemapurl, array('blocking' => false)); wp_remote_get('http://www.bing.com/ping?sitemap=' . $sitemapurl, array('blocking' => false)); }
/** * Getting the name for the sitemap, if $full_path is true, it will return the full path * * @param bool $full_path * * @return string mixed */ public static function get_sitemap_name($full_path = true) { // This filter is documented in classes/class-sitemap.php $sitemap_name = apply_filters('wpseo_news_sitemap_name', 'news'); // When $full_path is true, it will generate a full path if ($full_path) { return wpseo_xml_sitemaps_base_url($sitemap_name . '-sitemap.xml'); } return $sitemap_name; }
/** * Adds 'prev' and 'next' links to archives. * * @link http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html * @since 1.0.3 */ public function adjacent_rel_links() { // Don't do this for Genesis, as the way Genesis handles homepage functionality is different and causes issues sometimes. /** * Filter 'wpseo_genesis_force_adjacent_rel_home' - Allows devs to allow echoing rel="next" / rel="prev" by WP SEO on Genesis installs * * @api bool $unsigned Whether or not to rel=next / rel=prev */ if (is_home() && function_exists('genesis') && apply_filters('wpseo_genesis_force_adjacent_rel_home', false) === false) { return; } global $wp_query; if (!is_singular()) { $url = $this->canonical(false, true, true); if (is_string($url) && $url !== '') { $paged = get_query_var('paged'); if (0 == $paged) { $paged = 1; } if ($paged == 2) { $this->adjacent_rel_link('prev', $url, $paged - 1, true); } // Make sure to use index.php when needed, done after paged == 2 check so the prev links to homepage will not have index.php erroneously. if (is_front_page()) { $url = wpseo_xml_sitemaps_base_url(''); } if ($paged > 2) { $this->adjacent_rel_link('prev', $url, $paged - 1, true); } if ($paged < $wp_query->max_num_pages) { $this->adjacent_rel_link('next', $url, $paged + 1, true); } } } else { $numpages = 0; if (isset($wp_query->post->post_content)) { $numpages = substr_count($wp_query->post->post_content, '<!--nextpage-->') + 1; } if ($numpages > 1) { $page = get_query_var('page'); if (!$page) { $page = 1; } $url = get_permalink($wp_query->post->ID); // If the current page is the frontpage, pagination should use /base/ if ($this->is_home_static_page()) { $usebase = true; } else { $usebase = false; } if ($page > 1) { $this->adjacent_rel_link('prev', $url, $page - 1, $usebase, 'single_paged'); } if ($page < $numpages) { $this->adjacent_rel_link('next', $url, $page + 1, $usebase, 'single_paged'); } } } }
href="#top#post-types"><?php _e('Post Types', 'wordpress-seo'); ?> </a> <a class="nav-tab" id="taxonomies-tab" href="#top#taxonomies"><?php _e('Taxonomies', 'wordpress-seo'); ?> </a> </h2> <div id="general" class="wpseotab"> <?php if ($options['enablexmlsitemap'] === true) { echo '<p>'; printf(esc_html__('You can find your XML Sitemap here: %sXML Sitemap%s', 'wordpress-seo'), '<a target="_blank" class="button-secondary" href="' . esc_url(wpseo_xml_sitemaps_base_url('sitemap_index.xml')) . '">', '</a>'); echo '<br/>'; echo '<br/>'; _e('You do <strong>not</strong> need to generate the XML sitemap, nor will it take up time to generate after publishing a post.', 'wordpress-seo'); echo '</p>'; } else { echo '<p>', __('Save your settings to activate XML Sitemaps.', 'wordpress-seo'), '</p>'; } ?> <p> <strong><?php _e('Entries per page', 'wordpress-seo'); ?> </strong><br/> <?php
/** * Notify search engines of the updated sitemap. * * @param string|null $sitemapurl Optional URL to make the ping for. */ function wpseo_ping_search_engines($sitemapurl = null) { /** * Filter: 'wpseo_allow_xml_sitemap_ping' - Check if pinging is not allowed (allowed by default) * * @api boolean $allow_ping The boolean that is set to true by default. */ if (apply_filters('wpseo_allow_xml_sitemap_ping', true) === false) { return; } // Don't ping if blog is not public. if ('0' == get_option('blog_public')) { return; } if ($sitemapurl == null) { $sitemapurl = urlencode(wpseo_xml_sitemaps_base_url('sitemap_index.xml')); } // Ping Google and Bing. wp_remote_get('http://www.google.com/webmasters/tools/ping?sitemap=' . $sitemapurl, array('blocking' => false)); wp_remote_get('http://www.bing.com/ping?sitemap=' . $sitemapurl, array('blocking' => false)); }
/** * Make a request for the sitemap index so as to cache it before the arrival of the search engines. */ function hit_sitemap_index() { $url = wpseo_xml_sitemaps_base_url('sitemap_index.xml'); wp_remote_get($url); }
/** * Output opengraph location tags. * * @link https://developers.facebook.com/docs/reference/opengraph/object-type/business.business * @link https://developers.facebook.com/docs/reference/opengraph/object-type/restaurant.restaurant * * @since 1.0 */ function opengraph_location() { if (is_singular('wpseo_locations') || "on" == WPSEO_Meta::get_value('opengraph-local') && !wpseo_has_multiple_locations()) { $options = get_option('wpseo_local'); $hide_opening_hours = isset($options['hide_opening_hours']) && $options['hide_opening_hours'] == 'on'; $location_data = wpseo_get_location_details(get_the_ID()); echo '<meta property="place:location:latitude" content="' . $location_data['business_coords_lat'] . '"/>' . "\n"; echo '<meta property="place:location:longitude" content="' . $location_data['business_coords_long'] . '"/>' . "\n"; echo '<meta property="business:contact_data:street_address" content="' . $location_data['business_address'] . '"/>' . "\n"; echo '<meta property="business:contact_data:locality" content="' . $location_data['business_city'] . '"/>' . "\n"; echo '<meta property="business:contact_data:country" content="' . WPSEO_Local_Frontend::get_country($location_data['business_country']) . '"/>' . "\n"; echo '<meta property="business:contact_data:postal_code" content="' . $location_data['business_zipcode'] . '"/>' . "\n"; echo '<meta property="business:contact_data:street_address" content="' . $location_data['business_address'] . '"/>' . "\n"; echo '<meta property="business:contact_data:website" content="' . trailingslashit(wpseo_xml_sitemaps_base_url('')) . '"/>' . "\n"; if (!empty($location_data['business_state'])) { echo '<meta property="business:contact_data:region" content="' . $location_data['business_state'] . '"/>' . "\n"; } if (!empty($location_data['business_email'])) { echo '<meta property="business:contact_data:email" content="' . $location_data['business_email'] . '"/>' . "\n"; } if (!empty($location_data['business_phone'])) { echo '<meta property="business:contact_data:phone_number" content="' . $location_data['business_phone'] . '"/>' . "\n"; } if (!empty($location_data['business_fax'])) { echo '<meta property="business:contact_data:fax_number" content="' . $location_data['business_fax'] . '"/>' . "\n"; } // Opening Hours if (false == $hide_opening_hours) { $days = array('monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'); foreach ($days as $day) { $field_name = '_wpseo_opening_hours_' . $day; $start = get_post_meta(get_the_ID(), $field_name . '_from', true); if (!$start || empty($start)) { continue; } $end = get_post_meta(get_the_ID(), $field_name . '_to', true); if ($start == 'closed') { $end = 'closed'; } echo '<meta property="business:hours:day" content="' . $day . '"/>' . "\n"; echo '<meta property="business:hours:start" content="' . $start . '"/>' . "\n"; echo '<meta property="business:hours:end" content="' . $end . '"/>' . "\n"; } } } }
/** * Maps shortcode handler * * @since 0.1 * * @param array $atts Array of shortcode parameters * * @return string */ function wpseo_local_show_map($atts) { global $map_counter, $wpseo_enqueue_geocoder, $wpseo_map; $options = get_option('wpseo_local'); $tax_query = array(); // Backwards compatibility for scrollable / zoomable functions if (is_array($atts) && !array_key_exists('zoomable', $atts)) { $atts['zoomable'] = isset($atts['scrollable']) ? $atts['scrollable'] : true; } $atts = wpseo_check_falses(shortcode_atts(array('id' => '', 'term_id' => '', 'center' => '', 'width' => 400, 'height' => 300, 'zoom' => -1, 'show_route' => true, 'show_state' => true, 'show_country' => false, 'show_url' => false, 'show_email' => false, 'map_style' => isset($options['map_view_style']) ? $options['map_view_style'] : 'ROADMAP', 'scrollable' => true, 'draggable' => true, 'show_route_label' => isset($options['show_route_label']) && !empty($options['show_route_label']) ? $options['show_route_label'] : __('Show route', 'yoast-local-seo'), 'from_sl' => false, 'echo' => false), $atts)); if (!isset($map_counter)) { $map_counter = 0; } else { $map_counter++; } $location_array = $lats = $longs = array(); $location_array_str = ''; $default_custom_marker = ''; if (isset($options['custom_marker']) && intval($options['custom_marker'])) { $default_custom_marker = wp_get_attachment_url($options['custom_marker']); } if (!wpseo_has_multiple_locations()) { $atts['id'] = ''; $location_array[] = array('location_name' => $options['location_name'], 'location_url' => wpseo_xml_sitemaps_base_url(''), 'location_email' => $options['location_email'], 'location_address' => $options['location_address'], 'location_city' => $options['location_city'], 'location_state' => $options['location_state'], 'location_zipcode' => $options['location_zipcode'], 'location_country' => $options['location_country'], 'location_phone' => $options['location_phone'], 'location_phone_2nd' => $options['location_phone_2nd'], 'coordinates_lat' => $options['location_coords_lat'], 'coordinates_long' => $options['location_coords_long'], 'custom_marker' => $default_custom_marker); } else { if (get_post_type() == 'wpseo_locations') { if (($atts['id'] == '' || $atts['id'] == 'current') && !is_post_type_archive()) { $atts['id'] = get_queried_object_id(); } if (is_post_type_archive() && ($atts['id'] == '' || $atts['id'] == 'current')) { return ''; } if ($atts['id'] == 'all' && $atts['term_id'] != '') { $tax_query[] = array('taxonomy' => 'wpseo_locations_category', 'field' => 'term_id', 'terms' => $atts['term_id']); } } else { if ($atts['id'] != 'all' && empty($atts['id'])) { return is_singular('wpseo_locations') ? __('Please provide a post ID when using this shortcode outside a Locations singular page', 'yoast-local-seo') : ''; } } $location_ids = explode(',', $atts['id']); if ($atts['id'] == 'all' || $atts['id'] != 'all' && count($location_ids) > 1) { $args = array('post_type' => 'wpseo_locations', 'posts_per_page' => $atts['id'] == 'all' ? -1 : count($location_ids), 'fields' => 'ids', 'meta_query' => array(array('key' => '_wpseo_business_address', 'value' => '', 'compare' => '!=')), 'tax_query' => $tax_query); if (count($location_ids) > 1) { $args['post__in'] = $location_ids; } $location_ids = get_posts($args); } foreach ($location_ids as $location_id) { $custom_marker = wpseo_local_get_custom_marker($location_id, 'wpseo_locations_category'); $tmp_array = array('location_name' => get_the_title($location_id), 'location_url' => get_post_meta($location_id, '_wpseo_business_url', true), 'location_email' => get_post_meta($location_id, '_wpseo_business_email', true), 'location_address' => get_post_meta($location_id, '_wpseo_business_address', true), 'location_city' => get_post_meta($location_id, '_wpseo_business_city', true), 'location_state' => get_post_meta($location_id, '_wpseo_business_state', true), 'location_zipcode' => get_post_meta($location_id, '_wpseo_business_zipcode', true), 'location_country' => get_post_meta($location_id, '_wpseo_business_country', true), 'location_phone' => get_post_meta($location_id, '_wpseo_business_phone', true), 'location_phone_2nd' => get_post_meta($location_id, '_wpseo_business_phone_2nd', true), 'coordinates_lat' => get_post_meta($location_id, '_wpseo_coordinates_lat', true), 'coordinates_long' => get_post_meta($location_id, '_wpseo_coordinates_long', true), 'custom_marker' => $custom_marker != '' ? $custom_marker : $default_custom_marker); if (empty($tmp_array['location_url'])) { $tmp_array['location_url'] = get_permalink($location_id); } $location_array[] = $tmp_array; } } $noscript_output = '<ul>'; foreach ($location_array as $key => $location) { if ($location['coordinates_lat'] != '' && $location['coordinates_long'] != '') { $location_array_str .= "location_data.push( {\n\t\t\t\t'name': '" . wpseo_cleanup_string($location["location_name"]) . "',\n\t\t\t\t'url': '" . wpseo_cleanup_string($location["location_url"]) . "',\n\t\t\t\t'zip_city': '" . wpseo_local_get_address_format(wpseo_cleanup_string($location["location_address"]), false, $location["location_zipcode"], $location["location_city"], $location["location_state"], $atts['show_state'], true) . "',\n\t\t\t\t'country': '" . WPSEO_Local_Frontend::get_country($location['location_country']) . "',\n\t\t\t\t'show_country': " . ($atts['show_country'] ? 'true' : 'false') . ",\n\t\t\t\t'url': '" . esc_url($location['location_url']) . "',\n\t\t\t\t'show_url': " . ($atts['show_url'] ? 'true' : 'false') . ",\n\t\t\t\t'email': '" . $location['location_email'] . "',\n\t\t\t\t'show_email': " . ($atts['show_email'] ? 'true' : 'false') . ",\n\t\t\t\t'phone': '" . wpseo_cleanup_string($location['location_phone']) . "',\n\t\t\t\t'phone_2nd': '" . wpseo_cleanup_string($location['location_phone_2nd']) . "',\n\t\t\t\t'lat': " . wpseo_cleanup_string($location['coordinates_lat']) . ",\n\t\t\t\t'long': " . wpseo_cleanup_string($location['coordinates_long']) . ",\n\t\t\t\t'custom_marker': '" . wpseo_cleanup_string($location['custom_marker']) . "'\n\t\t\t} );\n"; } $noscript_output .= '<li><a href="' . $location['location_url'] . '">' . $location['location_name'] . '</a></li>'; $noscript_output .= '<li><a href="mailto:' . $location['location_email'] . '">' . $location['location_email'] . '</a></li>'; $full_address = $location['location_address'] . ', ' . $location['location_city'] . (strtolower($location['location_country']) == 'us' ? ', ' . $location['location_state'] : '') . ', ' . $location['location_zipcode'] . ', ' . WPSEO_Local_Frontend::get_country($location['location_country']); $location_array[$key]['full_address'] = $full_address; $lats[] = $location['coordinates_lat']; $longs[] = $location['coordinates_long']; } $noscript_output .= '</ul>'; $map = ''; $wpseo_enqueue_geocoder = true; if (!is_array($lats) || empty($lats) || !is_array($longs) || empty($longs)) { return; } if ($atts['center'] === '') { $center_lat = min($lats) + (max($lats) - min($lats)) / 2; $center_long = min($longs) + (max($longs) - min($longs)) / 2; } else { $center_lat = get_post_meta($atts['center'], '_wpseo_coordinates_lat', true); $center_long = get_post_meta($atts['center'], '_wpseo_coordinates_long', true); } // Default to zoom 10 if there's only one location as a center + bounds would zoom in far too much. if (-1 == $atts['zoom'] && 1 === count($location_array)) { $atts['zoom'] = 10; } if ($location_array_str != '') { $wpseo_map .= '<script type="text/javascript"> var map_' . $map_counter . '; var directionsDisplay_' . $map_counter . '; function wpseo_map_init' . ($map_counter != 0 ? '_' . $map_counter : '') . '() { var location_data = new Array();' . PHP_EOL . $location_array_str . ' directionsDisplay_' . $map_counter . ' = wpseo_show_map( location_data, ' . $map_counter . ', directionsDisplay_' . $map_counter . ', ' . $center_lat . ', ' . $center_long . ', ' . $atts['zoom'] . ', "' . $atts['map_style'] . '", "' . $atts['show_route'] . '", "' . $atts['scrollable'] . '", "' . $atts['draggable'] . '" ); } if( window.addEventListener ) window.addEventListener( "load", wpseo_map_init' . ($map_counter != 0 ? '_' . $map_counter : '') . ', false ); else if(window.attachEvent ) window.attachEvent( "onload", wpseo_map_init' . ($map_counter != 0 ? '_' . $map_counter : '') . '); </script>' . PHP_EOL; // Override(reset) the setting for images inside the map $map .= '<div id="map_canvas' . ($map_counter != 0 ? '_' . $map_counter : '') . '" class="wpseo-map-canvas" style="max-width: 100%; width: ' . $atts['width'] . 'px; height: ' . $atts['height'] . 'px;">' . $noscript_output . '</div>'; $route_tag = apply_filters('wpseo_local_location_route_title_name', 'h3'); if ($atts['show_route'] && ($atts['id'] != 'all' && strpos($atts['id'], ',') === false || $atts['from_sl'])) { $map .= '<div id="wpseo-directions-wrapper"' . ($atts['from_sl'] ? ' style="display: none;"' : '') . '>'; $map .= '<' . esc_html($route_tag) . ' id="wpseo-directions" class="wpseo-directions-heading">' . __('Route', 'yoast-local-seo') . '</' . esc_html($route_tag) . '>'; $map .= '<form action="" method="post" class="wpseo-directions-form" id="wpseo-directions-form' . ($map_counter != 0 ? '_' . $map_counter : '') . '" onsubmit="wpseo_calculate_route( directionsDisplay_' . $map_counter . ', ' . $location_array[0]['coordinates_lat'] . ', ' . $location_array[0]['coordinates_long'] . ', ' . $map_counter . '); return false;">'; $map .= '<p>'; $map .= __('Your location', 'yoast-local-seo') . ': <input type="text" size="20" id="origin' . ($map_counter != 0 ? '_' . $map_counter : '') . '" value="' . (!empty($_REQUEST['wpseo-sl-search']) ? esc_attr($_REQUEST['wpseo-sl-search']) : '') . '" />'; $map .= '<input type="submit" class="wpseo-directions-submit" value="' . $atts['show_route_label'] . '">'; $map .= '<span id="wpseo-noroute" style="display: none;">' . __('No route could be calculated.', 'yoast-local-seo') . '</span>'; $map .= '</p>'; $map .= '</form>'; $map .= '<div id="directions' . ($map_counter != 0 ? '_' . $map_counter : '') . '"></div>'; $map .= '</div>'; } } if ($atts['echo']) { echo $map; } return $map; }
/** * Builds an array based upon the data from the wpseo_locations post type. This data is needed as input for the Geo sitemap & KML API. * * @since 1.0 */ function get_location_data($post_id = null) { $locations = array(); $locations["businesses"] = array(); if (wpseo_has_multiple_locations()) { $args = array('post_type' => 'wpseo_locations', 'posts_per_page' => -1, 'fields' => 'ids'); if (null != $post_id) { $args['posts_per_page'] = 1; $args['post__in'] = array($post_id); } $posts = get_posts($args); foreach ($posts as $post_id) { $business = array("business_name" => get_the_title($post_id), "business_type" => get_post_meta($post_id, '_wpseo_business_type', true), "business_address" => get_post_meta($post_id, '_wpseo_business_address', true), "business_city" => get_post_meta($post_id, '_wpseo_business_city', true), "business_state" => get_post_meta($post_id, '_wpseo_business_state', true), "business_zipcode" => get_post_meta($post_id, '_wpseo_business_zipcode', true), "business_country" => get_post_meta($post_id, '_wpseo_business_country', true), "business_phone" => get_post_meta($post_id, '_wpseo_business_phone', true), "business_phone_2nd" => get_post_meta($post_id, '_wpseo_business_phone_2nd', true), "business_fax" => get_post_meta($post_id, '_wpseo_business_fax', true), "business_email" => get_post_meta($post_id, '_wpseo_business_email', true), "business_url" => get_post_meta($post_id, '_wpseo_business_url', true), "business_description" => wpseo_local_get_excerpt($post_id), "coords" => array('lat' => get_post_meta($post_id, '_wpseo_coordinates_lat', true), 'long' => get_post_meta($post_id, '_wpseo_coordinates_long', true)), "post_id" => $post_id); $is_postal_address = get_post_meta($post_id, '_wpseo_is_postal_address', true); $business['is_postal_address'] = $is_postal_address == '1'; if (empty($business['business_url'])) { $business['business_url'] = get_permalink($post_id); } array_push($locations["businesses"], $business); } } else { $options = get_option('wpseo_local'); $business = array("business_name" => $options['location_name'], "business_type" => $options['location_type'], "business_address" => $options['location_address'], "business_city" => $options['location_city'], "business_state" => $options['location_state'], "business_zipcode" => $options['location_zipcode'], "business_country" => $options['location_country'], "business_phone" => $options['location_phone'], "business_phone_2nd" => $options['location_phone_2nd'], "business_fax" => $options['location_fax'], "business_email" => $options['location_email'], "business_description" => get_option("blogname") . ' - ' . get_option("blogdescription"), "business_url" => wpseo_xml_sitemaps_base_url(''), "coords" => array('lat' => $options['location_coords_lat'], 'long' => $options['location_coords_long'])); array_push($locations["businesses"], $business); } $base = $GLOBALS['wp_rewrite']->using_index_permalinks() ? 'index.php/' : ''; $locations["business_name"] = get_option("blogname"); $locations["kml_name"] = "Locations for " . $locations["business_name"] . "."; $locations["kml_url"] = home_url($base . '/locations.kml'); $locations["kml_website"] = wpseo_xml_sitemaps_base_url(''); $locations["author"] = get_option("blogname"); return $locations; }