/** * Hook for event data * * @since 1.5.4 * * @param MC4WP_Form object $form * * @return void */ public static function filter__data($form) { $matches = array(); preg_match_all('/{:[a-z]{2}}(.*){:}/m', $form->content, $matches); $matches = $matches[0]; /** * @see tab Forms from 'Edit Form' page of MailChimp for WP * for example: wp-admin/admin.php?page=mailchimp-for-wp-forms&view=edit-form&form_id=%POST_ID% */ foreach ($matches as $match) { $form->content = str_replace($match, WPGlobus_Core::text_filter($match, WPGlobus::Config()->language), $form->content); $form->post->post_content = str_replace($match, WPGlobus_Core::text_filter($match, WPGlobus::Config()->language), $form->post->post_content); } /** * @see tab Messages from Edit Form page of MailChimp for WP */ foreach ($form->messages as $type => $attrs) { if (is_object($form->messages[$type])) { $form->messages[$type]->text = WPGlobus_Core::text_filter($attrs->text, WPGlobus::Config()->language); } else { if (is_string($form->messages[$type])) { /** * We don't need to filter string because in this case $form->messages array contains keys for meta. * @see $form->post_meta:protected * @see file default-form-messages.php * * @since 1.6.1 */ //$form->messages[ $type ] = WPGlobus_Core::text_filter( $attrs, WPGlobus::Config()->language ); } } } }
/** * Filter for event data * * @since 1.2.2 * @param array $json * @param WP_Post object $event * @param array $additional * * @return array */ public static function filter__events_data($json, $event, $additional) { if (!empty($json['title'])) { $json['title'] = WPGlobus_Core::text_filter($json['title'], WPGlobus::Config()->language); } return $json; }
/** * @since 1.5.4 */ public static function action__add_layer_html($slider, $slide) { /** * @todo find how to translate field "params" from "wp_revslider_slides" table * @see output.class.php:620 * @see db.class.php:130 */ $link = $slide->getParam('link', ''); if (!empty($link)) { self::$links[$link] = WPGlobus_Core::text_filter($link, WPGlobus::Config()->language); } }
/** * Load Customize Preview JS * Used by hook: 'customize_preview_init' * @see 'customize_preview_init' */ public static function action__customize_preview_init() { wp_enqueue_script('wpglobus-customize-preview', WPGlobus::$PLUGIN_DIR_URL . 'includes/js/wpglobus-customize-preview' . WPGlobus::SCRIPT_SUFFIX() . '.js', array('jquery', 'customize-preview'), WPGLOBUS_VERSION, true); wp_localize_script('wpglobus-customize-preview', 'WPGlobusCustomize', array('version' => WPGLOBUS_VERSION, 'blogname' => WPGlobus_Core::text_filter(get_option('blogname'), WPGlobus::Config()->language), 'blogdescription' => WPGlobus_Core::text_filter(get_option('blogdescription'), WPGlobus::Config()->language))); }
/** * Filter the value of an option. * @see filter 'option_' . $option in \wp-includes\option.php * * @since 1.0.0 * * @param mixed $options Value of the option. * @return mixed */ function on_translate_option($options) { if (is_admin() || is_object($options)) { return $options; } /** @todo for next versions with translation individual fields */ /** $translating_keys = array(); foreach( $this->keys as $opt=>$keys ) { $value = $options; $k = 0; for( $i=1; $i < count($keys); $i++ ) { if ( isset($keys[$i]) ) { $value = $value[$keys[$i]]; $k = $i; } } if ( $k > 0 && ! is_array($keys[$k]) ) { $translating_keys[] = $keys[$k]; } } */ if (is_array($options)) { foreach ($options as $key => $value) { if (is_array($value)) { $options[$key] = $this->on_translate_option($value); } else { $options[$key] = WPGlobus_Core::text_filter($value, WPGlobus::Config()->language); } /** @todo for next versions with translation individual fields */ /* if ( !empty($translating_keys) && in_array($key, $translating_keys) ) { $options[$key] = WPGlobus_Core::text_filter($value, WPGlobus::Config()->language); } */ } } elseif (is_string($options)) { $options = WPGlobus_Core::text_filter($options, WPGlobus::Config()->language); } return $options; }
/** * Add language tabs to wpseo metabox ( .wpseo-metabox-tabs-div ) */ public static function action__wpseo_tab_content() { /** @global WP_Post $post */ global $post; $type = empty($post) ? '' : $post->post_type; if (WPGlobus::O()->disabled_entity($type)) { return; } $permalink = array(); if ('publish' == $post->post_status) { $permalink['url'] = get_permalink($post->ID); $permalink['action'] = 'complete'; } else { $permalink['url'] = trailingslashit(home_url()); $permalink['action'] = ''; } ?> <div id="wpglobus-wpseo-tabs"> <?php /** * Use span with attributes 'data' for send to js script ids, names elements for which needs to be set new ids, names with language code. */ ?> <span id="wpglobus-wpseo-attr" data-ids="wpseosnippet,wpseosnippet_title,yoast_wpseo_focuskw,focuskwresults,yoast_wpseo_title,yoast_wpseo_title-length-warning,yoast_wpseo_metadesc,yoast_wpseo_metadesc-length,yoast_wpseo_metadesc_notice" data-names="yoast_wpseo_focuskw,yoast_wpseo_title,yoast_wpseo_metadesc" data-qtip="snippetpreviewhelp,focuskwhelp,titlehelp,metadeschelp"> </span> <ul class="wpglobus-wpseo-tabs-list"> <?php $order = 0; foreach (WPGlobus::Config()->open_languages as $language) { ?> <li id="wpseo-link-tab-<?php echo $language; ?> " data-language="<?php echo $language; ?> " data-order="<?php echo $order; ?> " class="wpglobus-wpseo-tab"><a href="#wpseo-tab-<?php echo $language; ?> "><?php echo WPGlobus::Config()->en_language_name[$language]; ?> </a> </li> <?php $order++; } ?> </ul> <?php $metadesc = get_post_meta($post->ID, '_yoast_wpseo_metadesc', true); $wpseotitle = get_post_meta($post->ID, '_yoast_wpseo_title', true); $focuskw = get_post_meta($post->ID, '_yoast_wpseo_focuskw', true); foreach (WPGlobus::Config()->open_languages as $language) { $permalink['url'] = WPGlobus_Utils::localize_url($permalink['url'], $language); $url = apply_filters('wpglobus_wpseo_permalink', $permalink['url'], $language); if ($url != $permalink['url']) { /* We accept that user's filter make complete permalink for draft */ /* @todo maybe need more investigation */ $permalink['action'] = 'complete'; } else { if ('publish' != $post->post_status) { /** * We cannot get post-name-full to make correct url here ( for draft & auto-draft ). We do it in JS * @see var wpseosnippet_url in wpglobus-wpseo-**.js */ $permalink['action'] = ''; } } ?> <div id="wpseo-tab-<?php echo $language; ?> " class="wpglobus-wpseo-general" data-language="<?php echo $language; ?> " data-url-<?php echo $language; ?> ="<?php echo $url; ?> " data-permalink="<?php echo $permalink['action']; ?> " data-metadesc="<?php echo esc_html(WPGlobus_Core::text_filter($metadesc, $language, WPGlobus::RETURN_EMPTY)); ?> " data-wpseotitle="<?php echo esc_html(WPGlobus_Core::text_filter($wpseotitle, $language, WPGlobus::RETURN_EMPTY)); ?> " data-focuskw="<?php echo WPGlobus_Core::text_filter($focuskw, $language, WPGlobus::RETURN_EMPTY); ?> "> </div> <?php } ?> </div> <?php }
/** * @covers WPGlobus_Core::translate_term */ public function test_translate_term() { /** * Term as a string */ $term = '{:en}term EN{:}{:ru}term RU{:}'; WPGlobus_Core::translate_term($term, 'en'); self::assertEquals('term EN', $term, 'term'); $term = '{:en}term EN{:}{:ru}term RU{:}'; WPGlobus_Core::translate_term($term, 'ru'); self::assertEquals('term RU', $term, 'term'); /** * Term as an object */ $term_object = new stdClass(); $term_object->name = '{:en}term name EN{:}{:ru}term name RU{:}'; $term_object->description = '{:en}term description EN{:}{:ru}term description RU{:}'; WPGlobus_Core::translate_term($term_object, 'en'); self::assertEquals('term name EN', $term_object->name, '$term_object->name'); self::assertEquals('term description EN', $term_object->description, '$term_object->description'); $term_object->name = '{:en}term name EN{:}{:ru}term name RU{:}'; $term_object->description = '{:en}term description EN{:}{:ru}term description RU{:}'; WPGlobus_Core::translate_term($term_object, 'ru'); self::assertEquals('term name RU', $term_object->name, '$term_object->name'); self::assertEquals('term description RU', $term_object->description, '$term_object->description'); }
} $opts = $helper->get_box_options($box->ID); $css = $opts['css']; $content = $box->post_content; $data_attrs = ''; $box_class = ''; $width = !empty($css['width']) ? $css['width'] : ''; // run filters on content $content = apply_filters('spu/popup/content', $content, $box); // Qtranslate support if (function_exists('qtrans_useCurrentLanguageIfNotFoundShowAvailable')) { $content = qtrans_useCurrentLanguageIfNotFoundShowAvailable($content); } // WPGlobus support if (class_exists('WPGlobus')) { $content = WPGlobus_Core::text_filter($content, WPGlobus::Config()->language); } do_action('spu/popup/before_popup', $box, $opts, $css); ?> <style type="text/css"> #spu-<?php echo $box->ID; ?> { background-color: <?php echo !empty($css['background_color']) ? esc_attr($css['background_color']) : 'white'; ?> ; <?php if (!empty($css['color'])) { ?>
/** * Convert string to text with default language * * @param mixed $data * * @return mixed $data */ public static function convert($data) { if (empty($data)) { return ''; } if (is_null($data)) { return $data; } if (is_bool($data)) { return $data; } if (is_float($data)) { return $data; } if (is_int($data)) { return $data; } if (is_string($data)) { $data = WPGlobus_Core::text_filter($data, WPGlobus::Config()->default_language, WPGlobus::RETURN_EMPTY); /** * Set double apostrophe for mySQL UPDATE */ return str_replace("'", "''", $data); } foreach ($data as $key => $value) { if (is_array($data)) { /** @noinspection AlterInForeachInspection */ $data[$key] = self::convert($value); } else { if (is_object($data)) { $data->{$key} = self::convert($value); } } } return $data; }
/** * Add language tabs to wpseo metabox ( .wpseo-metabox-tabs-div ) */ public static function action__wpseo_tab_content() { /** @global WP_Post $post */ global $post; $type = empty($post) ? '' : $post->post_type; if (WPGlobus::O()->disabled_entity($type)) { return; } $permalink = array(); if ('publish' === $post->post_status) { $permalink['url'] = get_permalink($post->ID); $permalink['action'] = 'complete'; } else { $permalink['url'] = trailingslashit(home_url()); $permalink['action'] = ''; } // #wpseo-metabox-tabs /** * Array of id to make multilingual */ $ids = array('wpseo-add-keyword-popup', 'wpseosnippet', 'snippet_preview', 'title_container', 'snippet_title', 'snippet_sitename', 'url_container', 'snippet_citeBase', 'snippet_cite', 'meta_container', 'snippet_meta', 'yoast_wpseo_focuskw_text_input', 'yoast_wpseo_focuskw', 'focuskwresults', 'yoast_wpseo_title', 'yoast_wpseo_metadesc', 'yoast_wpseo_linkdex', 'wpseo-pageanalysis', 'yoast-seo-content-analysis', 'YoastSEO-plugin-loading', 'snippet-editor-title', 'snippet-editor-slug', 'snippet-editor-meta-description'); $names = array('yoast_wpseo_focuskw_text_input', 'yoast_wpseo_focuskw', 'yoast_wpseo_title', 'yoast_wpseo_metadesc', 'yoast_wpseo_linkdex'); $qtip = array('snippetpreviewhelp', 'focuskw_text_inputhelp', 'pageanalysishelp', 'snippetpreview-help', 'focuskw_text_input-help', 'pageanalysis-help', 'snippetpreview-help-toggle', 'focuskw_text_input-help-toggle', 'pageanalysis-help-toggle'); ?> <div id="wpglobus-wpseo-tabs" style="width:90%; float:right;"> <?php /** * Use span with attributes 'data' for send to js script ids, names elements for which needs to be set new ids, names with language code. */ ?> <span id="wpglobus-wpseo-attr" data-ids="<?php echo esc_attr(implode(',', $ids)); ?> " data-names="<?php echo esc_attr(implode(',', $names)); ?> " data-qtip="<?php echo esc_attr(implode(',', $qtip)); ?> "> </span> <ul class="wpglobus-wpseo-tabs-list"> <?php $order = 0; foreach (WPGlobus::Config()->open_languages as $language) { ?> <li id="wpseo-link-tab-<?php echo esc_attr($language); ?> " data-language="<?php echo esc_attr($language); ?> " data-order="<?php echo esc_attr($order); ?> " class="wpglobus-wpseo-tab"><a href="#wpseo-tab-<?php echo $language; ?> "><?php echo esc_attr(WPGlobus::Config()->en_language_name[$language]); ?> </a> </li> <?php $order++; } ?> </ul> <?php /** * Get meta description */ $metadesc = get_post_meta($post->ID, '_yoast_wpseo_metadesc', true); /** * Get title */ $wpseotitle = get_post_meta($post->ID, '_yoast_wpseo_title', true); /** * From Yoast3 focus keyword key is '_yoast_wpseo_focuskw_text_input' */ $focuskw = get_post_meta($post->ID, '_yoast_wpseo_focuskw_text_input', true); /** * make yoast cite base */ list($yoast_permalink) = get_sample_permalink($post->ID); $yoast_permalink = str_replace(array('%pagename%', '%postname%'), '', urldecode($yoast_permalink)); /** * Set cite does not editable by default */ $cite_contenteditable = 'false'; foreach (WPGlobus::Config()->open_languages as $language) { $yoast_cite_base = WPGlobus_Utils::localize_url($yoast_permalink, $language); $yoast_cite_base = str_replace(array('http://', 'https://'), '', $yoast_cite_base); $yoast_cite_base = str_replace('//', '/', $yoast_cite_base); $permalink['url'] = WPGlobus_Utils::localize_url($permalink['url'], $language); $url = apply_filters('wpglobus_wpseo_permalink', $permalink['url'], $language); if ($url !== $permalink['url']) { /* We accept that user's filter make complete permalink for draft */ /* @todo maybe need more investigation */ $permalink['action'] = 'complete'; } else { if ('publish' !== $post->post_status) { /** * We cannot get post-name-full to make correct url here ( for draft & auto-draft ). We do it in JS * @see var wpseosnippet_url in wpglobus-wpseo-**.js */ $permalink['action'] = ''; } } ?> <div id="wpseo-tab-<?php echo $language; ?> " class="wpglobus-wpseo-general" data-language="<?php echo $language; ?> " data-url-<?php echo $language; ?> ="<?php echo esc_attr($url); ?> " data-yoast-cite-base="<?php echo esc_attr($yoast_cite_base); ?> " data-cite-contenteditable="<?php echo esc_attr($cite_contenteditable); ?> " data-permalink="<?php echo esc_attr($permalink['action']); ?> " data-metadesc="<?php echo esc_attr(WPGlobus_Core::text_filter($metadesc, $language, WPGlobus::RETURN_EMPTY)); ?> " data-wpseotitle="<?php echo esc_attr(WPGlobus_Core::text_filter($wpseotitle, $language, WPGlobus::RETURN_EMPTY)); ?> " data-focuskw="<?php echo esc_attr(WPGlobus_Core::text_filter($focuskw, $language, WPGlobus::RETURN_EMPTY)); ?> "> </div> <?php } ?> </div> <?php }
/** * Filter @see wp_trim_words * @qa At the /wp-admin/index.php page is a Quick Draft metabox * which shows 3 last post drafts. This filter lets post content in default language. * @since 1.0.14 * * @param string $text The trimmed text. * @param int $num_words The number of words to trim the text to. * @param string $more An optional string to append to the end of the trimmed text, e.g. …. * @param string $original_text The text before it was trimmed. * * @return string */ public static function filter__wp_trim_words($text, $num_words, $more, $original_text) { $text = WPGlobus_Core::text_filter($original_text, WPGlobus::Config()->language); if (null === $more) { $more = __('…'); } $text = wp_strip_all_tags($text); /* translators: If your word count is based on single characters (East Asian characters), enter 'characters'. Otherwise, enter 'words'. Do not translate into your own language. */ if ('characters' == _x('words', 'word count: words or characters?') && preg_match('/^utf\\-?8$/i', get_option('blog_charset'))) { $text = trim(preg_replace("/[\n\r\t ]+/", ' ', $text), ' '); preg_match_all('/./u', $text, $words_array); $words_array = array_slice($words_array[0], 0, $num_words + 1); $sep = ''; } else { $words_array = preg_split("/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY); $sep = ' '; } if (count($words_array) > $num_words) { array_pop($words_array); $text = implode($sep, $words_array); $text = $text . $more; } else { $text = implode($sep, $words_array); } return $text; }
/** * Make correct Site Title in admin bar. * Make template for Site Title (option blogname) * a Tagline (option blogdescription) at options-general.php page. * @return void */ public function on_admin_footer() { $blogname = get_option('blogname'); $bn = WPGlobus_Core::text_filter($blogname, WPGlobus::Config()->language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE); ?> <script type='text/javascript'> /* <![CDATA[ */ jQuery('#wp-admin-bar-site-name a').eq(0).text("<?php echo $bn; ?> "); /* ]]> */ </script> <?php /** * For dialog form * @since 1.2.0 */ /** @global string $pagenow */ global $pagenow; $page = empty($_GET['page']) ? '' : $_GET['page']; // @todo remove after testing //if ( WPGlobus_WP::is_pagenow( array( 'post.php', 'widgets.php' ) ) ) { if (in_array($pagenow, $this->enabled_pages) || in_array($page, $this->enabled_pages)) { /** * Output dialog form for window.WPGlobusDialogApp */ ?> <div id="wpglobus-dialog-wrapper" class="hidden wpglobus-dialog-wrapper"> <form id="wpglobus-dialog-form"> <div id="wpglobus-dialog-tabs" class="wpglobus-dialog-tabs"> <ul class="wpglobus-dialog-tabs-list"> <?php $order = 0; foreach (WPGlobus::Config()->open_languages as $language) { ?> <li id="dialog-link-tab-<?php echo $language; ?> " data-language="<?php echo $language; ?> " data-order="<?php echo $order; ?> " class="wpglobus-dialog-tab"><a href="#dialog-tab-<?php echo $language; ?> "><?php echo WPGlobus::Config()->en_language_name[$language]; ?> </a> </li> <?php $order++; } ?> </ul> <?php foreach (WPGlobus::Config()->open_languages as $language) { ?> <div id="dialog-tab-<?php echo $language; ?> " class="wpglobus-dialog-general"> <textarea name="wpglobus-dialog-<?php echo $language; ?> " id="wpglobus-dialog-<?php echo $language; ?> " class="wpglobus_dialog_textarea textarea" data-language="<?php echo $language; ?> " data-order="save_dialog"></textarea> </div> <?php } ?> </div> </form> </div> <?php } if (!WPGlobus_WP::is_pagenow('options-general.php')) { return; } $blogdesc = get_option('blogdescription'); ?> <div id="wpglobus-blogname" class="hidden"> <?php foreach (self::Config()->enabled_languages as $language) { $return = $language == self::Config()->default_language ? WPGlobus::RETURN_IN_DEFAULT_LANGUAGE : WPGlobus::RETURN_EMPTY; ?> <input type="text" class="regular-text wpglobus-blogname wpglobus-translatable" value="<?php echo WPGlobus_Core::text_filter($blogname, $language, $return); ?> " id="blogname-<?php echo $language; ?> " name="blogname-<?php echo $language; ?> " data-language="<?php echo $language; ?> " placeholder="<?php echo self::Config()->en_language_name[$language]; ?> "><br /> <?php } ?> </div> <div id="wpglobus-blogdescription" class="hidden"> <?php foreach (self::Config()->enabled_languages as $language) { $return = $language == self::Config()->default_language ? WPGlobus::RETURN_IN_DEFAULT_LANGUAGE : WPGlobus::RETURN_EMPTY; ?> <input type="text" class="regular-text wpglobus-blogdesc wpglobus-translatable" value="<?php echo WPGlobus_Core::text_filter($blogdesc, $language, $return); ?> " id="blogdescription-<?php echo $language; ?> " name="blogdescription-<?php echo $language; ?> " data-language="<?php echo $language; ?> " placeholder="<?php echo self::Config()->en_language_name[$language]; ?> "><br /> <?php } ?> </div> <?php }
/** * Extract title depending on current language * * @scope front * @since 1.4.1 * * @param string $text * * @return string */ public static function extract_title($text) { $tr = ''; $title = ''; foreach (WPGlobus::Config()->enabled_languages as $l) { $trans = WPGlobus_Core::text_filter($text, $l, WPGlobus::RETURN_EMPTY); if ($l == WPGlobus::Config()->language) { $title = $trans; } if (!empty($trans)) { $tr = sprintf(WPGlobus::LOCALE_TAG_START, $l) . $trans . WPGlobus::LOCALE_TAG_END; $text = str_replace($tr, '', $text); } } return $title . $text; }
function on_admin_footer() { global $post; $permalink = array(); $permalink['url'] = get_permalink($post->ID); $permalink['action'] = 'complete'; $fields = array(); /** * Keywords */ $fields['aiosp_keywords']['opts'] = array('name' => __('Keywords (comma separated)', 'all_in_one_seo_pack'), 'type' => 'text', 'label' => '', 'help_text' => __('A comma separated list of your most important keywords for this page that will be written as META keywords.', 'all_in_one_seo_pack')); $fields['aiosp_keywords']['opts']['help_text'] .= '<br /><a target="_blank" href="http://semperplugins.com/sections/postpage-settings/">Click here for documentation on this setting</a>'; $fields['aiosp_keywords']['args'] = array('name' => 'aiosp_keywords', 'attr' => 'placeholder="{{placeholder}}"', 'data' => '', 'classes' => 'class="wpglobus-aioseop_keywords"', 'value' => '', 'prefix' => '', 'options' => $fields['aiosp_keywords']['opts']); /** * Description */ $fields['aiosp_description']['opts'] = array('name' => __('Description', 'all_in_one_seo_pack'), 'type' => 'textarea', 'count' => true, 'cols' => 80, 'rows' => 2, 'label' => '', 'help_text' => __('The META description for this page. This will override any autogenerated descriptions.', 'all_in_one_seo_pack'), 'placeholder' => ''); $fields['aiosp_description']['opts']['help_text'] .= '<br /><a target="_blank" href="http://semperplugins.com/sections/postpage-settings/">Click here for documentation on this setting</a>'; $fields['aiosp_description']['args'] = array('name' => 'aiosp_description', 'attr' => 'placeholder="{{placeholder}}"', 'data' => ' data-max-size="160" ', 'classes' => 'class="wpglobus_countable wpglobus-aioseop_description"', 'value' => '', 'prefix' => 'wpglobus_', 'suffix' => '', 'options' => $fields['aiosp_description']['opts']); /** * Title */ $fields['aiosp_title']['opts'] = array('name' => __('Title', 'all_in_one_seo_pack'), 'type' => 'text', 'count' => true, 'size' => 60, 'help_text' => __('A custom title that shows up in the title tag for this page.', 'all_in_one_seo_pack'), 'default' => '', 'initial_options' => '', 'nowrap' => '', 'label' => '', 'save' => true, 'placeholder' => ''); $fields['aiosp_title']['opts']['help_text'] .= '<br /><a target="_blank" href="http://semperplugins.com/sections/postpage-settings/">Click here for documentation on this setting</a>'; $fields['aiosp_title']['args'] = array('name' => 'aiosp_title_{{language}}', 'attr' => 'size="60" placeholder="{{placeholder}}"', 'data' => ' data-max-size="60" ', 'classes' => 'class="wpglobus_countable wpglobus-aioseop_title"', 'value' => '', 'prefix' => 'wpglobus_', 'suffix' => '', 'options' => $fields['aiosp_title']['opts']); /** * Snippet must be last in array */ $fields['aiosp_snippet']['opts'] = array('name' => __('Preview Snippet', 'all_in_one_seo_pack'), 'type' => 'html', 'label' => 'top', 'help_text' => __('A preview of what this page might look like in search engine results.', 'all_in_one_seo_pack'), 'nowrap' => 1, 'save' => true, 'prefix' => ''); $fields['aiosp_snippet']['opts']['help_text'] .= '<br /><a target="_blank" href="http://semperplugins.com/sections/postpage-settings/">Click here for documentation on this setting</a>'; $fields['aiosp_snippet']['args'] = array('name' => 'aiosp_snippet', 'attr' => '', 'classes' => 'wpglobus-aioseop_snippet', 'data' => '', 'value' => '<div class="preview_snippet"> <div id="aioseop_snippet_{{language}}" data-extra-length="{{extra_length}}"> <h3{{header_style}}><a{{link_style}}><span id="aioseop_snippet_title_{{language}}">%s</span>%s</a></h3> <div> <div> <cite{{cite_style}} id="aioseop_snippet_link_{{language}}">%s</cite> </div> <span id="aioseop_snippet_description_{{language}}">%s</span> </div> </div> </div> ', 'prefix' => '', 'options' => $fields['aiosp_snippet']['opts']); $aio = new WPGlobus_All_in_One_SEO(); /** * @todo check url */ $permalink = array(); if ('publish' == $post->post_status) { $permalink['url'] = get_permalink($post->ID); $permalink['action'] = 'complete'; } else { $permalink['url'] = trailingslashit(home_url()); $permalink['action'] = ''; } /** * get keywords for current post * use original function for compatibility * * "All In One SEO Pack" may to add keywords in addition to any keywords you specify on the Edit Post screen. * @see options in Keyword Settings metabox on General Settings page. */ $keywords = $aio->get_all_keywords(); $keywords = explode(',', $keywords); global $wpdb; //$keywords_source = array(); foreach ($keywords as $keyword) { $keyword = trim($keyword); if (empty($keyword)) { $keywords_source[$keyword] = ''; } else { $name = $wpdb->get_var("SELECT name FROM {$wpdb->terms} WHERE name LIKE '%{$keyword}%'"); if (empty($name)) { $keywords_source[$keyword] = ''; } else { $keywords_source[$keyword] = $name; } } } $aioseop_options = aioseop_get_options(); switch ($post->post_type) { case 'post': $title_format = $aioseop_options['aiosp_post_title_format']; $title_format = explode(' ', preg_replace('/\\s+/', ' ', $title_format)); break; default: $title_format = ''; } /** * Get meta title in current language ( WPGlobus::Config()->language ) * in $aioseop_options['aiosp_post_title_format'] format, usual as %post_title% | %blog_title% * Title will be like to "New Post for All in one Seo Pack | WPGlobus" without language marks */ $aiosp_meta_title = $aio->get_aioseop_title($post); if (isset($title_format[1])) { $aiosp_meta_title = explode($title_format[1], $aiosp_meta_title); $aiosp_meta_title = $aiosp_meta_title[0]; } $aiosp_meta_title_source = get_post_meta($post->ID, "_aioseop_title", true); $aiosp_meta_title_source = trim($aiosp_meta_title_source); if (!WPGlobus_Core::text_filter($aiosp_meta_title_source, WPGlobus::Config()->default_language)) { /** * Reset meta title for default language */ $aiosp_meta_title = ''; } /** * Get meta description in current language ( WPGlobus::Config()->language ) with $aio->get_post_description($post) * @see 'localization' filter in wpglobus-controller.php */ // $aiosp_post_description = $aio->get_post_description($post); /** * but we need description with language marks */ $aiosp_meta_description_source = $aiosp_post_description = get_post_meta($post->ID, "_aioseop_description", true); $aiosp_meta_description_source = trim($aiosp_meta_description_source); /** * Get keywords /// title in current language ( WPGlobus::Config()->language ) */ $aiosp_keywords_source = get_post_meta($post->ID, "_aioseop_keywords", true); $header_style = ' style="padding:8px 0;"'; $link_style = ' style="color:#12c;cursor: pointer;text-decoration: -moz-use-text-color none solid;font-size:16px;"'; $cite_style = ' style="color:#093;font-style:normal;"'; ?> <div id="wpglobus-aioseop-tabs" class="hidden wpglobus-hidden"> <ul class="wpglobus-aioseop-tabs-list"> <?php $order = 0; foreach (WPGlobus::Config()->enabled_languages as $language) { ?> <li id="aioseop-link-tab-<?php echo $language; ?> " data-language="<?php echo $language; ?> " data-order="<?php echo $order; ?> " class="wpglobus-aioseop-tab"><a href="#aioseop-tab-<?php echo $language; ?> "><?php echo WPGlobus::Config()->en_language_name[$language]; ?> </a> </li> <?php $order++; } ?> </ul> <div style="clear:both;margin-bottom:20px;"></div><?php foreach (WPGlobus::Config()->enabled_languages as $language) { if ($language == WPGlobus::Config()->default_language) { $return = WPGlobus::RETURN_IN_DEFAULT_LANGUAGE; if ($language == WPGlobus::Config()->language) { $aiosp_title = trim(WPGlobus_Core::text_filter($aiosp_meta_title, $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE)); } else { /** * Get title from source ( post meta key '_aioseop_title' ) */ $aiosp_title = trim(WPGlobus_Core::text_filter($aiosp_meta_title_source, $language, WPGlobus::RETURN_EMPTY)); } } else { $return = WPGlobus::RETURN_EMPTY; $aiosp_title = trim(WPGlobus_Core::text_filter($aiosp_meta_title, $language, WPGlobus::RETURN_EMPTY)); if (empty($aiosp_title)) { /** * Get title from source ( post meta key '_aioseop_title' ) */ $aiosp_title = trim(WPGlobus_Core::text_filter($aiosp_meta_title_source, $language, WPGlobus::RETURN_EMPTY)); } } $url = WPGlobus_Utils::localize_url($permalink['url'], $language); /** * Set snippet title */ $aiosp_placeholder_title = WPGlobus_Core::text_filter($post->post_title, $language, $return); $aiosp_snippet_title = empty($aiosp_title) ? $aiosp_placeholder_title : $aiosp_title; /** * Set meta description */ $aiosp_meta_description = WPGlobus_Core::text_filter($aiosp_meta_description_source, $language, $return); if (empty($aiosp_meta_description)) { $description = ''; if (empty($aioseop_options["aiosp_skip_excerpt"])) { $description = $aio->trim_excerpt_without_filters_full_length(WPGlobus_Core::text_filter($post->post_excerpt, $language, WPGlobus::RETURN_EMPTY)); } if (!$description && $aioseop_options["aiosp_generate_descriptions"]) { $content = WPGlobus_Core::text_filter($post->post_content, $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE); if (!empty($aioseop_options["aiosp_run_shortcodes"])) { $content = do_shortcode($content); } $content = wp_strip_all_tags($content); $description = $aio->trim_excerpt_without_filters($content); } $aiosp_description = ''; $aiosp_placeholder_description = $description; $aiosp_snippet_description = $aiosp_placeholder_description; } else { $aiosp_description = WPGlobus_Core::text_filter($aiosp_post_description, $language, $return); $aiosp_placeholder_description = $aiosp_description; $aiosp_snippet_description = $aiosp_description; } /** * Make All in one Seo Pack tabs */ ?> <div id="aioseop-tab-<?php echo $language; ?> " class="wpglobus-aioseop-general" data-language="<?php echo $language; ?> " data-url-<?php echo $language; ?> ="<?php echo $url; ?> "> <?php $r = ''; foreach ($fields as $name => $data) { if ('aiosp_snippet' == $name) { $snippet_title_2 = ''; if (isset($title_format[2]) && false !== strpos($title_format[2], '%blog_title%')) { $snippet_title_2 = ' ' . $title_format[1] . ' ' . WPGlobus_Core::text_filter(get_option('blogname'), $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE); } $data['args']['value'] = str_replace('{{language}}', $language, $data['args']['value']); $data['args']['value'] = str_replace('{{header_style}}', $header_style, $data['args']['value']); $data['args']['value'] = str_replace('{{link_style}}', $link_style, $data['args']['value']); $data['args']['value'] = str_replace('{{cite_style}}', $cite_style, $data['args']['value']); $data['args']['value'] = sprintf($data['args']['value'], $aiosp_snippet_title, $snippet_title_2, WPGlobus_Utils::localize_url($permalink['url'], $language), $aiosp_snippet_description); $data['args']['value'] = str_replace('{{extra_length}}', mb_strlen($snippet_title_2), $data['args']['value']); } else { if ('aiosp_title' == $name) { $data['args']['name'] = str_replace('{{language}}', $language, $data['args']['name']); $data['args']['attr'] = str_replace('{{placeholder}}', $aiosp_placeholder_title, $data['args']['attr']); $data['args']['prefix'] = 'wpglobus_title_'; $data['args']['suffix'] = '_' . $language; $data['args']['data'] = $data['args']['data'] . ' data-field-count="wpglobus_title_length_' . $language . '" data-extra-element="aioseop_snippet_' . $language . '" data-language="' . $language . '"'; $data['args']['value'] = $aiosp_title; } else { if ('aiosp_description' == $name) { $data['args']['attr'] = str_replace('{{placeholder}}', $aiosp_placeholder_description, $data['args']['attr']); $data['args']['prefix'] = 'wpglobus_description_'; $data['args']['suffix'] = '_' . $language; $data['args']['name'] = $data['args']['name'] . '_' . $language; $data['args']['data'] = $data['args']['data'] . ' data-field-count="wpglobus_description_length_' . $language . '" data-language="' . $language . '"'; $data['args']['value'] = $aiosp_description; } else { if ('aiosp_keywords' == $name) { $placeholders = array(); foreach ($keywords as $keyword) { if (empty($keywords_source[$keyword])) { continue; } /** * @todo maybe better use WPGlobus::RETURN_EMPTY, in this case we will be have tags in native language only */ $placeholders[] = WPGlobus_Core::text_filter($keywords_source[$keyword], $language, WPGlobus::RETURN_IN_DEFAULT_LANGUAGE); } $placeholder = implode(',', $placeholders); $data['args']['attr'] = str_replace('{{placeholder}}', $placeholder, $data['args']['attr']); $data['args']['data'] = ' data-language="' . $language . '" '; $data['args']['name'] = $data['args']['name'] . '_' . $language; $data['args']['data'] = ' data-language="' . $language . '" '; $data['args']['value'] = WPGlobus_Core::text_filter($aiosp_keywords_source, $language, WPGlobus::RETURN_EMPTY); } } } } $r = $aio->wpg_get_option_row($name, $data['opts'], $data['args'], $language) . $r; } echo $r; ?> </div> <!-- .wpglobus-aioseop-general --> <?php } // end foreach ?> <!-- <hr /> --> </div> <!-- #wpglobus-aioseop-tabs --> <?php }