/** * @param WP_Query $q * * @return mixed */ function wpml_home_url_parse_query($q) { if (!$q->is_main_query()) { return $q; } global $sitepress_settings; $site_url = get_site_url(); $parts = parse_url($site_url); if (!isset($parts['path'])) { $parts['path'] = ''; } if (!WPML_Root_Page::is_current_request_root()) { return $q; } else { remove_action('parse_query', 'wpml_home_url_parse_query'); $request_array = explode('/', $_SERVER["REQUEST_URI"]); $sanitized_query = array_pop($request_array); $potential_pagination_parameter = array_pop($request_array); if (is_numeric($potential_pagination_parameter)) { if ($sanitized_query) { $sanitized_query .= '&'; } $sanitized_query .= 'page=' . $potential_pagination_parameter; } $sanitized_query = str_replace('?', '', $sanitized_query); $q->parse_query($sanitized_query); add_action('parse_query', 'wpml_home_url_parse_query'); $q->query_vars['page_id'] = $sitepress_settings["urls"]["root_page"]; $q->query['page_id'] = $sitepress_settings["urls"]["root_page"]; $q->is_page = 1; $q->queried_object = new WP_Post(get_post($sitepress_settings["urls"]["root_page"])); $q->queried_object_id = $sitepress_settings["urls"]["root_page"]; $q->query_vars['error'] = ""; $q->is_404 = false; $q->query['error'] = null; } return $q; }
/** * @param WPML_URL_Converter $url_converter * @param array $active_languages * @param string $default_language * @param WPML_Cookie $cookie */ public function __construct(&$url_converter, $active_languages, $default_language, $cookie) { parent::__construct($url_converter, $active_languages, $default_language, $cookie); global $wpml_url_filters; if (strpos((string) filter_var($_SERVER['REQUEST_URI']), 'wpml_root_page=1') !== false || $wpml_url_filters->frontend_uses_root() !== false) { WPML_Root_Page::init(); } }
/** * @param WPML_Post_Translation $post_translation * @param WPML_URL_Converter $url_converter * @param WPML_Canonicals $canonicals * @param SitePress $sitepress */ public function __construct(&$post_translation, &$url_converter, WPML_Canonicals $canonicals, &$sitepress) { parent::__construct($post_translation, $sitepress); $this->url_converter =& $url_converter; $this->canonicals = $canonicals; if ($this->frontend_uses_root() === true) { WPML_Root_Page::init(); } $this->add_hooks(); }
private function maybe_setup_rootpage() { if (WPML_Root_Page::is_current_request_root()) { if (WPML_Root_Page::uses_html_root()) { $html_file = (false === strpos($this->urls['root_html_file_path'], '/') ? ABSPATH : '') . $this->urls['root_html_file_path']; /** @noinspection PhpIncludeInspection */ include $html_file; exit; } else { $root_page_actions = wpml_get_root_page_actions_obj(); $root_page_actions->wpml_home_url_setup_root_page(); } } }
/** * @param WPML_Post_Translation $post_translation * @param WPML_URL_Converter $url_converter * @param SitePress $sitepress */ public function __construct(&$post_translation, &$url_converter, &$sitepress) { parent::__construct($post_translation, $sitepress); $this->url_converter =& $url_converter; if ($this->frontend_uses_root() === true) { WPML_Root_Page::init(); add_filter('page_link', array($this, 'permalink_filter_root'), 1, 2); } else { add_filter('page_link', array($this, 'permalink_filter'), 1, 2); } add_filter('home_url', array($this, 'home_url_filter'), -10, 4); // posts and pages links filters add_filter('post_link', array($this, 'permalink_filter'), 1, 2); add_filter('post_type_link', array($this, 'permalink_filter'), 1, 2); add_filter('get_edit_post_link', array($this, 'get_edit_post_link'), 1, 3); }
/** * @param $url * Filters links to the root page, so that they are displayed properly in the front-end. * * @return mixed */ public function filter_root_permalink($url) { global $wpml_url_converter; if (WPML_Root_Page::get_root_id() > 0 && WPML_Root_Page::is_root_page($url)) { $url_parts = parse_url($url); $query = isset($url_parts['query']) ? $url_parts['query'] : ''; $path = isset($url_parts['path']) ? $url_parts['path'] : ''; $slugs = array_filter(explode('/', $path)); $last_slug = array_pop($slugs); $new_url = $wpml_url_converter->get_abs_home(); $new_url = is_numeric($last_slug) ? trailingslashit(trailingslashit($new_url) . $last_slug) : $new_url; $query = self::unset_page_query_vars($query); $new_url = trailingslashit($new_url); $url = (bool) $query === true ? trailingslashit($new_url) . '?' . $query : $new_url; } return $url; }
public static function init() { if (WPML_Root_Page::uses_html_root() || WPML_Root_Page::get_root_id() > 0 || strpos((string) filter_var($_SERVER['REQUEST_URI']), 'wpml_root_page=1') !== false || (bool) filter_input(INPUT_POST, '_wpml_root_page') === true) { global $wpml_root_page_actions; $wpml_root_page_actions = wpml_get_root_page_actions_obj(); add_action('init', array($wpml_root_page_actions, 'wpml_home_url_init'), 0); add_filter('wp_page_menu_args', array($wpml_root_page_actions, 'wpml_home_url_exclude_root_page_from_menus')); add_filter('wp_get_nav_menu_items', array($wpml_root_page_actions, 'exclude_root_page_menu_item'), 10, 1); add_filter('wp_list_pages_excludes', array($wpml_root_page_actions, 'wpml_home_url_exclude_root_page')); add_filter('page_attributes_dropdown_pages_args', array($wpml_root_page_actions, 'wpml_home_url_exclude_root_page2')); add_filter('get_pages', array($wpml_root_page_actions, 'wpml_home_url_get_pages')); add_action('save_post', array($wpml_root_page_actions, 'wpml_home_url_save_post_actions'), 0, 2); if (self::get_root_id() > 0) { add_filter('template_include', array('WPML_Root_Page', 'wpml_home_url_template_include')); add_filter('the_preview', array('WPML_Root_Page', 'front_page_id_filter')); } $root_page_actions = wpml_get_root_page_actions_obj(); add_action('icl_set_element_language', array($root_page_actions, 'delete_root_page_lang'), 10, 0); } }
function get_ls_languages($template_args = array()) { //Returns false if is admin and settings are corrupted if (is_admin() && !SitePress::check_settings_integrity()) { return false; } /** @var $wp_query WP_Query */ global $sitepress, $wpdb, $wp_query, $w_this_lang; $current_language = $this->get_current_language(); $default_language = $this->get_default_language(); $cache_key_args = $template_args ? array_filter($template_args) : array('default'); $cache_key_args[] = $current_language; $cache_key_args[] = $default_language; $cache_key_args = array_filter($cache_key_args); $cache_key = md5(json_encode($cache_key_args)); $cache_group = 'ls_languages'; $found = false; $ls_languages = wp_cache_get($cache_key, $cache_group, $found); if ($found) { return $ls_languages; } if (is_null($this->wp_query)) { $this->set_wp_query(); } // use original wp_query for this // backup current $wp_query if (!isset($wp_query)) { return $this->get_active_languages(); } $_wp_query_back = clone $wp_query; unset($wp_query); global $wp_query; // make it global again after unset $wp_query = clone $this->wp_query; $w_active_languages = $this->get_active_languages(); $this_lang = $this->this_lang; if ($this_lang == 'all') { $w_this_lang = array('code' => 'all', 'english_name' => 'All languages', 'display_name' => __('All languages', 'sitepress')); } else { $w_this_lang = $this->get_language_details($this_lang); } if (isset($template_args['skip_missing'])) { //override default setting $icl_lso_link_empty = !$template_args['skip_missing']; } else { $icl_lso_link_empty = $this->settings['icl_lso_link_empty']; } // 1. Determine translations if (is_category()) { $skip_empty = false; $term_taxonomy_id_prepared = $wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id=%d AND taxonomy=%s", array(get_query_var('cat'), 'category')); $term_taxonomy_id = $wpdb->get_var($term_taxonomy_id_prepared); $trid = $sitepress->get_element_trid($term_taxonomy_id, 'tax_category'); $translations = $this->get_element_translations($trid, 'tax_category', $skip_empty); } elseif (is_tag()) { $skip_empty = false; $term_taxonomy_id_prepared = $wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id=%d AND taxonomy=%s", array(get_query_var('tag_id'), 'post_tag')); $term_taxonomy_id = $wpdb->get_var($term_taxonomy_id_prepared); $trid = $sitepress->get_element_trid($term_taxonomy_id, 'tax_post_tag'); $translations = $this->get_element_translations($trid, 'tax_post_tag', $skip_empty); } elseif (is_tax()) { $skip_empty = false; $term_taxonomy_id_prepared = $wpdb->prepare("SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE term_id=%d AND taxonomy=%s", array($wp_query->get_queried_object_id(), get_query_var('taxonomy'))); $term_taxonomy_id = $wpdb->get_var($term_taxonomy_id_prepared); if ($this->is_translated_taxonomy(get_query_var('taxonomy'))) { $trid = $this->get_element_trid($term_taxonomy_id, 'tax_' . get_query_var('taxonomy')); $translations = $this->get_element_translations($trid, 'tax_' . get_query_var('taxonomy'), $skip_empty); } else { $translations[$this->get_current_language()] = (object) array('translation_id' => 0, 'language_code' => $this->get_default_language(), 'original' => 1, 'name' => get_query_var('taxonomy'), 'term_id' => $wp_query->get_queried_object_id()); } } elseif (is_archive()) { $translations = array(); } elseif (is_attachment()) { // Exception for attachments. Not translated. $trid = $sitepress->get_element_trid($wp_query->get_queried_object_id(), 'post_attachment'); $translations = $this->get_element_translations($trid, 'post_attachment'); } elseif (is_page() || 'page' == get_option('show_on_front') && (isset($this->wp_query->queried_object_id) && $this->wp_query->queried_object_id == get_option('page_on_front') || isset($this->wp_query->queried_object_id) && $this->wp_query->queried_object_id == get_option('page_for_posts'))) { $trid = $sitepress->get_element_trid($wp_query->get_queried_object_id(), 'post_page'); $translations = $this->get_element_translations($trid, 'post_page'); } elseif (is_singular() && !empty($wp_query->posts)) { $trid = $sitepress->get_element_trid($this->wp_query->post->ID, 'post_' . $wp_query->posts[0]->post_type); $translations = $this->get_element_translations($trid, 'post_' . $wp_query->posts[0]->post_type); } else { $wp_query->is_singular = false; $wp_query->is_archive = false; $wp_query->is_category = false; $wp_query->is_404 = true; } // 2. determine url foreach ($w_active_languages as $k => $lang) { $skip_lang = false; if (is_singular() || !empty($this->wp_query->queried_object_id) && $this->wp_query->queried_object_id == get_option('page_for_posts')) { $this_lang_tmp = $this->this_lang; $this->this_lang = $lang['code']; $lang_page_on_front = get_option('page_on_front'); $lang_page_for_posts = get_option('page_for_posts'); if ($lang_page_on_front && $lang['code'] != $default_language) { $lang_page_on_front = icl_object_id($lang_page_on_front, 'page', false, $lang['code']); } if ($lang_page_for_posts && $lang['code'] != $default_language) { $lang_page_for_posts = icl_object_id($lang_page_for_posts, 'page', false, $lang['code']); } if ('page' == get_option('show_on_front') && !empty($translations[$lang['code']]) && $translations[$lang['code']]->element_id == $lang_page_on_front) { $lang['translated_url'] = $this->language_url($lang['code']); } elseif ('page' == get_option('show_on_front') && !empty($translations[$lang['code']]) && $translations[$lang['code']]->element_id && $translations[$lang['code']]->element_id == $lang_page_for_posts) { if ($lang_page_for_posts) { $lang['translated_url'] = get_permalink($lang_page_for_posts); } else { $lang['translated_url'] = $this->language_url($lang['code']); } } else { if (!empty($translations[$lang['code']]) && isset($translations[$lang['code']]->post_title)) { $lang['translated_url'] = get_permalink($translations[$lang['code']]->element_id); $lang['missing'] = 0; } else { if ($icl_lso_link_empty) { if (!empty($template_args['link_empty_to'])) { $lang['translated_url'] = str_replace('{%lang}', $lang['code'], $template_args['link_empty_to']); } else { $lang['translated_url'] = $this->language_url($lang['code']); } } else { $skip_lang = true; } $lang['missing'] = 1; } } $this->this_lang = $this_lang_tmp; } elseif (is_category()) { if (isset($translations[$lang['code']])) { global $icl_adjust_id_url_filter_off; // force the category_link_adjust_id to not modify this $icl_adjust_id_url_filter_off = true; $lang['translated_url'] = get_category_link($translations[$lang['code']]->term_id); $icl_adjust_id_url_filter_off = false; // restore default bahavior $lang['missing'] = 0; } else { if ($icl_lso_link_empty) { if (!empty($template_args['link_empty_to'])) { $lang['translated_url'] = str_replace('{%lang}', $lang['code'], $template_args['link_empty_to']); } else { $lang['translated_url'] = $this->language_url($lang['code']); } } else { // dont skip the currrent language if ($current_language != $lang['code']) { $skip_lang = true; } } $lang['missing'] = 1; } } elseif (is_tax()) { if (isset($translations[$lang['code']])) { global $icl_adjust_id_url_filter_off; // force the category_link_adjust_id to not modify this $icl_adjust_id_url_filter_off = true; $lang['translated_url'] = get_term_link((int) $translations[$lang['code']]->term_id, get_query_var('taxonomy')); $icl_adjust_id_url_filter_off = false; // restore default bahavior $lang['missing'] = 0; } else { if ($icl_lso_link_empty) { if (!empty($template_args['link_empty_to'])) { $lang['translated_url'] = str_replace('{%lang}', $lang['code'], $template_args['link_empty_to']); } else { $lang['translated_url'] = $this->language_url($lang['code']); } } else { // dont skip the currrent language if ($current_language != $lang['code']) { $skip_lang = true; } } $lang['missing'] = 1; } } elseif (is_tag()) { if (isset($translations[$lang['code']])) { global $icl_adjust_id_url_filter_off; // force the category_link_adjust_id to not modify this $icl_adjust_id_url_filter_off = true; $lang['translated_url'] = get_tag_link($translations[$lang['code']]->term_id); $icl_adjust_id_url_filter_off = false; // restore default bahavior $lang['missing'] = 0; } else { if ($icl_lso_link_empty) { if (!empty($template_args['link_empty_to'])) { $lang['translated_url'] = str_replace('{%lang}', $lang['code'], $template_args['link_empty_to']); } else { $lang['translated_url'] = $this->language_url($lang['code']); } } else { // dont skip the currrent language if ($current_language != $lang['code']) { $skip_lang = true; } } $lang['missing'] = 1; } } elseif (is_author()) { global $authordata, $wp_query; if (empty($authordata)) { $authordata = get_userdata(get_query_var('author')); } $post_type = get_query_var('post_type') ? get_query_var('post_type') : 'post'; if ($wpdb->get_var("SELECT COUNT(p.ID) FROM {$wpdb->posts} p\r\n\t\t\t\t\t\tJOIN {$wpdb->prefix}icl_translations t ON p.ID=t.element_id AND t.element_type = 'post_{$post_type}'\r\n\t\t\t\t\t\tWHERE p.post_author='{$authordata->ID}' AND post_type='{$post_type}' AND post_status='publish' AND language_code='{$lang['code']}'")) { remove_filter('home_url', array($this, 'home_url'), 1, 4); remove_filter('author_link', array($this, 'author_link')); $author_url = get_author_posts_url($authordata->ID); add_filter('home_url', array($this, 'home_url'), 1, 4); add_filter('author_link', array($this, 'author_link')); $lang['translated_url'] = $this->convert_url($author_url, $lang['code']); $lang['missing'] = 0; } else { if ($icl_lso_link_empty) { if (!empty($template_args['link_empty_to'])) { $lang['translated_url'] = str_replace('{%lang}', $lang['code'], $template_args['link_empty_to']); } else { $lang['translated_url'] = $this->language_url($lang['code']); } } else { // dont skip the currrent language if ($current_language != $lang['code']) { $skip_lang = true; } } $lang['missing'] = 1; } } elseif (is_archive() && !is_tag()) { global $icl_archive_url_filter_off; $icl_archive_url_filter_off = true; if ($this->wp_query->is_year) { if (isset($this->wp_query->query_vars['m']) && !$this->wp_query->query_vars['year']) { $this->wp_query->query_vars['year'] = substr($this->wp_query->query_vars['m'], 0, 4); } $lang['translated_url'] = $this->archive_url(get_year_link($this->wp_query->query_vars['year']), $lang['code']); } elseif ($this->wp_query->is_month) { if (isset($this->wp_query->query_vars['m']) && !$this->wp_query->query_vars['year']) { $this->wp_query->query_vars['year'] = substr($this->wp_query->query_vars['m'], 0, 4); $this->wp_query->query_vars['monthnum'] = substr($this->wp_query->query_vars['m'], 4, 2); } else { if ($icl_lso_link_empty) { if (!empty($template_args['link_empty_to'])) { $lang['translated_url'] = str_replace('{%lang}', $lang['code'], $template_args['link_empty_to']); } else { $lang['translated_url'] = $this->language_url($lang['code']); } } $lang['missing'] = 1; } $lang['translated_url'] = $this->archive_url(get_month_link($this->wp_query->query_vars['year'], $this->wp_query->query_vars['monthnum']), $lang['code']); } elseif ($this->wp_query->is_day) { if (isset($this->wp_query->query_vars['m']) && !$this->wp_query->query_vars['year']) { $this->wp_query->query_vars['year'] = substr($this->wp_query->query_vars['m'], 0, 4); $this->wp_query->query_vars['monthnum'] = substr($this->wp_query->query_vars['m'], 4, 2); $this->wp_query->query_vars['day'] = substr($this->wp_query->query_vars['m'], 6, 2); gmdate('Y', current_time('timestamp')); //force wp_timezone_override_offset to be called } $lang['translated_url'] = $this->archive_url(get_day_link($this->wp_query->query_vars['year'], $this->wp_query->query_vars['monthnum'], $this->wp_query->query_vars['day']), $lang['code']); } else { if (isset($this->wp_query->query_vars['post_type'])) { do_action('_icl_before_archive_url', $this->wp_query->query_vars['post_type'], $lang['code']); if ($this->is_translated_post_type($this->wp_query->query_vars['post_type']) && function_exists('get_post_type_archive_link')) { remove_filter('post_type_archive_link', array($this, 'post_type_archive_link_filter'), 10); $lang['translated_url'] = $this->convert_url(get_post_type_archive_link($this->wp_query->query_vars['post_type']), $lang['code']); } else { if ($k != $this->get_default_language()) { $skip_lang = true; unset($w_active_languages[$k]); } } do_action('_icl_after_archive_url', $this->wp_query->query_vars['post_type'], $lang['code']); } } add_filter('post_type_archive_link', array($this, 'post_type_archive_link_filter'), 10, 2); $icl_archive_url_filter_off = false; } elseif (is_search()) { $url_glue = strpos($this->language_url($lang['code']), '?') === false ? '?' : '&'; $lang['translated_url'] = $this->language_url($lang['code']) . $url_glue . 's=' . urlencode($wp_query->query['s']); } else { global $icl_language_switcher_preview; if ($icl_lso_link_empty || is_home() || is_404() || 'page' == get_option('show_on_front') && ($this->wp_query->queried_object_id == get_option('page_on_front') || $this->wp_query->queried_object_id == get_option('page_for_posts')) || $icl_language_switcher_preview || WPML_Root_Page::is_current_request_root()) { $lang['translated_url'] = $this->language_url($lang['code']); $skip_lang = false; } else { $skip_lang = true; unset($w_active_languages[$k]); } } if (!$skip_lang) { $w_active_languages[$k] = $lang; } else { unset($w_active_languages[$k]); } } // 3. foreach ($w_active_languages as $k => $v) { $lang_code = $w_active_languages[$k]['language_code'] = $w_active_languages[$k]['code']; unset($w_active_languages[$k]['code']); $native_name = $this->get_display_language_name($lang_code, $lang_code); if (!$native_name) { $native_name = $w_active_languages[$k]['english_name']; } $w_active_languages[$k]['native_name'] = $native_name; $translated_name = $this->get_display_language_name($lang_code, $current_language); if (!$translated_name) { $translated_name = $w_active_languages[$k]['english_name']; } $w_active_languages[$k]['translated_name'] = $translated_name; unset($w_active_languages[$k]['display_name']); unset($w_active_languages[$k]['english_name']); if (isset($w_active_languages[$k]['translated_url'])) { $w_active_languages[$k]['url'] = $w_active_languages[$k]['translated_url']; unset($w_active_languages[$k]['translated_url']); } else { $w_active_languages[$k]['url'] = $this->language_url($k); } $flag = $this->get_flag($lang_code); if ($flag->from_template) { $wp_upload_dir = wp_upload_dir(); $flag_url = $wp_upload_dir['baseurl'] . '/flags/' . $flag->flag; } else { $flag_url = ICL_PLUGIN_URL . '/res/flags/' . $flag->flag; } $w_active_languages[$k]['country_flag_url'] = $flag_url; $w_active_languages[$k]['active'] = $current_language == $lang_code ? '1' : 0; } // 4. pass GET parameters $parameters_copied = apply_filters('icl_lang_sel_copy_parameters', array_map('trim', explode(',', $this->settings['icl_lang_sel_copy_parameters']))); if ($parameters_copied) { foreach ($_GET as $k => $v) { if (in_array($k, $parameters_copied)) { $gets_passed[$k] = $v; } } } if (!empty($gets_passed)) { $gets_passed = http_build_query($gets_passed); foreach ($w_active_languages as $code => $al) { if (empty($al['missing'])) { $glue = false !== strpos($w_active_languages[$code]['url'], '?') ? '&' : '?'; $w_active_languages[$code]['url'] .= $glue . $gets_passed; } } } // restore current $wp_query unset($wp_query); global $wp_query; // make it global again after unset $wp_query = clone $_wp_query_back; unset($_wp_query_back); $w_active_languages = apply_filters('icl_ls_languages', $w_active_languages); $w_active_languages = $this->sort_ls_languages($w_active_languages, $template_args); // Change the url, in case languages in subdomains are set. if ($this->settings['language_negotiation_type'] == 2) { foreach ($w_active_languages as $lang => $element) { $w_active_languages[$lang]['url'] = $this->convert_url($element['url'], $lang); } } wp_reset_query(); wp_cache_set($cache_key, $w_active_languages, $cache_group); return $w_active_languages; }
<?php if (WPML_Root_Page::uses_html_root() || WPML_Root_Page::get_root_id() > 0 || strpos((string) filter_var($_SERVER['REQUEST_URI']), 'wpml_root_page=1') !== false || (bool) filter_input(INPUT_POST, '_wpml_root_page') === true) { $root_page_actions = wpml_get_root_page_actions_obj(); add_action('init', array($root_page_actions, 'wpml_home_url_init'), 0); add_filter('wp_page_menu_args', array($root_page_actions, 'wpml_home_url_exclude_root_page_from_menus')); add_filter('wp_list_pages_excludes', array($root_page_actions, 'wpml_home_url_exclude_root_page')); add_filter('page_attributes_dropdown_pages_args', array($root_page_actions, 'wpml_home_url_exclude_root_page2')); add_filter('get_pages', array($root_page_actions, 'wpml_home_url_get_pages')); add_action('save_post', array($root_page_actions, 'wpml_home_url_save_post_actions'), 0, 2); WPML_Root_Page::init(); } class WPML_Root_Page { public static function init() { if (self::get_root_id() > 0) { add_filter('template_include', array('WPML_Root_Page', 'wpml_home_url_template_include')); add_filter('the_preview', array('WPML_Root_Page', 'front_page_id_filter')); } $root_page_actions = wpml_get_root_page_actions_obj(); add_action('icl_set_element_language', array($root_page_actions, 'delete_root_page_lang'), 10, 0); } /** * Checks if the value in $_SERVER['REQUEST_URI] points towards the root page. * Therefore this can be used to check if the current request points towards the root page. * * @return bool */ public static function is_current_request_root() {
function get_ls_languages($template_args = array()) { /** @var $wp_query WP_Query */ global $wp_query, $w_this_lang, $wpml_post_translations, $wpml_term_translations; $current_language = $this->get_current_language(); $default_language = $this->get_default_language(); $cache_key_args = $template_args ? array_filter($template_args) : array('default'); $cache_key_args[] = $current_language; $cache_key_args[] = $default_language; $cache_key_args = array_filter($cache_key_args); $cache_key = md5(wp_json_encode($cache_key_args)); $cache_group = 'ls_languages'; $found = false; $ls_languages = wp_cache_get($cache_key, $cache_group, $found); if ($found) { return $ls_languages; } if (is_null($this->wp_query)) { $this->set_wp_query(); } // use original wp_query for this // backup current $wp_query if (!isset($wp_query)) { return $this->get_active_languages(); } $_wp_query_back = clone $wp_query; unset($wp_query); global $wp_query; // make it global again after unset $wp_query = clone $this->wp_query; $w_active_languages = $this->get_active_languages(); $this_lang = $this->this_lang; if ($this_lang == 'all') { $w_this_lang = array('code' => 'all', 'english_name' => 'All languages', 'display_name' => __('All languages', 'sitepress')); } else { $w_this_lang = $this->get_language_details($this_lang); } if (isset($template_args['skip_missing'])) { //override default setting $icl_lso_link_empty = !$template_args['skip_missing']; } else { $icl_lso_link_empty = $this->settings['icl_lso_link_empty']; } $languages_helper = new WPML_Languages($wpml_term_translations, $this, $wpml_post_translations); list($translations, $wp_query) = $languages_helper->get_ls_translations($wp_query, $_wp_query_back, $this->wp_query); // 2. determine url foreach ($w_active_languages as $k => $lang) { $skip_lang = false; if (is_singular() || isset($_wp_query_back->query['name']) && isset($_wp_query_back->query['post_type']) || !empty($this->wp_query->queried_object_id) && $this->wp_query->queried_object_id == get_option('page_for_posts')) { $this_lang_tmp = $this->this_lang; $this->this_lang = $lang['code']; $lang_page_on_front = get_option('page_on_front'); $lang_page_for_posts = get_option('page_for_posts'); if ($lang_page_on_front) { $lang_page_on_front = icl_object_id($lang_page_on_front, 'page', false, $lang['code']); } if ($lang_page_for_posts) { $lang_page_for_posts = icl_object_id($lang_page_for_posts, 'page', false, $lang['code']); } if ('page' === get_option('show_on_front') && !empty($translations[$lang['code']]) && $translations[$lang['code']]->element_id == $lang_page_on_front) { $lang['translated_url'] = $this->language_url($lang['code']); } elseif ('page' == get_option('show_on_front') && !empty($translations[$lang['code']]) && $translations[$lang['code']]->element_id && $translations[$lang['code']]->element_id == $lang_page_for_posts) { if ($lang_page_for_posts) { $lang['translated_url'] = get_permalink($lang_page_for_posts); } else { $lang['translated_url'] = $this->language_url($lang['code']); } } else { if (!empty($translations[$lang['code']]) && isset($translations[$lang['code']]->post_title)) { $lang['translated_url'] = get_permalink($translations[$lang['code']]->element_id); $lang['missing'] = 0; } else { if ($icl_lso_link_empty) { if (!empty($template_args['link_empty_to'])) { $lang['translated_url'] = str_replace('{%lang}', $lang['code'], $template_args['link_empty_to']); } else { $lang['translated_url'] = $this->language_url($lang['code']); } } else { $skip_lang = true; } $lang['missing'] = 1; } } $this->this_lang = $this_lang_tmp; } elseif (is_category() || is_tax() || is_tag()) { global $icl_adjust_id_url_filter_off; $icl_adjust_id_url_filter_off = true; list($lang, $skip_lang) = $languages_helper->add_tax_url_to_ls_lang($lang, $translations, $icl_lso_link_empty, $skip_lang); $icl_adjust_id_url_filter_off = false; } elseif (is_author()) { global $authordata; if (empty($authordata)) { $authordata = get_userdata(get_query_var('author')); } remove_filter('home_url', array($this, 'home_url'), 1, 4); remove_filter('author_link', array($this, 'author_link')); list($lang, $skip_lang) = $languages_helper->add_author_url_to_ls_lang($lang, $authordata, $icl_lso_link_empty, $skip_lang); add_filter('home_url', array($this, 'home_url'), 1, 4); add_filter('author_link', array($this, 'author_link')); } elseif (is_archive() && !is_tag()) { global $icl_archive_url_filter_off; $icl_archive_url_filter_off = true; remove_filter('post_type_archive_link', array($this, 'post_type_archive_link_filter'), 10); list($lang, $skip_lang) = $languages_helper->add_date_or_cpt_url_to_ls_lang($lang, $this->wp_query, $icl_lso_link_empty, $skip_lang); add_filter('post_type_archive_link', array($this, 'post_type_archive_link_filter'), 10, 2); $icl_archive_url_filter_off = false; } elseif (is_search()) { $url_glue = strpos($this->language_url($lang['code']), '?') === false ? '?' : '&'; $lang['translated_url'] = $this->language_url($lang['code']) . $url_glue . 's=' . urlencode($wp_query->query['s']); } else { global $icl_language_switcher_preview; if ($icl_lso_link_empty || is_home() || is_404() || 'page' === get_option('show_on_front') && ($this->wp_query->queried_object_id == get_option('page_on_front') || $this->wp_query->queried_object_id == get_option('page_for_posts')) || $icl_language_switcher_preview || WPML_Root_Page::is_current_request_root()) { $lang['translated_url'] = $this->language_url($lang['code']); $skip_lang = false; } else { $skip_lang = true; unset($w_active_languages[$k]); } } if (!$skip_lang) { $w_active_languages[$k] = $lang; } else { unset($w_active_languages[$k]); } } // 3. foreach ($w_active_languages as $k => $v) { $w_active_languages[$k] = $languages_helper->get_ls_language($k, $current_language, $w_active_languages[$k]); } // 4. pass GET parameters $parameters_copied = apply_filters('icl_lang_sel_copy_parameters', array_map('trim', explode(',', wpml_get_setting_filter('', 'icl_lang_sel_copy_parameters')))); if ($parameters_copied) { foreach ($_GET as $k => $v) { if (in_array($k, $parameters_copied)) { $gets_passed[$k] = $v; } } } if (!empty($gets_passed)) { $gets_passed = http_build_query($gets_passed); foreach ($w_active_languages as $code => $al) { if (empty($al['missing'])) { $glue = false !== strpos($w_active_languages[$code]['url'], '?') ? '&' : '?'; $w_active_languages[$code]['url'] .= $glue . $gets_passed; } } } // restore current $wp_query unset($wp_query); global $wp_query; // make it global again after unset $wp_query = clone $_wp_query_back; unset($_wp_query_back); $w_active_languages = apply_filters('icl_ls_languages', $w_active_languages); $w_active_languages = $languages_helper->sort_ls_languages($w_active_languages, $template_args); // Change the url, in case languages in subdomains are set. if ($this->settings['language_negotiation_type'] == 2) { foreach ($w_active_languages as $lang => $element) { $w_active_languages[$lang]['url'] = $this->convert_url($element['url'], $lang); } } wp_reset_query(); wp_cache_set($cache_key, $w_active_languages, $cache_group); return $w_active_languages; }
/** * @param WP_Query $q * * @return mixed */ function wpml_home_url_parse_query($q) { if (!$q->is_main_query()) { return $q; } if (!WPML_Root_Page::is_current_request_root()) { return $q; } else { remove_action('parse_query', array($this, 'wpml_home_url_parse_query')); $request_array = explode('/', $_SERVER["REQUEST_URI"]); $sanitized_query = array_pop($request_array); $potential_pagination_parameter = array_pop($request_array); if (is_numeric($potential_pagination_parameter)) { if ($sanitized_query) { $sanitized_query .= '&'; } $sanitized_query .= 'page=' . $potential_pagination_parameter; } $sanitized_query = str_replace('?', '', $sanitized_query); $q->parse_query($sanitized_query); add_action('parse_query', array($this, 'wpml_home_url_parse_query')); $root_id = $this->get_root_page_id(); $q->query_vars['page_id'] = $root_id; $q->query['page_id'] = $root_id; $q->is_page = 1; $q->queried_object = new WP_Post(get_post($root_id)); $q->queried_object_id = $root_id; $q->query_vars['error'] = ""; $q->is_404 = false; $q->query['error'] = null; } return $q; }
public function wpml_root_page_posts_where_filter($where, $post_type) { global $wpdb; $where .= $wpdb->prepare(" AND ID != %d ", WPML_Root_Page::get_root_id()); return $where; }
/** * @param WP_Query $q * * @return mixed */ function wpml_home_url_parse_query($q) { if (!$q->is_main_query()) { return $q; } if (!WPML_Root_Page::is_current_request_root()) { return $q; } else { remove_action('parse_query', array($this, 'wpml_home_url_parse_query')); $request_array = explode('/', $_SERVER['REQUEST_URI']); $sanitized_query = array_pop($request_array); $potential_pagination_parameter = array_pop($request_array); if (is_numeric($potential_pagination_parameter)) { if ($sanitized_query) { $sanitized_query .= '&'; } $sanitized_query .= 'page=' . $potential_pagination_parameter; } $sanitized_query = str_replace('?', '', $sanitized_query); $q->parse_query($sanitized_query); $root_id = $this->get_root_page_id(); add_action('parse_query', array($this, 'wpml_home_url_parse_query')); if (false !== $root_id) { $q = $this->set_page_query_parameters($q, $root_id); } else { $front_page = get_option('page_on_front'); if ($front_page) { $q = $this->set_page_query_parameters($q, $front_page); } } } return $q; }
function webdados_fb_open_graph() { global $webdados_fb_open_graph_plugin_settings, $webdados_fb_open_graph_plugin_name, $webdados_fb_open_graph_plugin_version, $webdados_fb_open_graph_settings; //Upgrade webdados_fb_open_graph_upgrade(); //Get options - OLD (until 0.5.4) /*foreach($webdados_fb_open_graph_plugin_settings as $key) { $$key=get_option('wonderm00n_open_graph_'.$key); }*/ //Get options - NEW (after 0.5.4) extract($webdados_fb_open_graph_settings); //Also set Title Tag? $fb_set_title_tag = 0; //Additional images $fb_image_additional = array(); $fb_type = 'article'; if (is_singular()) { //It's a Post or a Page or an attachment page - It can also be the homepage if it's set as a page global $post; $fb_title = esc_attr(strip_tags(stripslashes($post->post_title))); //SubHeading if ($fb_show_subheading == 1) { if (webdados_fb_open_graph_subheadingactive()) { if (isset($fb_subheading_position) && $fb_subheading_position == 'before') { $fb_title = trim(trim(get_the_subheading()) . ' - ' . trim($fb_title), ' -'); } else { $fb_title = trim(trim($fb_title) . ' - ' . trim(get_the_subheading()), ' -'); } } } $fb_url = get_permalink(); if (is_front_page()) { /* Fix homepage type when it's a static page */ $fb_url = get_option('home') . (intval($fb_url_add_trailing) == 1 ? '/' : ''); $fb_type = trim($fb_type_homepage == '' ? 'website' : $fb_type_homepage); } if (trim($post->post_excerpt) != '') { //If there's an excerpt that's what we'll use $fb_desc = trim($post->post_excerpt); } else { //If not we grab it from the content $fb_desc = trim($post->post_content); } $fb_desc = intval($fb_desc_chars) > 0 ? mb_substr(esc_attr(strip_tags(strip_shortcodes(stripslashes($fb_desc)))), 0, $fb_desc_chars) : esc_attr(strip_tags(strip_shortcodes(stripslashes($fb_desc)))); if (intval($fb_image_show) == 1 || intval($fb_image_show_schema) == 1 || intval($fb_image_show_twitter) == 1) { $fb_image = webdados_fb_open_graph_post_image($fb_image_use_specific, $fb_image_use_featured, $fb_image_use_content, $fb_image_use_media, $fb_image_use_default, $fb_image); } //Author $author_id = $post->post_author; if ($author_id > 0) { $fb_author = get_the_author_meta('facebook', $author_id); $fb_author_meta = get_the_author_meta('display_name', $author_id); $fb_author_linkrelgp = get_the_author_meta('googleplus', $author_id); $fb_author_twitter = get_the_author_meta('twitter', $author_id); } else { $fb_author = ''; $fb_author_meta = ''; $fb_author_linkrelgp = ''; $fb_author_twitter = ''; } //Author - Hide on pages? if (is_page() && $fb_author_hide_on_pages == 1) { $fb_author = ''; $fb_author_meta = ''; $fb_author_linkrelgp = ''; $fb_author_twitter = ''; } //Published and Modified time if (is_singular('post')) { $fb_article_pub_date = get_the_date('c'); $fb_article_mod_date = get_the_modified_date('c'); } else { $fb_article_dates_show = 0; $fb_article_pub_date = ''; $fb_article_mod_date = ''; } //Categories if (is_singular('post')) { $cats = get_the_category(); if (!is_wp_error($cats) && (is_array($cats) && count($cats) > 0)) { $fb_sections = array(); foreach ($cats as $cat) { $fb_sections[] = $cat->name; } } } else { $fb_article_sections_show = 0; } //Business Directory Plugin if ($fb_show_businessdirectoryplugin == 1) { @(include_once ABSPATH . 'wp-admin/includes/plugin.php'); if (is_plugin_active('business-directory-plugin/wpbusdirman.php')) { global $wpbdp; //$bdpaction = _wpbdp_current_action(); $bdpaction = $wpbdp->controller->get_current_action(); switch ($bdpaction) { case 'showlisting': //Listing $listing_id = get_query_var('listing') ? wpbdp_get_post_by_slug(get_query_var('listing'))->ID : wpbdp_getv($_GET, 'id', get_query_var('id')); $bdppost = get_post($listing_id); $fb_title = esc_attr(strip_tags(stripslashes($bdppost->post_title))) . ' - ' . $fb_title; $fb_set_title_tag = 1; $fb_url = get_permalink($listing_id); if (trim($bdppost->post_excerpt) != '') { //If there's an excerpt that's what we'll use $fb_desc = trim($bdppost->post_excerpt); } else { //If not we grab it from the content $fb_desc = trim($bdppost->post_content); } $fb_desc = intval($fb_desc_chars) > 0 ? mb_substr(esc_attr(strip_tags(strip_shortcodes(stripslashes($fb_desc)))), 0, $fb_desc_chars) : esc_attr(strip_tags(strip_shortcodes(stripslashes($fb_desc)))); if (intval($fb_image_show) == 1 || intval($fb_image_show_schema) == 1 || intval($fb_image_show_twitter) == 1) { $thumbdone = false; if (intval($fb_image_use_featured) == 1) { //Featured if ($id_attachment = get_post_thumbnail_id($bdppost->ID)) { //There's a featured/thumbnail image for this listing $fb_image = wp_get_attachment_url($id_attachment, false); $thumbdone = true; } } if (!$thumbdone) { //Main image loaded if ($thumbnail_id = wpbdp_listings_api()->get_thumbnail_id($bdppost->ID)) { $fb_image = wp_get_attachment_url($thumbnail_id, false); } } } break; case 'browsecategory': //Categories $term = get_term_by('slug', get_query_var('category'), wpbdp_categories_taxonomy()); $fb_title = esc_attr(strip_tags(stripslashes($term->name))) . ' - ' . $fb_title; $fb_set_title_tag = 1; $fb_url = get_term_link($term); if (trim($term->description) != '') { $fb_desc = trim($term->description); } break; case 'main': //Main page //No changes break; default: //No changes break; } } } } else { global $wp_query; //Other pages - Defaults $fb_title = esc_attr(strip_tags(stripslashes(get_bloginfo('name')))); //$fb_url=get_option('home').(intval($fb_url_add_trailing)==1 ? '/' : ''); //2013-11-4 changed from 'siteurl' to 'home' $fb_url = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; //Not really canonical but will work for now //These are only used in posts/pages $fb_article_sections_show = 0; $fb_article_dates_show = 0; $fb_author_show = 0; $fb_author_show_meta = 0; $fb_author_show_linkrelgp = 0; $fb_author_show_twitter = 0; switch (trim($fb_desc_homepage)) { case 'custom': $fb_desc = esc_attr(strip_tags(stripslashes($fb_desc_homepage_customtext))); //WPML? if (function_exists('icl_object_id') && function_exists('icl_register_string')) { global $sitepress; if (ICL_LANGUAGE_CODE != $sitepress->get_default_language()) { $fb_desc = icl_t('wd-fb-og', 'wd_fb_og_desc_homepage_customtext', $fb_desc); } else { //We got it already } } break; default: $fb_desc = esc_attr(strip_tags(stripslashes(get_bloginfo('description')))); break; } if (is_category()) { $fb_title = esc_attr(strip_tags(stripslashes(single_cat_title('', false)))); $term = $wp_query->get_queried_object(); $fb_url = get_term_link($term, $term->taxonomy); $cat_desc = trim(esc_attr(strip_tags(stripslashes(category_description())))); if (trim($cat_desc) != '') { $fb_desc = $cat_desc; } } else { if (is_tag()) { $fb_title = esc_attr(strip_tags(stripslashes(single_tag_title('', false)))); $term = $wp_query->get_queried_object(); $fb_url = get_term_link($term, $term->taxonomy); $tag_desc = trim(esc_attr(strip_tags(stripslashes(tag_description())))); if (trim($tag_desc) != '') { $fb_desc = $tag_desc; } } else { if (is_tax()) { $fb_title = esc_attr(strip_tags(stripslashes(single_term_title('', false)))); $term = $wp_query->get_queried_object(); $fb_url = get_term_link($term, $term->taxonomy); //WooCommerce if (intval($fb_image_show) == 1 || intval($fb_image_show_schema) == 1 || intval($fb_image_show_twitter) == 1) { if (class_exists('woocommerce') && $fb_wc_usecategthumb == 1 && is_product_category()) { if ($thumbnail_id = get_woocommerce_term_meta($term->term_id, 'thumbnail_id', true)) { if ($image = wp_get_attachment_url($thumbnail_id)) { $fb_image = $image; } } } } } else { if (is_search()) { $fb_title = esc_attr(strip_tags(stripslashes(__('Search for') . ' "' . get_search_query() . '"'))); $fb_url = get_search_link(); } else { if (is_author()) { $fb_title = esc_attr(strip_tags(stripslashes(get_the_author_meta('display_name', get_query_var('author'))))); $fb_url = get_author_posts_url(get_query_var('author'), get_query_var('author_name')); } else { if (is_archive()) { if (is_day()) { $fb_title = esc_attr(strip_tags(stripslashes(get_query_var('day') . ' ' . single_month_title(' ', false) . ' ' . __('Archives')))); $fb_url = get_day_link(get_query_var('year'), get_query_var('monthnum'), get_query_var('day')); } else { if (is_month()) { $fb_title = esc_attr(strip_tags(stripslashes(single_month_title(' ', false) . ' ' . __('Archives')))); $fb_url = get_month_link(get_query_var('year'), get_query_var('monthnum')); } else { if (is_year()) { $fb_title = esc_attr(strip_tags(stripslashes(get_query_var('year') . ' ' . __('Archives')))); $fb_url = get_year_link(get_query_var('year')); } } } } else { if (is_front_page()) { $fb_url = get_option('home') . (intval($fb_url_add_trailing) == 1 ? '/' : ''); $fb_type = trim($fb_type_homepage == '' ? 'website' : $fb_type_homepage); } else { //Others... Defaults already set up there } } } } } } } } //og:type for WPML root page? if (function_exists('icl_object_id') && function_exists('icl_register_string')) { if (class_exists('WPML_Root_Page')) { if (WPML_Root_Page::is_current_request_root()) { $fb_type = trim($fb_type_homepage == '' ? 'website' : $fb_type_homepage); } } } //YOAST? if ($fb_show_wpseoyoast == 1) { if (defined('WPSEO_VERSION')) { $wpseo = WPSEO_Frontend::get_instance(); //App ID - From our plugin //Admin ID - From our plugin //Locale - From our plugin //Sitename - From our plugin //Title - From WPSEO $fb_title = strip_tags($wpseo->title(false)); //Title - SubHeading plugin if ($fb_show_subheading == 1) { if (webdados_fb_open_graph_subheadingactive()) { if (isset($fb_subheading_position) && $fb_subheading_position == 'before') { $fb_title = trim(trim(get_the_subheading()) . ' - ' . trim($fb_title), ' -'); } else { $fb_title = trim(trim($fb_title) . ' - ' . trim(get_the_subheading()), ' -'); } } } //URL - From WPSEO $fb_url = $wpseo->canonical(false); //Description - From WPSEO or our plugin $fb_desc_temp = $wpseo->metadesc(false); $fb_desc = strip_tags(trim($fb_desc_temp) != '' ? trim($fb_desc_temp) : $fb_desc); //Image - From our plugin } } //WooCommerce - Additional product images? if (intval($fb_image_show) == 1 && class_exists('woocommerce') && $fb_wc_useproductgallery == 1 && is_product()) { global $post; $product = new WC_Product($post->ID); if ($attachment_ids = $product->get_gallery_attachment_ids()) { foreach ($attachment_ids as $attachment_id) { if ($image_link = wp_get_attachment_url($attachment_id)) { if (trim($image_link) != '') { $fb_image_additional[] = trim($image_link); } } } } } //Apply Filters $fb_locale = apply_filters('fb_og_locale', $fb_locale); $fb_title = apply_filters('fb_og_title', $fb_title); $fb_url = apply_filters('fb_og_url', $fb_url); $fb_type = apply_filters('fb_og_type', $fb_type); $fb_desc = apply_filters('fb_og_desc', $fb_desc); $fb_image = apply_filters('fb_og_image', $fb_image); $fb_image_additional = apply_filters('fb_og_image_additional', $fb_image_additional); //Image size $fb_image_size = false; if (intval($fb_image_show) == 1 && trim($fb_image) != '') { if (intval($fb_image_size_show) == 1) { if (isset($GLOBALS['webdados_fb_img_size'])) { //Already fetched $fb_image_size = $GLOBALS['webdados_fb_img_size']; } else { $fb_image_size = webdados_fb_open_graph_getimagesize($fb_image); } } } else { $fb_image_size_show = 0; } //No spaces on URLs if (isset($fb_url) && trim($fb_url) != '') { $fb_url = str_replace(' ', '%20', trim($fb_url)); } if (isset($fb_publisher) && trim($fb_publisher) != '') { $fb_publisher = str_replace(' ', '%20', trim($fb_publisher)); } if (isset($fb_publisher_schema) && trim($fb_publisher_schema) != '') { $fb_publisher_schema = str_replace(' ', '%20', trim($fb_publisher_schema)); } if (isset($fb_author) && trim($fb_author) != '') { $fb_author = str_replace(' ', '%20', trim($fb_author)); } if (isset($fb_author_linkrelgp) && trim($fb_author_linkrelgp) != '') { $fb_author_linkrelgp = str_replace(' ', '%20', trim($fb_author_linkrelgp)); } if (isset($fb_image) && trim($fb_image) != '') { $fb_image = str_replace(' ', '%20', trim($fb_image)); } if (isset($fb_image_additional) && is_array($fb_image_additional) && count($fb_image_additional)) { foreach ($fb_image_additional as $key => $value) { $fb_image_additional[$key] = str_replace(' ', '%20', trim($value)); } } //If no description let's just add the title as a last resort if (trim($fb_desc) == '') { $fb_desc = $fb_title; } $html = ' <!-- START - ' . $webdados_fb_open_graph_plugin_name . ' ' . $webdados_fb_open_graph_plugin_version . ' --> '; if (intval($fb_app_id_show) == 1 && trim($fb_app_id) != '') { $html .= '<meta property="fb:app_id" content="' . trim(esc_attr($fb_app_id)) . '"/> '; } if (intval($fb_admin_id_show) == 1 && trim($fb_admin_id) != '') { $html .= '<meta property="fb:admins" content="' . trim(esc_attr($fb_admin_id)) . '"/> '; } if (intval($fb_locale_show) == 1) { $html .= '<meta property="og:locale" content="' . trim(esc_attr(trim($fb_locale) != '' ? trim($fb_locale) : trim(get_locale()))) . '"/> '; } if (intval($fb_sitename_show) == 1) { $html .= '<meta property="og:site_name" content="' . trim(esc_attr(get_bloginfo('name'))) . '"/> '; } if (intval($fb_title_show) == 1) { $html .= '<meta property="og:title" content="' . trim(esc_attr($fb_title)) . '"/> '; } if (intval($fb_set_title_tag) == 1) { //Does nothing so far. We try to create the <title> tag but it's too late now } if (intval($fb_title_show_schema) == 1) { $html .= '<meta itemprop="name" content="' . trim(esc_attr($fb_title)) . '"/> '; } if (intval($fb_title_show_twitter) == 1) { $html .= '<meta name="twitter:title" content="' . trim(esc_attr($fb_title)) . '"/> '; } if (intval($fb_url_show) == 1) { $html .= '<meta property="og:url" content="' . trim(esc_attr($fb_url)) . '"/> '; } if (intval($fb_url_show_twitter) == 1) { $html .= '<meta name="twitter:url" content="' . trim(esc_attr($fb_url)) . '"/> '; } if (intval($fb_url_canonical) == 1) { $html .= '<link rel="canonical" href="' . trim(esc_attr($fb_url)) . '"/> '; } if (intval($fb_type_show) == 1) { $html .= '<meta property="og:type" content="' . trim(esc_attr($fb_type)) . '"/> '; } if (intval($fb_article_dates_show) == 1 && trim($fb_article_pub_date) != '') { $html .= '<meta property="article:published_time" content="' . trim(esc_attr($fb_article_pub_date)) . '"/> '; } if (intval($fb_article_dates_show) == 1 && trim($fb_article_mod_date) != '') { $html .= '<meta property="article:modified_time" content="' . trim(esc_attr($fb_article_mod_date)) . '" /> <meta property="og:updated_time" content="' . trim(esc_attr($fb_article_mod_date)) . '" /> '; } if (intval($fb_article_sections_show) == 1 && isset($fb_sections) && is_array($fb_sections) && count($fb_sections) > 0) { foreach ($fb_sections as $fb_section) { $html .= '<meta property="article:section" content="' . trim(esc_attr($fb_section)) . '"/> '; } } if (intval($fb_publisher_show) == 1 && trim($fb_publisher) != '') { $html .= '<meta property="article:publisher" content="' . trim(esc_attr($fb_publisher)) . '"/> '; } if (intval($fb_publisher_show_schema) == 1 && trim($fb_publisher_schema) != '') { $html .= '<link rel="publisher" href="' . trim(esc_attr($fb_publisher_schema)) . '"/> '; } if (intval($fb_publisher_show_twitter) == 1 && trim($fb_publisher_twitteruser) != '') { $html .= '<meta name="twitter:site" content="@' . trim(esc_attr($fb_publisher_twitteruser)) . '"/> '; } if (intval($fb_author_show) == 1 && $fb_author != '') { $html .= '<meta property="article:author" content="' . trim(esc_attr($fb_author)) . '"/> '; } if (intval($fb_author_show_meta) == 1 && $fb_author_meta != '') { $html .= '<meta name="author" content="' . trim(esc_attr($fb_author_meta)) . '"/> '; } if (intval($fb_author_show_linkrelgp) == 1 && trim($fb_author_linkrelgp) != '') { $html .= '<link rel="author" href="' . trim(esc_attr($fb_author_linkrelgp)) . '"/> '; } if (intval($fb_author_show_twitter) == 1 && (trim($fb_author_twitter) != '' || trim($fb_publisher_twitteruser) != '')) { $html .= '<meta name="twitter:creator" content="@' . trim(esc_attr(trim($fb_author_twitter) != '' ? trim($fb_author_twitter) : trim($fb_publisher_twitteruser))) . '"/> '; } if (intval($fb_desc_show) == 1) { $html .= '<meta property="og:description" content="' . trim(esc_attr($fb_desc)) . '"/> '; } if (intval($fb_desc_show_meta) == 1) { $html .= '<meta name="description" content="' . trim(esc_attr($fb_desc)) . '"/> '; } if (intval($fb_desc_show_schema) == 1) { $html .= '<meta itemprop="description" content="' . trim(esc_attr($fb_desc)) . '"/> '; } if (intval($fb_desc_show_twitter) == 1) { $html .= '<meta name="twitter:description" content="' . trim(esc_attr($fb_desc)) . '"/> '; } if (intval($fb_image_show) == 1 && trim($fb_image) != '') { $html .= '<meta property="og:image" content="' . trim(esc_attr($fb_image)) . '"/> '; } if (intval($fb_image_show) == 1 && isset($fb_image_additional) && is_array($fb_image_additional) && count($fb_image_additional) > 0) { foreach ($fb_image_additional as $fb_image_additional_temp) { $html .= '<meta property="og:image" content="' . trim(esc_attr($fb_image_additional_temp)) . '"/> '; } } else { //We only show the image size if we only have one image if (intval($fb_image_size_show) == 1 && isset($fb_image_size) && is_array($fb_image_size) != '') { $html .= '<meta property="og:image:width" content="' . intval(esc_attr($fb_image_size[0])) . '"/> <meta property="og:image:height" content="' . intval(esc_attr($fb_image_size[1])) . '"/> '; } } if (intval($fb_image_show_schema) == 1 && trim($fb_image) != '') { $html .= '<meta itemprop="image" content="' . trim(esc_attr($fb_image)) . '"/> '; } if (intval($fb_image_show_twitter) == 1 && trim($fb_image) != '') { $html .= '<meta name="twitter:image" content="' . trim(esc_attr($fb_image)) . '"/> '; } if (intval($fb_title_show_twitter) == 1 || intval($fb_url_show_twitter) == 1 || $fb_author_show_twitter == 1 || $fb_publisher_show_twitter == 1 || $fb_image_show_twitter == 1) { $html .= '<meta name="twitter:card" content="' . trim(esc_attr($fb_twitter_card_type)) . '"/> '; } $html .= '<!-- END - ' . $webdados_fb_open_graph_plugin_name . ' --> '; echo $html; }
public function insert_meta_tags() { global $webdados_fb, $wp_query; //Also set Title Tag? - Needed?? $fb_set_title_tag = 0; //Init values $fb_locale = ''; $fb_title = ''; $fb_url = ''; $fb_desc = ''; $fb_image = ''; $fb_type = 'article'; $fb_author = ''; $fb_author_meta = ''; $fb_author_linkrelgp = ''; $fb_author_twitter = ''; $fb_article_pub_date = ''; $fb_article_mod_date = ''; $fb_image_additional = array(); $fb_additional_tags = array('name' => array(), 'property' => array()); $fb_publisher = trim($this->options['fb_publisher']); $fb_publisher_schema = trim($this->options['fb_publisher_schema']); $fb_publisher_twitteruser = trim($this->options['fb_publisher_twitteruser']); //Homepage Description switch ($this->options['fb_desc_homepage']) { case 'custom': $fb_desc_homepage = $this->options['fb_desc_homepage_customtext']; //WPML? if ($webdados_fb->is_wpml_active()) { global $sitepress; if (ICL_LANGUAGE_CODE != $sitepress->get_default_language()) { $fb_desc_homepage = icl_t('wd-fb-og', 'wd_fb_og_desc_homepage_customtext', $fb_desc_homepage); } } break; default: $fb_desc_homepage = get_bloginfo('description'); break; } //Open tag $html = ' <!-- START - ' . WEBDADOS_FB_PLUGIN_NAME . ' ' . WEBDADOS_FB_VERSION . ' --> '; if (is_singular()) { global $post; // Title //It's a Post or a Page or an attachment page - It can also be the homepage if it's set as a page $fb_title = esc_attr(wp_strip_all_tags(stripslashes($post->post_title), true)); //SubHeading if (isset($this->options['fb_show_subheading']) && intval($this->options['fb_show_subheading']) == 1 && $webdados_fb->is_subheading_plugin_active()) { if (isset($this->options['fb_subheading_position']) && $this->options['fb_subheading_position'] == 'before') { $fb_title = trim(trim(get_the_subheading()) . ' - ' . trim($fb_title), ' -'); } else { $fb_title = trim(trim($fb_title) . ' - ' . trim(get_the_subheading()), ' -'); } } // URL $fb_url = get_permalink(); // Type if it's a homepage page if (is_front_page()) { /* Fix homepage type when it's a static page */ $fb_url = get_option('home') . (intval($this->options['fb_url_add_trailing']) == 1 ? '/' : ''); $fb_type = trim($this->options['fb_type_homepage'] == '' ? 'website' : $this->options['fb_type_homepage']); } // Description if (trim($post->post_excerpt) != '') { //If there's an excerpt that's what we'll use $fb_desc = trim($post->post_excerpt); } else { //If not we grab it from the content $fb_desc = trim($post->post_content); } // Image if (intval($this->options['fb_image_show']) == 1 || intval($this->options['fb_image_show_schema']) == 1 || intval($this->options['fb_image_show_twitter']) == 1) { $fb_image = $this->get_post_image(); } // Author $author_id = $post->post_author; if ($author_id > 0 && !(is_page() && intval($this->options['fb_author_hide_on_pages']) == 1)) { $fb_author = get_the_author_meta('facebook', $author_id); $fb_author_meta = get_the_author_meta('display_name', $author_id); $fb_author_linkrelgp = get_the_author_meta('googleplus', $author_id); $fb_author_twitter = get_the_author_meta('twitter', $author_id); } //Published and Modified time - We should check this out and maybe have it for any kind of post... if (is_singular('post')) { $fb_article_pub_date = get_the_date('c'); $fb_article_mod_date = get_the_modified_date('c'); } else { //Reset dates show because we're not on posts $this->options['fb_article_dates_show'] = 0; } //Sections if (is_singular('post')) { $cats = get_the_category(); if (!is_wp_error($cats) && (is_array($cats) && count($cats) > 0)) { $fb_sections = array(); foreach ($cats as $cat) { $fb_sections[] = $cat->name; } } } else { $this->options['fb_article_sections_show'] = 0; } // Business Directory Plugin if (isset($this->options['fb_show_businessdirectoryplugin']) && $webdados_fb->is_business_directory_active()) { global $wpbdp; $bdp_action = wpbdp_current_action(); $bdp_disable_cpt = wpbdp_get_option('disable-cpt'); $current_view_object = $wpbdp->dispatcher->current_view_object(); switch ($bdp_action) { case 'show_listing': $fb_title = trim(esc_attr(wp_strip_all_tags(stripslashes($this->post->post_title), true)) . ' - ' . $fb_title, ' -'); $fb_set_title_tag = 1; $fb_url = get_permalink($this->post->ID); if (trim($this->post->post_excerpt) != '') { //If there's an excerpt that's what we'll use $fb_desc = trim($this->post->post_excerpt); } else { //If not we grab it from the content $fb_desc = trim($this->post->post_content); } if (intval($this->options['fb_image_show']) == 1 || intval($this->options['fb_image_show_schema']) == 1 || intval($this->options['fb_image_show_twitter']) == 1) { $thumbdone = false; if (intval($this->options['fb_image_use_featured']) == 1) { //Featured if ($id_attachment = get_post_thumbnail_id($this->post->ID)) { //There's a featured/thumbnail image for this listing $fb_image = wp_get_attachment_url($id_attachment, false); $thumbdone = true; } else { } } if (!$thumbdone) { //Main image loaded if ($thumbnail_id = wpbdp_listings_api()->get_thumbnail_id($this->post->ID)) { $fb_image = wp_get_attachment_url($thumbnail_id, false); $thumbdone = true; } } } } } // WooCommerce if ($webdados_fb->is_woocommerce_active() && is_product()) { $fb_type = 'product'; $product = new WC_Product($post->ID); //Price $fb_additional_tags['property']['og_price_amount'] = array($product->get_price_including_tax()); if (function_exists('get_woocommerce_currency')) { $fb_additional_tags['property']['og_price_currency'] = array(get_woocommerce_currency()); } $fb_additional_tags['name']['twitter_label1'] = array(__('Price', 'wd-fb-og')); if (function_exists('get_woocommerce_currency')) { $fb_additional_tags['name']['twitter_data1'] = array($product->get_price_including_tax() . ' ' . get_woocommerce_currency()); } //Additional product images? if (intval($this->options['fb_image_show']) == 1 && $this->options['fb_wc_useproductgallery'] == 1) { if ($attachment_ids = $product->get_gallery_attachment_ids()) { foreach ($attachment_ids as $attachment_id) { if ($image_link = wp_get_attachment_url($attachment_id)) { if (trim($image_link) != '') { $fb_image_additional[] = array('fb_image' => trim($image_link), 'png_overlay' => intval($this->options['fb_wc_usepg_png_overlay']) ? true : false); } } } } } } } else { //Other pages - Defaults $fb_title = esc_attr(wp_strip_all_tags(stripslashes(get_bloginfo('name')), true)); $fb_url = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; //Not really canonical but will work for now $fb_image = trim($this->options['fb_image']); $this->options['fb_article_sections_show'] = 0; $this->options['fb_article_dates_show'] = 0; $this->options['fb_author_show'] = 0; $this->options['fb_author_show_meta'] = 0; $this->options['fb_author_show_linkrelgp'] = 0; $this->options['fb_author_show_twitter'] = 0; $this->options['fb_author_show_twitter'] = 0; //Category if (is_category()) { $fb_title = esc_attr(wp_strip_all_tags(stripslashes(single_cat_title('', false)), true)); $term = $wp_query->get_queried_object(); $fb_url = get_term_link($term, $term->taxonomy); $cat_desc = trim(esc_attr(wp_strip_all_tags(stripslashes(category_description()), true))); if (trim($cat_desc) != '') { $fb_desc = $cat_desc; } } else { if (is_tag()) { $fb_title = esc_attr(wp_strip_all_tags(stripslashes(single_tag_title('', false)), true)); $term = $wp_query->get_queried_object(); $fb_url = get_term_link($term, $term->taxonomy); $tag_desc = trim(esc_attr(wp_strip_all_tags(stripslashes(tag_description()), true))); if (trim($tag_desc) != '') { $fb_desc = $tag_desc; } } else { if (is_tax()) { $fb_title = esc_attr(wp_strip_all_tags(stripslashes(single_term_title('', false)), true)); $term = $wp_query->get_queried_object(); $fb_url = get_term_link($term, $term->taxonomy); $tax_desc = trim(esc_attr(wp_strip_all_tags(stripslashes(term_description()), true))); if (trim($tax_desc) != '') { $fb_desc = $tag_desc; } //WooCommerce if ($webdados_fb->is_woocommerce_active() && intval($this->options['fb_wc_usecategthumb']) == 1 && is_product_category()) { if (intval($this->options['fb_image_show']) == 1 || intval($this->options['fb_image_show_schema']) == 1 || intval($this->options['fb_image_show_twitter']) == 1) { if ($thumbnail_id = get_woocommerce_term_meta($term->term_id, 'thumbnail_id', true)) { if ($image = wp_get_attachment_url($thumbnail_id)) { $fb_image = $image; } } } } } else { if (is_search()) { $fb_title = esc_attr(wp_strip_all_tags(stripslashes(__('Search for', 'wd-fb-og') . ' "' . get_search_query() . '"'), true)); $fb_url = get_search_link(); } else { if (is_author()) { $fb_title = esc_attr(wp_strip_all_tags(stripslashes(get_the_author_meta('display_name', get_query_var('author'))), true)); $fb_url = get_author_posts_url(get_query_var('author'), get_query_var('author_name')); } else { if (is_archive()) { if (is_day()) { $fb_title = esc_attr(wp_strip_all_tags(stripslashes(get_query_var('day') . ' ' . single_month_title(' ', false) . ' ' . __('Archives', 'wd-fb-og')), true)); $fb_url = get_day_link(get_query_var('year'), get_query_var('monthnum'), get_query_var('day')); } else { if (is_month()) { $fb_title = esc_attr(wp_strip_all_tags(stripslashes(single_month_title(' ', false) . ' ' . __('Archives', 'wd-fb-og')), true)); $fb_url = get_month_link(get_query_var('year'), get_query_var('monthnum')); } else { if (is_year()) { $fb_title = esc_attr(wp_strip_all_tags(stripslashes(get_query_var('year') . ' ' . __('Archives', 'wd-fb-og')), true)); $fb_url = get_year_link(get_query_var('year')); } } } } else { if (is_front_page()) { $fb_url = get_option('home') . (intval($this->options['fb_url_add_trailing']) == 1 ? '/' : ''); $fb_type = trim($this->options['fb_type_homepage'] == '' ? 'website' : $this->options['fb_type_homepage']); $fb_desc = $fb_desc_homepage; } else { //Others... Defaults already set up there } } } } } } } } //og:type for WPML root page? if ($webdados_fb->is_wpml_active()) { if (class_exists('WPML_Root_Page')) { if (WPML_Root_Page::is_current_request_root()) { $fb_type = trim($this->options['fb_type_homepage'] == '' ? 'website' : $this->options['fb_type_homepage']); } } } //Default description, if empty until now if (trim($fb_desc) == '') { switch ($this->options['fb_desc_default_option']) { case 'custom': $fb_desc = $this->options['fb_desc_default']; //WPML? if ($webdados_fb->is_wpml_active()) { global $sitepress; if (ICL_LANGUAGE_CODE != $sitepress->get_default_language()) { $fb_desc = icl_t('wd-fb-og', 'wd_fb_og_fb_desc_default', $fb_desc); } } break; default: $fb_desc = $fb_desc_homepage; break; } } //Trim description $fb_desc = trim(str_replace(' ', ' ', $fb_desc)); //Non-breaking spaces are usefull on a meta description. We'll just convert them to normal spaces to really trim it $fb_desc = trim(intval($this->options['fb_desc_chars']) > 0 ? mb_substr(wp_strip_all_tags(strip_shortcodes(stripslashes($fb_desc), true)), 0, intval($this->options['fb_desc_chars'])) : wp_strip_all_tags(strip_shortcodes(stripslashes($fb_desc), true))); //YOAST SEO? if ($this->options['fb_show_wpseoyoast'] == 1) { if ($webdados_fb->is_yoast_seo_active()) { $wpseo = WPSEO_Frontend::get_instance(); //Title $fb_title_temp = $wpseo->title(false); $fb_title = wp_strip_all_tags(trim($fb_title_temp) != '' ? trim($fb_title_temp) : $fb_title, true); //Title - SubHeading plugin if ($fb_title_temp != '' && $this->options['fb_show_subheading'] == 1) { if ($webdados_fb->is_subheading_plugin_active()) { if (isset($this->options['fb_subheading_position']) && $this->options['fb_subheading_position'] == 'before') { $fb_title = trim(trim(get_the_subheading()) . ' - ' . trim($fb_title), ' -'); } else { $fb_title = trim(trim($fb_title) . ' - ' . trim(get_the_subheading()), ' -'); } } } //URL $fb_url_temp = $wpseo->canonical(false); $fb_url = wp_strip_all_tags(trim($fb_url_temp) != '' ? trim($fb_url_temp) : $fb_url, true); //Description $fb_desc_temp = $wpseo->metadesc(false); $fb_desc = wp_strip_all_tags(trim($fb_desc_temp) != '' ? trim($fb_desc_temp) : $fb_desc, true); } } //All in One SEO Pack? if ($this->options['fb_show_aioseop'] == 1) { if ($webdados_fb->is_aioseop_active()) { global $aiosp; //Title - Why are we getting the first post title on archives and homepage...?!? $fb_title_temp = $aiosp->orig_title; $fb_title = wp_strip_all_tags(trim($fb_title_temp) != '' ? trim($fb_title_temp) : $fb_title, true); //Title - SubHeading plugin if ($fb_title_temp != '' && $this->options['fb_show_subheading'] == 1) { if ($webdados_fb->is_subheading_plugin_active()) { if (isset($this->options['fb_subheading_position']) && $this->options['fb_subheading_position'] == 'before') { $fb_title = trim(trim(get_the_subheading()) . ' - ' . trim($fb_title), ' -'); } else { $fb_title = trim(trim($fb_title) . ' - ' . trim(get_the_subheading()), ' -'); } } } //URL - See aioseop_class.php 3898 - We have a problem because wp_query is not the same right now /*$fb_url_temp = ''; $aioseop_options = get_option( 'aioseop_options' ); $opts = $aiosp->meta_opts; var_dump($wp_query); $show_page = true; if ( ! empty( $aioseop_options['aiosp_no_paged_canonical_links'] ) ) { $show_page = false; } if ( $aioseop_options['aiosp_can'] ) { if ( ! empty( $aioseop_options['aiosp_customize_canonical_links'] ) && ! empty( $opts['aiosp_custom_link'] ) ) { $fb_url_temp = $opts['aiosp_custom_link']; } if ( empty( $url ) ) { $fb_url_temp = $aiosp->aiosp_mrt_get_url( $wp_query, $show_page ); } $fb_url_temp = $aiosp->validate_url_scheme( $fb_url_temp ); $fb_url_temp = apply_filters( 'aioseop_canonical_url', $fb_url_temp ); } var_dump($fb_url_temp); $fb_url = wp_strip_all_tags( trim($fb_url_temp)!='' ? trim($fb_url_temp) : $fb_url, true);*/ //Description - Why are we getting the first post description on archives and homepage...?!? if (is_home() && !is_front_page()) { $post = aiosp_common::get_blog_page(); } else { $post = $aiosp->get_queried_object(); } $fb_desc_temp = apply_filters('aioseop_description', $aiosp->get_main_description($post)); $fb_desc = wp_strip_all_tags(trim($fb_desc_temp) != '' ? trim($fb_desc_temp) : $fb_desc, true); } } //Apply Filters $fb_locale = apply_filters('fb_og_locale', $fb_locale); $fb_title = apply_filters('fb_og_title', $fb_title); $fb_url = apply_filters('fb_og_url', $fb_url); $fb_type = apply_filters('fb_og_type', $fb_type); $fb_desc = apply_filters('fb_og_desc', $fb_desc); $fb_image = apply_filters('fb_og_image', $fb_image); $fb_image_additional = apply_filters('fb_og_image_additional', $fb_image_additional); //Image size $fb_image_size = false; if (intval($this->options['fb_image_show']) == 1 && trim($fb_image) != '') { if (intval($this->options['fb_image_size_show']) == 1) { if (isset($this->image_size) && is_array($this->image_size)) { //Already fetched $fb_image_size = $this->image_size; } else { $fb_image_size = $this->get_open_graph_image_size($fb_image); } } } else { $this->options['fb_image_show'] = 0; } //Image overlay - Single? if (intval($this->options['fb_image_show']) == 1 && intval($this->options['fb_image_overlay']) == 1 && apply_filters('fb_og_image_overlay', true, $fb_image)) { //Single $temp_fb_image_overlay = $this->get_image_with_overlay($fb_image); if ($temp_fb_image_overlay['overlay']) { $fb_image = $temp_fb_image_overlay['fb_image']; //We know the exact size now. We better just show it, right? $this->options['fb_image_size_show'] = 1; $fb_image_size = array(WEBDADOS_FB_W, WEBDADOS_FB_H); } //Additional if (isset($fb_image_additional) && is_array($fb_image_additional) && count($fb_image_additional) > 0) { foreach ($fb_image_additional as $key => $value) { if ($value['png_overlay']) { $temp_fb_image_overlay = $this->get_image_with_overlay($value['fb_image']); if ($temp_fb_image_overlay['overlay']) { $fb_image_additional[$key]['fb_image'] = $temp_fb_image_overlay['fb_image']; } } } } } //No spaces on URLs if (isset($fb_url) && trim($fb_url) != '') { $fb_url = str_replace(' ', '%20', trim($fb_url)); } if (isset($fb_publisher) && trim($fb_publisher) != '') { $fb_publisher = str_replace(' ', '%20', trim($fb_publisher)); } if (isset($fb_publisher_schema) && trim($fb_publisher_schema) != '') { $fb_publisher_schema = str_replace(' ', '%20', trim($fb_publisher_schema)); } if (isset($fb_author) && trim($fb_author) != '') { $fb_author = str_replace(' ', '%20', trim($fb_author)); } if (isset($fb_author_linkrelgp) && trim($fb_author_linkrelgp) != '') { $fb_author_linkrelgp = str_replace(' ', '%20', trim($fb_author_linkrelgp)); } if (isset($fb_image) && trim($fb_image) != '') { $fb_image = str_replace(' ', '%20', trim($fb_image)); } if (isset($fb_image_additional) && is_array($fb_image_additional) && count($fb_image_additional)) { foreach ($fb_image_additional as $key => $value) { $fb_image_additional[$key]['fb_image'] = str_replace(' ', '%20', trim($value['fb_image'])); } } //If there's still no description let's just add the title as a last resort if (trim($fb_desc) == '') { $fb_desc = $fb_title; } //Print tags // Facebook $html .= ' <!-- Facebook Open Graph --> '; //Locale if (intval($this->options['fb_locale_show']) == 1) { $html .= ' <meta property="og:locale" content="' . trim(esc_attr(trim($this->options['fb_locale']) != '' ? trim($this->options['fb_locale']) : trim(get_locale()))) . '"/> '; } //Site name if (intval($this->options['fb_sitename_show']) == 1) { $html .= ' <meta property="og:site_name" content="' . trim(esc_attr(get_bloginfo('name'))) . '"/> '; } //Title if (intval($this->options['fb_title_show']) == 1 && trim($fb_title) != '') { $html .= ' <meta property="og:title" content="' . trim(esc_attr($fb_title)) . '"/> '; } //URL if (intval($this->options['fb_url_show']) == 1 && trim($fb_url) != '') { $html .= ' <meta property="og:url" content="' . trim(esc_attr($fb_url)) . '"/> '; } //Type if (intval($this->options['fb_type_show']) == 1 && trim($fb_type) != '') { $html .= ' <meta property="og:type" content="' . trim(esc_attr($fb_type)) . '"/> '; } //Description if (intval($this->options['fb_desc_show']) == 1 && trim($fb_desc) != '') { $html .= ' <meta property="og:description" content="' . trim(esc_attr($fb_desc)) . '"/> '; } //Image if (intval($this->options['fb_image_show']) == 1 && trim($fb_image) != '') { $html .= ' <meta property="og:image" content="' . trim(esc_attr($fb_image)) . '"/> '; } //Additional Images if (intval($this->options['fb_image_show']) == 1 && isset($fb_image_additional) && is_array($fb_image_additional) && count($fb_image_additional) > 0) { foreach ($fb_image_additional as $fb_image_additional_temp) { $html .= ' <meta property="og:image" content="' . trim(esc_attr($fb_image_additional_temp['fb_image'])) . '"/> '; } } else { //Image Size - We only show the image size if we only have one image if (intval($this->options['fb_image_size_show']) == 1 && isset($fb_image_size) && is_array($fb_image_size)) { $html .= ' <meta property="og:image:width" content="' . intval(esc_attr($fb_image_size[0])) . '"/> <meta property="og:image:height" content="' . intval(esc_attr($fb_image_size[1])) . '"/> '; } } //Dates if (intval($this->options['fb_article_dates_show']) == 1 && trim($fb_article_pub_date) != '') { $html .= ' <meta property="article:published_time" content="' . trim(esc_attr($fb_article_pub_date)) . '"/> '; } if (intval($this->options['fb_article_dates_show']) == 1 && trim($fb_article_mod_date) != '') { $html .= ' <meta property="article:modified_time" content="' . trim(esc_attr($fb_article_mod_date)) . '" /> <meta property="og:updated_time" content="' . trim(esc_attr($fb_article_mod_date)) . '" /> '; } //Sections if (intval($this->options['fb_article_sections_show']) == 1 && isset($fb_sections) && is_array($fb_sections) && count($fb_sections) > 0) { foreach ($fb_sections as $fb_section) { $html .= ' <meta property="article:section" content="' . trim(esc_attr($fb_section)) . '"/> '; } } //Author if (intval($this->options['fb_author_show']) == 1 && $fb_author != '') { $html .= ' <meta property="article:author" content="' . trim(esc_attr($fb_author)) . '"/> '; } //Publisher if (intval($this->options['fb_publisher_show']) == 1 && trim($fb_publisher) != '') { $html .= ' <meta property="article:publisher" content="' . trim(esc_attr($fb_publisher)) . '"/> '; } //App ID if (intval($this->options['fb_app_id_show']) == 1 && trim($this->options['fb_app_id']) != '') { $html .= ' <meta property="fb:app_id" content="' . trim(esc_attr($this->options['fb_app_id'])) . '"/> '; } //Admins if (intval($this->options['fb_admin_id_show']) == 1 && trim($this->options['fb_admin_id']) != '') { $html .= ' <meta property="fb:admins" content="' . trim(esc_attr($this->options['fb_admin_id'])) . '"/> '; } // Schema $html .= ' <!-- Google+ / Schema.org --> '; //Title if (intval($this->options['fb_title_show_schema']) == 1 && trim($fb_title) != '') { $html .= ' <meta itemprop="name" content="' . trim(esc_attr($fb_title)) . '"/> '; } //Description if (intval($this->options['fb_desc_show_schema']) == 1 && trim($fb_desc) != '') { $html .= ' <meta itemprop="description" content="' . trim(esc_attr($fb_desc)) . '"/> '; } //Image if (intval($this->options['fb_image_show_schema']) == 1 && trim($fb_image) != '') { $html .= ' <meta itemprop="image" content="' . trim(esc_attr($fb_image)) . '"/> '; } //Author if (intval($this->options['fb_author_show_linkrelgp']) == 1 && trim($fb_author_linkrelgp) != '') { $html .= ' <link rel="author" href="' . trim(esc_attr($fb_author_linkrelgp)) . '"/> '; } //Publisher if (intval($this->options['fb_publisher_show_schema']) == 1 && trim($fb_publisher_schema) != '') { $html .= ' <link rel="publisher" href="' . trim(esc_attr($fb_publisher_schema)) . '"/> '; } // Twitter $html .= ' <!-- Twitter Cards --> '; //Title if (intval($this->options['fb_title_show_twitter']) == 1 && trim($fb_title) != '') { $html .= ' <meta name="twitter:title" content="' . trim(esc_attr($fb_title)) . '"/> '; } //URL if (intval($this->options['fb_url_show_twitter']) == 1 && trim($fb_url) != '') { $html .= ' <meta name="twitter:url" content="' . trim(esc_attr($fb_url)) . '"/> '; } //Description if (intval($this->options['fb_desc_show_twitter']) == 1 && trim($fb_desc) != '') { $html .= ' <meta name="twitter:description" content="' . trim(esc_attr($fb_desc)) . '"/> '; } //Image if (intval($this->options['fb_image_show_twitter']) == 1 && trim($fb_image) != '') { $html .= ' <meta name="twitter:image" content="' . trim(esc_attr($fb_image)) . '"/> '; } //Twitter Card if (intval($this->options['fb_title_show_twitter']) == 1 || intval($this->options['fb_url_show_twitter']) == 1 || intval($this->options['fb_desc_show_twitter']) == 1 || intval($this->options['fb_publisher_show_twitter']) == 1 || intval($this->options['fb_image_show_twitter']) == 1) { $html .= ' <meta name="twitter:card" content="' . trim(esc_attr($this->options['fb_twitter_card_type'])) . '"/> '; } //Author if (intval($this->options['fb_author_show_twitter']) == 1 && trim($fb_author_twitter) != '') { $html .= ' <meta name="twitter:creator" content="@' . trim(esc_attr($fb_author_twitter)) . '"/> '; } //Publisher if (intval($this->options['fb_publisher_show_twitter']) == 1 && trim($fb_publisher_twitteruser) != '') { $html .= ' <meta name="twitter:site" content="@' . trim(esc_attr($fb_publisher_twitteruser)) . '"/> '; } // SEO $html .= ' <!-- SEO --> '; //Title if (intval($fb_set_title_tag) == 1 && trim($fb_title) != '') { //Does nothing so far. We try to create the <title> tag but it's too late now //We should use wp_title(), but do we want to? This is only because Business Directory Plugin and they seem to have it covered by now... } //URL if (intval($this->options['fb_url_canonical']) == 1) { $html .= ' <link rel="canonical" href="' . trim(esc_attr($fb_url)) . '"/> '; } //Description if (intval($this->options['fb_desc_show_meta']) == 1 && trim($fb_desc) != '') { $html .= ' <meta name="description" content="' . trim(esc_attr($fb_desc)) . '"/> '; } //Author if (intval($this->options['fb_author_show_meta']) == 1 && $fb_author_meta != '') { $html .= ' <meta name="author" content="' . trim(esc_attr($fb_author_meta)) . '"/> '; } //Publisher if (intval($this->options['fb_publisher_show_meta']) == 1) { $html .= ' <meta name="publisher" content="' . trim(esc_attr(get_bloginfo('name'))) . '"/> '; } // SEO $html .= ' <!-- Misc. tags --> '; foreach ($fb_additional_tags as $type => $tags) { foreach ($tags as $tag => $values) { foreach ($values as $value) { $html .= ' <meta ' . $type . '="' . str_replace('_', ':', trim($tag)) . '" content="' . trim(esc_attr($value)) . '"/> '; } } } //Close tag $html .= '<!-- END - ' . WEBDADOS_FB_PLUGIN_NAME . ' ' . WEBDADOS_FB_VERSION . ' --> '; echo $html; }