Version Description
Download this release
Release Info
Developer | JohnLamansky |
Plugin | SEO Ultimate |
Version | 7.5 |
Comparing to | |
See all releases |
Code changes from version 7.4 to 7.5
- includes/jlfunctions/str.php +1 -1
- includes/jlsuggest/jlsuggest.css +24 -3
- modules/404s/fofs-log.php +2 -2
- modules/404s/fofs.css +7 -2
- modules/autolinks/autolinks.css +2 -2
- modules/class.su-module.php +31 -11
- modules/internal-link-aliases/internal-link-aliases.php +1 -1
- modules/link-nofollow/link-nofollow.php +6 -4
- modules/linkbox/linkbox.css +4 -0
- modules/linkbox/linkbox.php +6 -3
- modules/modules/modules.php +10 -3
- modules/opengraph/opengraph.css +5 -0
- modules/opengraph/opengraph.php +169 -87
- modules/rich-snippets/rich-snippets.php +271 -140
- modules/sharing-buttons/sharing-buttons.php +1 -2
- modules/slugs/slugs.php +5 -2
- modules/widgets/widgets.php +5 -1
- plugin/class.seo-ultimate.php +2 -2
- plugin/global.css +26 -17
- readme.txt +36 -19
- seo-ultimate.php +4 -4
- translations/seo-ultimate.pot +272 -173
includes/jlfunctions/str.php
CHANGED
@@ -187,7 +187,7 @@ class sustr {
|
|
187 |
}
|
188 |
|
189 |
function htmlsafe_str_replace($search, $replace, $subject, $limit, &$count, $exclude_tags = false) {
|
190 |
-
$search = sustr::preg_escape($search);
|
191 |
return sustr::htmlsafe_preg_replace($search, $replace, $subject, $limit, $count, $exclude_tags);
|
192 |
}
|
193 |
|
187 |
}
|
188 |
|
189 |
function htmlsafe_str_replace($search, $replace, $subject, $limit, &$count, $exclude_tags = false) {
|
190 |
+
$search = sustr::preg_escape($search, '');
|
191 |
return sustr::htmlsafe_preg_replace($search, $replace, $subject, $limit, $count, $exclude_tags);
|
192 |
}
|
193 |
|
includes/jlsuggest/jlsuggest.css
CHANGED
@@ -15,7 +15,8 @@ input.jls_loading {
|
|
15 |
border-radius: 3px;
|
16 |
background-color: #E0E7FF;
|
17 |
position: relative;
|
18 |
-
|
|
|
19 |
}
|
20 |
|
21 |
.jlsuggest-disabled {
|
@@ -39,7 +40,7 @@ input.jls_loading {
|
|
39 |
top: 0;
|
40 |
right: 0;
|
41 |
cursor: pointer;
|
42 |
-
padding:
|
43 |
color: black;
|
44 |
text-decoration: none;
|
45 |
}
|
@@ -96,4 +97,24 @@ input.jls_loading {
|
|
96 |
|
97 |
.jls_results li {
|
98 |
color:#101010;
|
99 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
border-radius: 3px;
|
16 |
background-color: #E0E7FF;
|
17 |
position: relative;
|
18 |
+
margin: 1px -1px;
|
19 |
+
padding: 3px 0 1px;
|
20 |
}
|
21 |
|
22 |
.jlsuggest-disabled {
|
40 |
top: 0;
|
41 |
right: 0;
|
42 |
cursor: pointer;
|
43 |
+
padding: 3px 10px 1px;
|
44 |
color: black;
|
45 |
text-decoration: none;
|
46 |
}
|
97 |
|
98 |
.jls_results li {
|
99 |
color:#101010;
|
100 |
+
}
|
101 |
+
|
102 |
+
|
103 |
+
input.jlsuggest:-moz-placeholder {
|
104 |
+
background-color: #E0E7FF;
|
105 |
+
border-color: #C0CDFF;
|
106 |
+
color: black;
|
107 |
+
}
|
108 |
+
|
109 |
+
/* Requires IE10+ */
|
110 |
+
input.jlsuggest:-ms-input-placeholder {
|
111 |
+
background-color: #E0E7FF;
|
112 |
+
border-color: #C0CDFF;
|
113 |
+
color: black;
|
114 |
+
}
|
115 |
+
|
116 |
+
/*
|
117 |
+
A ::-webkit-input-placeholder block is not included because
|
118 |
+
the background-color rule doesn't apply correctly on Chrome
|
119 |
+
and it looks rather horrendous...
|
120 |
+
*/
|
modules/404s/fofs-log.php
CHANGED
@@ -196,7 +196,7 @@ class SU_FofsLog extends SU_Module {
|
|
196 |
|
197 |
if (count($data['referers'])) {
|
198 |
|
199 |
-
echo "<div id='su-404s-hit-$md5url-referers' style='display: none;'>\n";
|
200 |
echo "\t\t\t<div><strong>".__('Referring URLs', 'seo-ultimate')."</strong> — ";
|
201 |
echo "<a href='#' onclick=\"Effect.BlindUp('su-404s-hit-$md5url-referers'); return false;\">".__('Hide list', 'seo-ultimate')."</a>";
|
202 |
echo "</div>\n";
|
@@ -217,7 +217,7 @@ class SU_FofsLog extends SU_Module {
|
|
217 |
echo "\t<tr class='su-404s-hit-user-agents$new'>\n\t\t<td colspan='".count($headers)."'>";
|
218 |
|
219 |
if (count($data['user_agents'])) {
|
220 |
-
echo "<div id='su-404s-hit-$md5url-user-agents' style='display: none;'>\n";
|
221 |
echo "\t\t\t<div><strong>".__('User Agents', 'seo-ultimate')."</strong> — ";
|
222 |
echo "<a href='#' onclick=\"Effect.BlindUp('su-404s-hit-$md5url-user-agents'); return false;\">".__('Hide list', 'seo-ultimate')."</a>";
|
223 |
echo "</div>\n";
|
196 |
|
197 |
if (count($data['referers'])) {
|
198 |
|
199 |
+
echo "<div id='su-404s-hit-$md5url-referers' class='su-404s-hit-referers-list' style='display: none;'>\n";
|
200 |
echo "\t\t\t<div><strong>".__('Referring URLs', 'seo-ultimate')."</strong> — ";
|
201 |
echo "<a href='#' onclick=\"Effect.BlindUp('su-404s-hit-$md5url-referers'); return false;\">".__('Hide list', 'seo-ultimate')."</a>";
|
202 |
echo "</div>\n";
|
217 |
echo "\t<tr class='su-404s-hit-user-agents$new'>\n\t\t<td colspan='".count($headers)."'>";
|
218 |
|
219 |
if (count($data['user_agents'])) {
|
220 |
+
echo "<div id='su-404s-hit-$md5url-user-agents' class='su-404s-hit-user-agents-list' style='display: none;'>\n";
|
221 |
echo "\t\t\t<div><strong>".__('User Agents', 'seo-ultimate')."</strong> — ";
|
222 |
echo "<a href='#' onclick=\"Effect.BlindUp('su-404s-hit-$md5url-user-agents'); return false;\">".__('Hide list', 'seo-ultimate')."</a>";
|
223 |
echo "</div>\n";
|
modules/404s/fofs.css
CHANGED
@@ -10,8 +10,13 @@
|
|
10 |
|
11 |
#su-fofs table tr.su-404s-hit-referers td,
|
12 |
#su-fofs table tr.su-404s-hit-user-agents td {
|
13 |
-
padding
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
15 |
}
|
16 |
|
17 |
#su-fofs table tr.su-404s-new-hit td {
|
10 |
|
11 |
#su-fofs table tr.su-404s-hit-referers td,
|
12 |
#su-fofs table tr.su-404s-hit-user-agents td {
|
13 |
+
padding: 0 1em;
|
14 |
+
border-top: 0 none;
|
15 |
+
}
|
16 |
+
|
17 |
+
#su-fofs table .su-404s-hit-referers-list,
|
18 |
+
#su-fofs table .su-404s-hit-user-agents-list {
|
19 |
+
padding-top: 0.5em;
|
20 |
}
|
21 |
|
22 |
#su-fofs table tr.su-404s-new-hit td {
|
modules/autolinks/autolinks.css
CHANGED
@@ -30,7 +30,7 @@
|
|
30 |
}
|
31 |
|
32 |
#su-autolinks table.widefat td.su-link-options {
|
33 |
-
width:
|
34 |
}
|
35 |
|
36 |
#su-autolinks table.widefat td.su-link-delete,
|
@@ -39,6 +39,6 @@
|
|
39 |
text-align: center;
|
40 |
}
|
41 |
|
42 |
-
#su-
|
43 |
padding-right: 0.5em;
|
44 |
}
|
30 |
}
|
31 |
|
32 |
#su-autolinks table.widefat td.su-link-options {
|
33 |
+
width: 9em;
|
34 |
}
|
35 |
|
36 |
#su-autolinks table.widefat td.su-link-delete,
|
39 |
text-align: center;
|
40 |
}
|
41 |
|
42 |
+
#su-autolinks table.widefat td {
|
43 |
padding-right: 0.5em;
|
44 |
}
|
modules/class.su-module.php
CHANGED
@@ -1849,7 +1849,9 @@ class SU_Module {
|
|
1849 |
* @param string|false $grouptext The text to display in a table cell to the left of the one containing the dropdown. Optional.
|
1850 |
* @param string $text A printf-style format string in which "%s" is replaced with the dropdown. Use this to put text before or after the dropdown.
|
1851 |
*/
|
1852 |
-
function dropdown($name, $values, $grouptext=false, $text='%s') {
|
|
|
|
|
1853 |
|
1854 |
//Save dropdown setting after form submission
|
1855 |
if ($this->is_action('update') && isset($_POST[$name]))
|
@@ -1857,7 +1859,7 @@ class SU_Module {
|
|
1857 |
|
1858 |
if ($grouptext)
|
1859 |
$this->admin_form_group_start($grouptext, false);
|
1860 |
-
|
1861 |
echo "<tr valign='top' class='su-admin-form-dropdown'>\n<td colspan='2'>\n";
|
1862 |
|
1863 |
if (is_array($values)) {
|
@@ -1871,8 +1873,10 @@ class SU_Module {
|
|
1871 |
printf($text, $dropdown);
|
1872 |
}
|
1873 |
|
1874 |
-
if ($grouptext)
|
1875 |
-
|
|
|
|
|
1876 |
}
|
1877 |
|
1878 |
/**
|
@@ -2344,19 +2348,35 @@ class SU_Module {
|
|
2344 |
* @param array $textboxes An array of textboxes. (Field/setting IDs are the keys, and descriptions are the values.)
|
2345 |
* @return string The HTML that would render the textboxes.
|
2346 |
*/
|
2347 |
-
function get_postmeta_textboxes($textboxes) {
|
2348 |
-
|
2349 |
$html = '';
|
2350 |
|
|
|
|
|
|
|
|
|
|
|
2351 |
foreach ($textboxes as $id => $title) {
|
2352 |
|
|
|
|
|
2353 |
register_setting('seo-ultimate', $id);
|
2354 |
$value = su_esc_editable_html($this->get_postmeta($id));
|
2355 |
$id = "_su_".su_esc_attr($id);
|
2356 |
-
//$title = str_replace(' ', ' ', $title);
|
2357 |
|
2358 |
-
$
|
2359 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2360 |
}
|
2361 |
|
2362 |
return $html;
|
@@ -2372,8 +2392,8 @@ class SU_Module {
|
|
2372 |
* @param string $title The label of the HTML element.
|
2373 |
* @return string The HTML that would render the textbox.
|
2374 |
*/
|
2375 |
-
function get_postmeta_textbox($id, $title) {
|
2376 |
-
return $this->get_postmeta_textboxes(array($id => $title));
|
2377 |
}
|
2378 |
|
2379 |
/**
|
1849 |
* @param string|false $grouptext The text to display in a table cell to the left of the one containing the dropdown. Optional.
|
1850 |
* @param string $text A printf-style format string in which "%s" is replaced with the dropdown. Use this to put text before or after the dropdown.
|
1851 |
*/
|
1852 |
+
function dropdown($name, $values, $grouptext=false, $text='%s', $args=array()) {
|
1853 |
+
|
1854 |
+
$in_table = isset($args['in_table']) ? $args['in_table'] : true;
|
1855 |
|
1856 |
//Save dropdown setting after form submission
|
1857 |
if ($this->is_action('update') && isset($_POST[$name]))
|
1859 |
|
1860 |
if ($grouptext)
|
1861 |
$this->admin_form_group_start($grouptext, false);
|
1862 |
+
elseif ($in_table)
|
1863 |
echo "<tr valign='top' class='su-admin-form-dropdown'>\n<td colspan='2'>\n";
|
1864 |
|
1865 |
if (is_array($values)) {
|
1873 |
printf($text, $dropdown);
|
1874 |
}
|
1875 |
|
1876 |
+
if ($grouptext)
|
1877 |
+
$this->admin_form_group_end();
|
1878 |
+
elseif ($in_table)
|
1879 |
+
echo "</td>\n</tr>\n";
|
1880 |
}
|
1881 |
|
1882 |
/**
|
2348 |
* @param array $textboxes An array of textboxes. (Field/setting IDs are the keys, and descriptions are the values.)
|
2349 |
* @return string The HTML that would render the textboxes.
|
2350 |
*/
|
2351 |
+
function get_postmeta_textboxes($textboxes, $textbox_args=array(), $grouptext=false) {
|
2352 |
+
|
2353 |
$html = '';
|
2354 |
|
2355 |
+
if ($grouptext) {
|
2356 |
+
$h_grouptext = esc_html($grouptext);
|
2357 |
+
$html .= "<tr class='su textbox' valign='top'>\n<th scope='row' class='su'><label>$h_grouptext</label></th>\n<td class='su group'><table>";
|
2358 |
+
}
|
2359 |
+
|
2360 |
foreach ($textboxes as $id => $title) {
|
2361 |
|
2362 |
+
$type = isset($textbox_args[$id]['type']) ? $textbox_args[$id]['type'] : 'text';
|
2363 |
+
|
2364 |
register_setting('seo-ultimate', $id);
|
2365 |
$value = su_esc_editable_html($this->get_postmeta($id));
|
2366 |
$id = "_su_".su_esc_attr($id);
|
|
|
2367 |
|
2368 |
+
$e_title = su_esc_attr($title);
|
2369 |
+
|
2370 |
+
if ($grouptext)
|
2371 |
+
$html .= "<tr><th scope='row'>$title</th><td><input name='$id' id='$id' type='$type' value='$value' class='regular-text' tabindex='2' /></td></tr>";
|
2372 |
+
else
|
2373 |
+
$html .= "<tr class='su textbox' valign='middle'>\n<th scope='row' class='su'><label for='$id'>$title</label></th>\n"
|
2374 |
+
."<td class='su'><input name='$id' id='$id' type='$type' value='$value' class='regular-text' tabindex='2' /></td>\n</tr>\n";
|
2375 |
+
}
|
2376 |
+
|
2377 |
+
if ($grouptext) {
|
2378 |
+
$h_grouptext = esc_html($grouptext);
|
2379 |
+
$html .= "</table></td>\n</tr>\n";
|
2380 |
}
|
2381 |
|
2382 |
return $html;
|
2392 |
* @param string $title The label of the HTML element.
|
2393 |
* @return string The HTML that would render the textbox.
|
2394 |
*/
|
2395 |
+
function get_postmeta_textbox($id, $title, $args=array()) {
|
2396 |
+
return $this->get_postmeta_textboxes(array($id => $title), array($id => $args));
|
2397 |
}
|
2398 |
|
2399 |
/**
|
modules/internal-link-aliases/internal-link-aliases.php
CHANGED
@@ -205,7 +205,7 @@ class SU_InternalLinkAliases extends SU_Module {
|
|
205 |
|
206 |
$html .= "</td>\n</tr>\n";
|
207 |
|
208 |
-
$fields['
|
209 |
}
|
210 |
|
211 |
return $fields;
|
205 |
|
206 |
$html .= "</td>\n</tr>\n";
|
207 |
|
208 |
+
$fields['links'][30]['aliases'] = $html;
|
209 |
}
|
210 |
|
211 |
return $fields;
|
modules/link-nofollow/link-nofollow.php
CHANGED
@@ -12,6 +12,9 @@ class SU_LinkNofollow extends SU_Module {
|
|
12 |
function get_module_title() { return __('Nofollow Manager', 'seo-ultimate'); }
|
13 |
function get_default_status() { return SU_MODULE_DISABLED; }
|
14 |
|
|
|
|
|
|
|
15 |
function init() {
|
16 |
$filterdata = array(
|
17 |
'nofollow_links' => array(
|
@@ -49,8 +52,7 @@ class SU_LinkNofollow extends SU_Module {
|
|
49 |
}
|
50 |
|
51 |
function admin_page_contents() {
|
52 |
-
$this->
|
53 |
-
$this->admin_form_subheader(__('Add the nofollow attribute to...', 'seo-ultimate'));
|
54 |
$this->checkboxes(array(
|
55 |
'nofollow_adjacent_post' => __('Adjacent post links (next post / previous post)', 'seo-ultimate')
|
56 |
, 'nofollow_category_loop' => __('Category links (after posts)', 'seo-ultimate')
|
@@ -65,9 +67,9 @@ class SU_LinkNofollow extends SU_Module {
|
|
65 |
, 'nofollow_login' => __('Login link', 'seo-ultimate')
|
66 |
, 'nofollow_tag_loop' => __('Tag links (after posts)', 'seo-ultimate')
|
67 |
, 'nofollow_tag_list' => __('Tag links (in lists and clouds)', 'seo-ultimate')
|
68 |
-
));
|
69 |
|
70 |
-
$this->
|
71 |
}
|
72 |
|
73 |
function postmeta_fields($fields, $screen) {
|
12 |
function get_module_title() { return __('Nofollow Manager', 'seo-ultimate'); }
|
13 |
function get_default_status() { return SU_MODULE_DISABLED; }
|
14 |
|
15 |
+
function get_parent_module() { return 'misc'; }
|
16 |
+
function get_settings_key() { return 'link-nofollow'; }
|
17 |
+
|
18 |
function init() {
|
19 |
$filterdata = array(
|
20 |
'nofollow_links' => array(
|
52 |
}
|
53 |
|
54 |
function admin_page_contents() {
|
55 |
+
$this->child_admin_form_start();
|
|
|
56 |
$this->checkboxes(array(
|
57 |
'nofollow_adjacent_post' => __('Adjacent post links (next post / previous post)', 'seo-ultimate')
|
58 |
, 'nofollow_category_loop' => __('Category links (after posts)', 'seo-ultimate')
|
67 |
, 'nofollow_login' => __('Login link', 'seo-ultimate')
|
68 |
, 'nofollow_tag_loop' => __('Tag links (after posts)', 'seo-ultimate')
|
69 |
, 'nofollow_tag_list' => __('Tag links (in lists and clouds)', 'seo-ultimate')
|
70 |
+
), __('Add the nofollow attribute to...', 'seo-ultimate'));
|
71 |
|
72 |
+
$this->child_admin_form_end();
|
73 |
}
|
74 |
|
75 |
function postmeta_fields($fields, $screen) {
|
modules/linkbox/linkbox.css
ADDED
@@ -0,0 +1,4 @@
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
#su-linkbox textarea {
|
3 |
+
width: 100%;
|
4 |
+
}
|
modules/linkbox/linkbox.php
CHANGED
@@ -11,6 +11,9 @@ class SU_Linkbox extends SU_Module {
|
|
11 |
|
12 |
function get_module_title() { return __('Linkbox Inserter', 'seo-ultimate'); }
|
13 |
|
|
|
|
|
|
|
14 |
function get_default_settings() {
|
15 |
//The default linkbox HTML
|
16 |
return array(
|
@@ -41,13 +44,13 @@ class SU_Linkbox extends SU_Module {
|
|
41 |
}
|
42 |
|
43 |
function admin_page_contents() {
|
44 |
-
$this->
|
45 |
$this->checkboxes(array('filter_posts' => __('At the end of posts', 'seo-ultimate')
|
46 |
, 'filter_pages' => __('At the end of pages', 'seo-ultimate')
|
47 |
, 'action_hook' => __('When called by the su_linkbox hook', 'seo-ultimate')
|
48 |
), __('Display linkboxes...', 'seo-ultimate'));
|
49 |
-
$this->textarea('html', __('Linkbox HTML', 'seo-ultimate')
|
50 |
-
$this->
|
51 |
}
|
52 |
|
53 |
function should_linkbox() {
|
11 |
|
12 |
function get_module_title() { return __('Linkbox Inserter', 'seo-ultimate'); }
|
13 |
|
14 |
+
function get_parent_module() { return 'misc'; }
|
15 |
+
function get_settings_key() { return 'linkbox'; }
|
16 |
+
|
17 |
function get_default_settings() {
|
18 |
//The default linkbox HTML
|
19 |
return array(
|
44 |
}
|
45 |
|
46 |
function admin_page_contents() {
|
47 |
+
$this->child_admin_form_start();
|
48 |
$this->checkboxes(array('filter_posts' => __('At the end of posts', 'seo-ultimate')
|
49 |
, 'filter_pages' => __('At the end of pages', 'seo-ultimate')
|
50 |
, 'action_hook' => __('When called by the su_linkbox hook', 'seo-ultimate')
|
51 |
), __('Display linkboxes...', 'seo-ultimate'));
|
52 |
+
$this->textarea('html', __('Linkbox HTML', 'seo-ultimate'));
|
53 |
+
$this->child_admin_form_end();
|
54 |
}
|
55 |
|
56 |
function should_linkbox() {
|
modules/modules/modules.php
CHANGED
@@ -47,7 +47,7 @@ class SU_Modules extends SU_Module {
|
|
47 |
|
48 |
function admin_page_contents() {
|
49 |
echo "<p>";
|
50 |
-
_e('SEO Ultimate’s features are located in groups called “modules.” By default, most of these modules are listed in the “SEO” menu on the left. Whenever you’re working with a module, you can view documentation by clicking the
|
51 |
echo "</p><p>";
|
52 |
_e('The Module Manager lets you disable or hide modules you don’t use. You can also silence modules from displaying bubble alerts on the menu.', 'seo-ultimate');
|
53 |
echo "</p>";
|
@@ -114,6 +114,11 @@ STR;
|
|
114 |
echo "\t\t<tr>\n\t\t\t<td class='module-status' id='module-status-$key'>\n";
|
115 |
echo "\t\t\t\t<input type='hidden' name='su-$key-module-status' id='su-$key-module-status' value='$currentstatus' />\n";
|
116 |
|
|
|
|
|
|
|
|
|
|
|
117 |
foreach ($statuses as $statuscode => $statuslabel) {
|
118 |
|
119 |
$hmc = ($this->plugin->call_module_func($key, 'has_menu_count', $_hmc) && $_hmc);
|
@@ -122,14 +127,16 @@ STR;
|
|
122 |
$style = '';
|
123 |
switch ($statuscode) {
|
124 |
case SU_MODULE_ENABLED:
|
125 |
-
if ($currentstatus == SU_MODULE_SILENCED && !$hmc)
|
|
|
|
|
126 |
break;
|
127 |
case SU_MODULE_SILENCED:
|
128 |
if (!$any_hmc) continue 2; //break out of switch and foreach
|
129 |
if (!$hmc) $style = " style='visibility: hidden;'";
|
130 |
break;
|
131 |
case SU_MODULE_HIDDEN:
|
132 |
-
if ($
|
133 |
$style = " style='visibility: hidden;'";
|
134 |
break;
|
135 |
}
|
47 |
|
48 |
function admin_page_contents() {
|
49 |
echo "<p>";
|
50 |
+
_e('SEO Ultimate’s features are located in groups called “modules.” By default, most of these modules are listed in the “SEO” menu on the left. Whenever you’re working with a module, you can view documentation by clicking the “Help” tab in the upper-right-hand corner of your administration screen.', 'seo-ultimate');
|
51 |
echo "</p><p>";
|
52 |
_e('The Module Manager lets you disable or hide modules you don’t use. You can also silence modules from displaying bubble alerts on the menu.', 'seo-ultimate');
|
53 |
echo "</p>";
|
114 |
echo "\t\t<tr>\n\t\t\t<td class='module-status' id='module-status-$key'>\n";
|
115 |
echo "\t\t\t\t<input type='hidden' name='su-$key-module-status' id='su-$key-module-status' value='$currentstatus' />\n";
|
116 |
|
117 |
+
$hidden_is_hidden = ($this->plugin->call_module_func($key, 'get_menu_title', $module_menu_title) && $module_menu_title === false)
|
118 |
+
|| ($this->plugin->call_module_func($key, 'is_independent_module', $is_independent_module) && $is_independent_module &&
|
119 |
+
$this->plugin->call_module_func($key, 'get_parent_module', $parent_module) && $parent_module &&
|
120 |
+
$this->plugin->module_exists($parent_module));
|
121 |
+
|
122 |
foreach ($statuses as $statuscode => $statuslabel) {
|
123 |
|
124 |
$hmc = ($this->plugin->call_module_func($key, 'has_menu_count', $_hmc) && $_hmc);
|
127 |
$style = '';
|
128 |
switch ($statuscode) {
|
129 |
case SU_MODULE_ENABLED:
|
130 |
+
if (($currentstatus == SU_MODULE_SILENCED && !$hmc) ||
|
131 |
+
($currentstatus == SU_MODULE_HIDDEN && $hidden_is_hidden))
|
132 |
+
$is_current = true;
|
133 |
break;
|
134 |
case SU_MODULE_SILENCED:
|
135 |
if (!$any_hmc) continue 2; //break out of switch and foreach
|
136 |
if (!$hmc) $style = " style='visibility: hidden;'";
|
137 |
break;
|
138 |
case SU_MODULE_HIDDEN:
|
139 |
+
if ($hidden_is_hidden)
|
140 |
$style = " style='visibility: hidden;'";
|
141 |
break;
|
142 |
}
|
modules/opengraph/opengraph.css
CHANGED
@@ -5,4 +5,9 @@
|
|
5 |
|
6 |
#su-opengraph table.widefat .su-og_type {
|
7 |
width: 100px;
|
|
|
|
|
|
|
|
|
|
|
8 |
}
|
5 |
|
6 |
#su-opengraph table.widefat .su-og_type {
|
7 |
width: 100px;
|
8 |
+
}
|
9 |
+
|
10 |
+
#su-opengraph #su-default-values table.widefat td,
|
11 |
+
#su-opengraph #su-default-values table.widefat th {
|
12 |
+
padding-right: 3em;
|
13 |
}
|
modules/opengraph/opengraph.php
CHANGED
@@ -19,12 +19,17 @@ class SU_OpenGraph extends SU_Module {
|
|
19 |
return array(
|
20 |
'default_post_og_type' => 'article'
|
21 |
, 'default_page_og_type' => 'article'
|
|
|
|
|
|
|
22 |
);
|
23 |
}
|
24 |
|
25 |
function init() {
|
26 |
add_filter('language_attributes', array(&$this, 'html_tag_xmlns_attrs'), 1000);
|
27 |
add_action('su_head', array(&$this, 'head_tag_output'));
|
|
|
|
|
28 |
}
|
29 |
|
30 |
function html_tag_xmlns_attrs($attrs) {
|
@@ -41,13 +46,16 @@ class SU_OpenGraph extends SU_Module {
|
|
41 |
|
42 |
function head_tag_output() {
|
43 |
|
44 |
-
$tags = array();
|
45 |
|
46 |
if (is_home()) {
|
47 |
|
48 |
//Type
|
49 |
$tags['og:type'] = 'blog';
|
50 |
|
|
|
|
|
|
|
51 |
//Title
|
52 |
if (!($tags['og:title'] = $this->get_setting('home_og_title')))
|
53 |
$tags['og:title'] = get_bloginfo('name');
|
@@ -67,86 +75,104 @@ class SU_OpenGraph extends SU_Module {
|
|
67 |
global $wp_query;
|
68 |
$post = $wp_query->get_queried_object();
|
69 |
|
70 |
-
|
71 |
-
|
72 |
-
$tags['og:type'] = $this->
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
$
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
if ($this->
|
81 |
-
$tags['og:
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
114 |
}
|
115 |
}
|
116 |
-
|
117 |
-
|
118 |
-
|
|
|
|
|
|
|
|
|
|
|
119 |
}
|
120 |
-
|
121 |
} elseif (is_author()) {
|
122 |
|
123 |
global $wp_query;
|
124 |
$author = $wp_query->get_queried_object();
|
125 |
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
} else
|
151 |
return;
|
152 |
|
@@ -166,16 +192,28 @@ class SU_OpenGraph extends SU_Module {
|
|
166 |
//FB App ID
|
167 |
$tags['fb:app_id'] = $this->get_setting('default_fb_app_id');
|
168 |
|
|
|
|
|
|
|
169 |
//Output meta tags
|
170 |
$xmlnses = $this->namespaces_declared ? array() : $this->get_xmlns_attrs();
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
179 |
}
|
180 |
}
|
181 |
}
|
@@ -194,7 +232,7 @@ class SU_OpenGraph extends SU_Module {
|
|
194 |
$postmeta_edit_tabs = $this->get_postmeta_edit_tabs(array(
|
195 |
array(
|
196 |
'type' => 'dropdown'
|
197 |
-
, 'options' => array_merge(array(__('Use default', 'seo-ultimate')), $this->get_type_options())
|
198 |
, 'name' => 'og_type'
|
199 |
, 'label' => __('Type', 'seo-ultimate')
|
200 |
)
|
@@ -235,6 +273,7 @@ class SU_OpenGraph extends SU_Module {
|
|
235 |
$this->admin_form_table_start();
|
236 |
$this->textbox('og_site_name', __('Site Name', 'seo-ultimate'), false, false, array(), array('placeholder' => get_bloginfo('name')));
|
237 |
$this->textbox('default_fb_app_id', __('Facebook App ID', 'seo-ultimate'));
|
|
|
238 |
$this->admin_form_table_end();
|
239 |
}
|
240 |
|
@@ -242,10 +281,23 @@ class SU_OpenGraph extends SU_Module {
|
|
242 |
$posttypes = suwp::get_post_type_objects();
|
243 |
|
244 |
$this->admin_subheader(__('Default Types', 'seo-ultimate'));
|
245 |
-
$this->
|
246 |
-
|
247 |
-
|
248 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
249 |
|
250 |
$this->admin_subheader(__('Default Image', 'seo-ultimate'));
|
251 |
$this->admin_form_table_start();
|
@@ -270,7 +322,8 @@ class SU_OpenGraph extends SU_Module {
|
|
270 |
$fields['opengraph'][10]['og_title'] = $this->get_postmeta_textbox('og_title', __('Title:', 'seo-ultimate'));
|
271 |
$fields['opengraph'][20]['og_description'] = $this->get_postmeta_textarea('og_description', __('Description:', 'seo-ultimate'));
|
272 |
$fields['opengraph'][30]['og_image'] = $this->get_postmeta_jlsuggest_box('og_image', __('Image:', 'seo-ultimate'), 'types=posttype_attachment&post_mime_type=image/*');
|
273 |
-
$fields['opengraph'][40]['og_type'] = $this->get_postmeta_dropdown('og_type', array_merge(array(__('Use default', 'seo-ultimate')), $this->get_type_options()), __('Type:', 'seo-ultimate'));
|
|
|
274 |
|
275 |
return $fields;
|
276 |
}
|
@@ -324,6 +377,35 @@ class SU_OpenGraph extends SU_Module {
|
|
324 |
)
|
325 |
);
|
326 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
327 |
}
|
328 |
|
329 |
}
|
19 |
return array(
|
20 |
'default_post_og_type' => 'article'
|
21 |
, 'default_page_og_type' => 'article'
|
22 |
+
, 'default_post_twitter_card' => 'summary'
|
23 |
+
, 'default_page_twitter_card' => 'summary'
|
24 |
+
, 'default_attachment_twitter_card' => 'photo'
|
25 |
);
|
26 |
}
|
27 |
|
28 |
function init() {
|
29 |
add_filter('language_attributes', array(&$this, 'html_tag_xmlns_attrs'), 1000);
|
30 |
add_action('su_head', array(&$this, 'head_tag_output'));
|
31 |
+
add_filter('su_get_setting-opengraph-twitter_site_handle', array(&$this, 'sanitize_twitter_handle'));
|
32 |
+
add_filter('user_contactmethods', array(&$this, 'add_twitter_field'));
|
33 |
}
|
34 |
|
35 |
function html_tag_xmlns_attrs($attrs) {
|
46 |
|
47 |
function head_tag_output() {
|
48 |
|
49 |
+
$tags = $twitter_tags = array();
|
50 |
|
51 |
if (is_home()) {
|
52 |
|
53 |
//Type
|
54 |
$tags['og:type'] = 'blog';
|
55 |
|
56 |
+
//Twitter Type
|
57 |
+
$twitter_tags['twitter:card'] = 'summary';
|
58 |
+
|
59 |
//Title
|
60 |
if (!($tags['og:title'] = $this->get_setting('home_og_title')))
|
61 |
$tags['og:title'] = get_bloginfo('name');
|
75 |
global $wp_query;
|
76 |
$post = $wp_query->get_queried_object();
|
77 |
|
78 |
+
if (is_object($post)) {
|
79 |
+
//Type
|
80 |
+
if (!($tags['og:type'] = $this->get_postmeta('og_type')))
|
81 |
+
$tags['og:type'] = $this->get_setting("default_{$post->post_type}_og_type");
|
82 |
+
|
83 |
+
//Twitter Type
|
84 |
+
if (!($twitter_tags['twitter:card'] = $this->get_postmeta('twitter_card')))
|
85 |
+
$twitter_tags['twitter:card'] = $this->get_setting("default_{$post->post_type}_twitter_card");
|
86 |
+
|
87 |
+
//Title
|
88 |
+
if (!($tags['og:title'] = $this->get_postmeta('og_title')))
|
89 |
+
$tags['og:title'] = strip_tags( apply_filters( 'single_post_title', $post->post_title ) );
|
90 |
+
|
91 |
+
//Description
|
92 |
+
if (!($tags['og:description'] = $this->get_postmeta('og_description')))
|
93 |
+
if ($this->plugin->call_module_func('meta-descriptions', 'get_meta_desc', $meta_desc, false) && $meta_desc)
|
94 |
+
$tags['og:description'] = $meta_desc;
|
95 |
+
|
96 |
+
//URL
|
97 |
+
$tags['og:url'] = get_permalink($post->ID);
|
98 |
+
|
99 |
+
//Image
|
100 |
+
$tags['og:image'] = $this->jlsuggest_value_to_url($this->get_postmeta('og_image'), true);
|
101 |
+
if (!$tags['og:image']) {
|
102 |
+
if ('attachment' == $post->post_type)
|
103 |
+
$tags['og:image'] = wp_get_attachment_url();
|
104 |
+
elseif ($thumbnail_id = get_post_thumbnail_id($post->ID))
|
105 |
+
$tags['og:image'] = wp_get_attachment_url($thumbnail_id);
|
106 |
+
}
|
107 |
+
|
108 |
+
//Additional fields
|
109 |
+
switch ($tags['og:type']) {
|
110 |
+
case 'article':
|
111 |
+
|
112 |
+
$tags['article:published_time'] = get_the_date('Y-m-d');
|
113 |
+
$tags['article:modified_time'] = get_the_modified_date('Y-m-d');
|
114 |
+
$tags['article:author'] = get_author_posts_url($post->post_author);
|
115 |
+
|
116 |
+
$single_category = (count(get_the_category()) == 1);
|
117 |
+
|
118 |
+
$taxonomy_names = suwp::get_taxonomy_names();
|
119 |
+
foreach ($taxonomy_names as $taxonomy_name) {
|
120 |
+
if ($terms = get_the_terms(get_the_ID(), $taxonomy_name)) {
|
121 |
+
|
122 |
+
if ($single_category && 'category' == $taxonomy_name)
|
123 |
+
$meta_property = 'article:section';
|
124 |
+
else
|
125 |
+
$meta_property = 'article:tag';
|
126 |
+
|
127 |
+
foreach ($terms as $term) {
|
128 |
+
$tags[$meta_property][] = $term->name;
|
129 |
+
}
|
130 |
}
|
131 |
}
|
132 |
+
|
133 |
+
break;
|
134 |
+
}
|
135 |
+
|
136 |
+
//Author's Twitter Handle
|
137 |
+
$handle = get_user_meta($post->post_author, 'twitter', true);
|
138 |
+
$handle = $this->sanitize_twitter_handle($handle);
|
139 |
+
$twitter_tags['twitter:creator'] = $handle;
|
140 |
}
|
|
|
141 |
} elseif (is_author()) {
|
142 |
|
143 |
global $wp_query;
|
144 |
$author = $wp_query->get_queried_object();
|
145 |
|
146 |
+
if (is_object($author)) {
|
147 |
+
//Type
|
148 |
+
$tags['og:type'] = 'profile';
|
149 |
+
|
150 |
+
//Title
|
151 |
+
$tags['og:title'] = $author->display_name;
|
152 |
+
|
153 |
+
//Description
|
154 |
+
$tags['og:title'] = get_the_author_meta('description', $author->ID);
|
155 |
+
|
156 |
+
//Image
|
157 |
+
$tags['og:image'] = false;
|
158 |
+
|
159 |
+
//URL
|
160 |
+
$tags['og:url'] = get_author_posts_url($author->ID, $author->user_nicename);
|
161 |
+
|
162 |
+
//First Name
|
163 |
+
$tags['profile:first_name'] = get_the_author_meta('first_name', $author->ID);
|
164 |
+
|
165 |
+
//Last Name
|
166 |
+
$tags['profile:last_name'] = get_the_author_meta('last_name', $author->ID);
|
167 |
+
|
168 |
+
//Username
|
169 |
+
$tags['profile:username'] = $author->user_login;
|
170 |
+
|
171 |
+
//Twitter Handle
|
172 |
+
$handle = get_user_meta($author->ID, 'twitter', true);
|
173 |
+
$handle = $this->sanitize_twitter_handle($handle);
|
174 |
+
$twitter_tags['twitter:creator'] = $handle;
|
175 |
+
}
|
176 |
} else
|
177 |
return;
|
178 |
|
192 |
//FB App ID
|
193 |
$tags['fb:app_id'] = $this->get_setting('default_fb_app_id');
|
194 |
|
195 |
+
//Twitter Site Handle
|
196 |
+
$twitter_tags['twitter:site'] = $this->get_setting('twitter_site_handle');
|
197 |
+
|
198 |
//Output meta tags
|
199 |
$xmlnses = $this->namespaces_declared ? array() : $this->get_xmlns_attrs();
|
200 |
+
|
201 |
+
$output_formats = array(
|
202 |
+
'<meta property="%1$s" content="%2$s" %3$s/>' => $tags
|
203 |
+
, '<meta name="%1$s" content="%2$s" />' => $twitter_tags
|
204 |
+
);
|
205 |
+
foreach ($output_formats as $html_format => $format_tags) {
|
206 |
+
foreach ($format_tags as $property => $values) {
|
207 |
+
foreach ((array)$values as $value) {
|
208 |
+
$property = su_esc_attr($property);
|
209 |
+
$value = su_esc_attr($value);
|
210 |
+
if (strlen(trim($property)) && strlen(trim($value))) {
|
211 |
+
$xmlns = $xmlnses[sustr::upto($property, ':')];
|
212 |
+
if ($xmlns) $xmlns .= ' ';
|
213 |
+
echo "\t";
|
214 |
+
printf($html_format, $property, $value, $xmlns);
|
215 |
+
echo "\n";
|
216 |
+
}
|
217 |
}
|
218 |
}
|
219 |
}
|
232 |
$postmeta_edit_tabs = $this->get_postmeta_edit_tabs(array(
|
233 |
array(
|
234 |
'type' => 'dropdown'
|
235 |
+
, 'options' => array_merge(array('' => __('Use default', 'seo-ultimate')), $this->get_type_options())
|
236 |
, 'name' => 'og_type'
|
237 |
, 'label' => __('Type', 'seo-ultimate')
|
238 |
)
|
273 |
$this->admin_form_table_start();
|
274 |
$this->textbox('og_site_name', __('Site Name', 'seo-ultimate'), false, false, array(), array('placeholder' => get_bloginfo('name')));
|
275 |
$this->textbox('default_fb_app_id', __('Facebook App ID', 'seo-ultimate'));
|
276 |
+
$this->textbox('twitter_site_handle', __('This Site’s Twitter Handle', 'seo-ultimate'));
|
277 |
$this->admin_form_table_end();
|
278 |
}
|
279 |
|
281 |
$posttypes = suwp::get_post_type_objects();
|
282 |
|
283 |
$this->admin_subheader(__('Default Types', 'seo-ultimate'));
|
284 |
+
$this->admin_wftable_start(array(
|
285 |
+
'posttype' => __('Post Type', 'seo-ultimate')
|
286 |
+
, 'og' => __('Open Graph Type', 'seo-ultimate')
|
287 |
+
, 'twitter' => __('Twitter Type', 'seo-ultimate')
|
288 |
+
));
|
289 |
+
foreach ($posttypes as $posttype) {
|
290 |
+
echo "<tr valign='middle'>\n";
|
291 |
+
echo "\t<th class='su-opengraph-posttype' scope='row'>" . esc_html($posttype->labels->name) . "</th>\n";
|
292 |
+
echo "\t<td class='su-opengraph-og'>";
|
293 |
+
$this->dropdown("default_{$posttype->name}_og_type", $this->get_type_options(), false, '%s', array('in_table' => false));
|
294 |
+
echo "</td>\n";
|
295 |
+
echo "\t<td class='su-opengraph-twitter'>";
|
296 |
+
$this->dropdown("default_{$posttype->name}_twitter_card", $this->get_twitter_type_options(), false, '%s', array('in_table' => false));
|
297 |
+
echo "</td>\n";
|
298 |
+
echo "</tr>\n";
|
299 |
+
}
|
300 |
+
$this->admin_wftable_end();
|
301 |
|
302 |
$this->admin_subheader(__('Default Image', 'seo-ultimate'));
|
303 |
$this->admin_form_table_start();
|
322 |
$fields['opengraph'][10]['og_title'] = $this->get_postmeta_textbox('og_title', __('Title:', 'seo-ultimate'));
|
323 |
$fields['opengraph'][20]['og_description'] = $this->get_postmeta_textarea('og_description', __('Description:', 'seo-ultimate'));
|
324 |
$fields['opengraph'][30]['og_image'] = $this->get_postmeta_jlsuggest_box('og_image', __('Image:', 'seo-ultimate'), 'types=posttype_attachment&post_mime_type=image/*');
|
325 |
+
$fields['opengraph'][40]['og_type'] = $this->get_postmeta_dropdown('og_type', array_merge(array('' => __('Use default', 'seo-ultimate')), $this->get_type_options()), __('Open Graph Type:', 'seo-ultimate'));
|
326 |
+
$fields['opengraph'][50]['twitter_card'] = $this->get_postmeta_dropdown('twitter_card', array_merge(array('' => __('Use default', 'seo-ultimate')), $this->get_twitter_type_options()), __('Twitter Type:', 'seo-ultimate'));
|
327 |
|
328 |
return $fields;
|
329 |
}
|
377 |
)
|
378 |
);
|
379 |
}
|
380 |
+
|
381 |
+
function get_twitter_type_options() {
|
382 |
+
return array(
|
383 |
+
'summary' => __('Regular', 'seo-ultimate')
|
384 |
+
, 'photo' => __('Photo', 'seo-ultimate')
|
385 |
+
);
|
386 |
+
}
|
387 |
+
|
388 |
+
function sanitize_twitter_handle($value) {
|
389 |
+
if (strpos($value, '/') === false) {
|
390 |
+
$handle = ltrim($value, '@');
|
391 |
+
} else {
|
392 |
+
$url_parts = explode('/', $value);
|
393 |
+
$handle = array_pop($url_parts);
|
394 |
+
}
|
395 |
+
|
396 |
+
$handle = sustr::preg_filter('a-zA-Z0-9_', $handle);
|
397 |
+
$handle = trim($handle);
|
398 |
+
|
399 |
+
if ($handle)
|
400 |
+
$handle = "@$handle";
|
401 |
+
|
402 |
+
return $handle;
|
403 |
+
}
|
404 |
+
|
405 |
+
function add_twitter_field( $contactmethods ) {
|
406 |
+
$contactmethods['twitter'] = __('Twitter Handle', 'seo-ultimate');
|
407 |
+
return $contactmethods;
|
408 |
+
}
|
409 |
}
|
410 |
|
411 |
}
|
modules/rich-snippets/rich-snippets.php
CHANGED
@@ -9,47 +9,29 @@ if (class_exists('SU_Module')) {
|
|
9 |
|
10 |
class SU_RichSnippets extends SU_Module {
|
11 |
|
|
|
|
|
12 |
function get_module_title() { return __('Rich Snippet Creator', 'seo-ultimate'); }
|
13 |
|
14 |
-
function
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
}
|
20 |
|
21 |
function init() {
|
22 |
add_filter('the_content', array(&$this, 'apply_markup'));
|
23 |
-
add_filter('su_get_postmeta-rich_snippet_type', array(&$this, 'autodetect_type'));
|
24 |
-
}
|
25 |
-
|
26 |
-
function admin_page_contents() {
|
27 |
-
$this->admin_form_start();
|
28 |
-
$this->radiobuttons('format', suarr::flatten_values($this->get_supported_snippet_formats(), 'label'), __('Data Format', 'seo-ultimate'));
|
29 |
-
$this->textarea('review_terms', __('Categories/Tags That Indicate Reviews', 'seo-ultimate'));
|
30 |
-
$this->admin_form_end();
|
31 |
}
|
32 |
|
33 |
function get_supported_snippet_formats() {
|
34 |
|
35 |
return array(
|
36 |
-
'
|
37 |
-
'label' => __('
|
38 |
-
, 'item_tags_template' => '<div
|
39 |
-
, 'property_tags_template' => '<span class="%1$s">%2$s</span>'
|
40 |
-
, 'hidden_property_tags_template' => '<span class="%1$s"><span class="value-title" title="%2$s"></span></span>'
|
41 |
-
)
|
42 |
-
, 'md' => array(
|
43 |
-
'label' => __('HTML5 Microdata', 'seo-ultimate')
|
44 |
-
, 'item_tags_template' => '<div itemscope itemtype="http://data-vocabulary.org/%1$s">%2$s</div>'
|
45 |
, 'property_tags_template' => '<span itemprop="%1$s">%2$s</span>'
|
46 |
-
, 'hidden_property_tags_template' => '<
|
47 |
-
)
|
48 |
-
, 'rdfa' => array(
|
49 |
-
'label' => __('RDFa', 'seo-ultimate')
|
50 |
-
, 'item_tags_template' => '<div xmlns:v="http://rdf.data-vocabulary.org/#" typeof="v:%1$s">%2$s</div>'
|
51 |
-
, 'property_tags_template' => '<span property="v:%1$s">%2$s</span>'
|
52 |
-
, 'hidden_property_tags_template' => '<span property="v:%1$s" content="%2$s"></span>'
|
53 |
)
|
54 |
);
|
55 |
}
|
@@ -60,69 +42,92 @@ class SU_RichSnippets extends SU_Module {
|
|
60 |
//REVIEW
|
61 |
'review' => array(
|
62 |
'label' => __('Review', 'seo-ultimate')
|
63 |
-
, 'tags' =>
|
64 |
-
|
65 |
-
, 'md' => 'Review'
|
66 |
-
, 'rdfa' => 'Review'
|
67 |
-
)
|
68 |
, 'properties' => array(
|
69 |
'item' => array(
|
70 |
'label' => __('Item Reviewed', 'seo-ultimate')
|
71 |
-
, 'tags' =>
|
72 |
-
|
73 |
-
, 'md' => 'itemreviewed'
|
74 |
-
, 'rdfa' => 'itemreviewed'
|
75 |
-
),'hidden_tags' => array(
|
76 |
-
'mf' => '<span class="item"><span class="fn"><span class="value-title" title="%s"></span></span></span>'
|
77 |
-
, 'md' => 'itemreviewed'
|
78 |
-
, 'rdfa' => 'itemreviewed'
|
79 |
-
)
|
80 |
-
)
|
81 |
-
, 'rating' => array(
|
82 |
'label' => __('Star Rating', 'seo-ultimate')
|
83 |
, 'value_format' => array('%s star', '%s stars', '%s-star', '%s-stars')
|
84 |
-
, 'tags' => '
|
85 |
-
|
86 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87 |
'label' => __('Review Author', 'seo-ultimate')
|
88 |
, 'editable' => false
|
89 |
, 'value_function' => 'get_the_author'
|
90 |
-
, 'tags' => '
|
91 |
-
)
|
92 |
-
, 'date_reviewed' => array(
|
93 |
'label' => __('Date Reviewed', 'seo-ultimate')
|
94 |
, 'editable' => false
|
95 |
, 'value_function' => array('get_the_time', 'Y-m-d')
|
96 |
-
, 'tags' => '
|
97 |
-
, 'hidden_tags' =>
|
98 |
-
|
99 |
-
|
100 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
)
|
103 |
)
|
104 |
)
|
105 |
);
|
106 |
}
|
107 |
|
108 |
-
function autodetect_type($current_type) {
|
109 |
-
if (!strlen($current_type) && $terms = suwp::get_all_the_terms()) {
|
110 |
-
|
111 |
-
$types = $this->get_supported_snippet_types();
|
112 |
-
foreach ($types as $type => $type_data) {
|
113 |
-
|
114 |
-
if (suarr::any_in_array(
|
115 |
-
suarr::explode_lines($this->get_setting("{$type}_terms", ''))
|
116 |
-
, suarr::flatten_values($terms, 'name')
|
117 |
-
, false
|
118 |
-
))
|
119 |
-
return $type;
|
120 |
-
}
|
121 |
-
}
|
122 |
-
|
123 |
-
return $current_type;
|
124 |
-
}
|
125 |
-
|
126 |
function add_tags($content, $tags, $template, $escape=true) {
|
127 |
if ($escape) $content = su_esc_attr($content);
|
128 |
$tags = array_reverse((array)$tags);
|
@@ -145,7 +150,7 @@ class SU_RichSnippets extends SU_Module {
|
|
145 |
if (!strlen($type) || $type == 'none') return $content;
|
146 |
|
147 |
//Get the current format
|
148 |
-
$format =
|
149 |
|
150 |
//Get tag templates for the current format
|
151 |
$formats = $this->get_supported_snippet_formats();
|
@@ -154,99 +159,226 @@ class SU_RichSnippets extends SU_Module {
|
|
154 |
$types = $this->get_supported_snippet_types();
|
155 |
$type_data = $types[$type];
|
156 |
|
|
|
|
|
|
|
|
|
157 |
//Cycle through the current type's properties
|
158 |
$append = '';
|
159 |
$num_properties = 0;
|
|
|
160 |
foreach ($type_data['properties'] as $property => $property_data) {
|
161 |
|
162 |
-
//Get the current value for this property
|
163 |
-
$value = strval($this->get_postmeta("rich_snippet_{$type}_{$property}"));
|
164 |
-
|
165 |
-
//If a value is not set, look for a value-generating function
|
166 |
-
if (!strlen($value)) {
|
167 |
-
if (isset($property_data['value_function'])) {
|
168 |
-
$valfunc = (array)$property_data['value_function'];
|
169 |
-
if (is_callable($valfunc[0])) {
|
170 |
-
$valfunc_args = isset($valfunc[1]) ? (array)$valfunc[1] : array();
|
171 |
-
$value = call_user_func_array($valfunc[0], $valfunc_args);
|
172 |
-
}
|
173 |
-
}
|
174 |
-
}
|
175 |
-
|
176 |
-
//If still no value, skip this property
|
177 |
-
if (!strlen($value)) continue;
|
178 |
-
|
179 |
//Get the property tags
|
180 |
$tag = is_array($property_data['tags']) ?
|
181 |
-
|
182 |
-
|
183 |
|
184 |
if (isset($property_data['hidden_tags'])) {
|
185 |
$hidden_tag = is_array($property_data['hidden_tags']) ?
|
186 |
-
|
187 |
-
|
188 |
} else
|
189 |
$hidden_tag = $tag;
|
190 |
|
191 |
-
//Add property tags to the value
|
192 |
-
$markedup_value = $this->add_tags($value, $tag, $formats[$format]['property_tags_template']);
|
193 |
-
$hidden_markedup_value = $this->add_tags($value, $hidden_tag, $formats[$format]['hidden_property_tags_template']);
|
194 |
|
195 |
-
|
196 |
-
|
197 |
-
$
|
198 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
199 |
} else {
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
210 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
211 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
212 |
|
213 |
-
|
214 |
-
$append .= $hidden_markedup_value;
|
215 |
-
|
216 |
-
$num_properties++;
|
217 |
}
|
218 |
|
219 |
-
if ($num_properties)
|
220 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
221 |
|
222 |
//Return filtered content
|
223 |
return $content;
|
224 |
}
|
225 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
function postmeta_fields($fields) {
|
227 |
$fields['serp'][40]['rich_snippet_type'] = $this->get_postmeta_dropdown('rich_snippet_type', array(
|
228 |
-
'none' => __('
|
229 |
, 'review' => __('Review', 'seo-ultimate')
|
230 |
-
|
|
|
231 |
|
232 |
-
$fields['serp'][45]['rich_snippet_review_item|rich_snippet_review_rating'] =
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
|
251 |
return $fields;
|
252 |
}
|
@@ -269,7 +401,6 @@ class SU_RichSnippets extends SU_Module {
|
|
269 |
, 'title' => __('Settings Help', 'seo-ultimate')
|
270 |
, 'content' => __("
|
271 |
<ul>
|
272 |
-
<li><strong>Data Format</strong> — This lets you select the “language” that Rich Snippet Creator uses to communicate the rich snippet data to Google. Google supports all three options. We recommend “Microformats” because it’s compatible with the greatest number of HTML/XHTML variants. This option will likely be of interest only to advanced users.</li>
|
273 |
<li><strong>Categories/Tags That Indicate Reviews</strong> — If you haven’t set the “Rich Snippet Type” setting for an old post or page, then Rich Snippet Creator will automatically set its default type to “Review” (instead of “None”) if it has a category or tag whose name is in this list (the default list is “Reviews” and “Review”). Put one category/tag name per line.</li>
|
274 |
</ul>
|
275 |
", 'seo-ultimate')));
|
9 |
|
10 |
class SU_RichSnippets extends SU_Module {
|
11 |
|
12 |
+
var $apply_subproperty_markup_args = array();
|
13 |
+
|
14 |
function get_module_title() { return __('Rich Snippet Creator', 'seo-ultimate'); }
|
15 |
|
16 |
+
function get_admin_url($key = false) {
|
17 |
+
if ($key)
|
18 |
+
return parent::get_admin_url($key);
|
19 |
+
|
20 |
+
return false;
|
21 |
}
|
22 |
|
23 |
function init() {
|
24 |
add_filter('the_content', array(&$this, 'apply_markup'));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
}
|
26 |
|
27 |
function get_supported_snippet_formats() {
|
28 |
|
29 |
return array(
|
30 |
+
'so' => array(
|
31 |
+
'label' => __('Schema.org Microdata', 'seo-ultimate')
|
32 |
+
, 'item_tags_template' => '<div itemscope itemtype="http://schema.org/%1$s">%2$s</div>'
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
, 'property_tags_template' => '<span itemprop="%1$s">%2$s</span>'
|
34 |
+
, 'hidden_property_tags_template' => '<meta itemprop="%1$s" content="%2$s" />'
|
|
|
|
|
|
|
|
|
|
|
|
|
35 |
)
|
36 |
);
|
37 |
}
|
42 |
//REVIEW
|
43 |
'review' => array(
|
44 |
'label' => __('Review', 'seo-ultimate')
|
45 |
+
, 'tags' => 'Review'
|
46 |
+
, 'content_tags' => '<div itemprop="reviewBody">%s</div>'
|
|
|
|
|
|
|
47 |
, 'properties' => array(
|
48 |
'item' => array(
|
49 |
'label' => __('Item Reviewed', 'seo-ultimate')
|
50 |
+
, 'tags' => 'itemReviewed'
|
51 |
+
),'rating' => array(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
'label' => __('Star Rating', 'seo-ultimate')
|
53 |
, 'value_format' => array('%s star', '%s stars', '%s-star', '%s-stars')
|
54 |
+
, 'tags' => '<span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">'
|
55 |
+
. '<meta itemprop="worstRating" content="0" />'
|
56 |
+
. '<span itemprop="ratingValue">%s</span>'
|
57 |
+
. '<meta itemprop="bestRating" content="5" />'
|
58 |
+
. '</span>'
|
59 |
+
, 'hidden_tags'=> '<span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">'
|
60 |
+
. '<meta itemprop="worstRating" content="0" />'
|
61 |
+
. '<meta itemprop="ratingValue" content="%s" />'
|
62 |
+
. '<meta itemprop="bestRating" content="5" />'
|
63 |
+
. '</span>'
|
64 |
+
),'reviewer' => array(
|
65 |
'label' => __('Review Author', 'seo-ultimate')
|
66 |
, 'editable' => false
|
67 |
, 'value_function' => 'get_the_author'
|
68 |
+
, 'tags' => 'author'
|
69 |
+
),'date_reviewed' => array(
|
|
|
70 |
'label' => __('Date Reviewed', 'seo-ultimate')
|
71 |
, 'editable' => false
|
72 |
, 'value_function' => array('get_the_time', 'Y-m-d')
|
73 |
+
, 'tags' => '<time itemprop="datePublished">%s</time>'
|
74 |
+
, 'hidden_tags' => '<time itemprop="datePublished" datetime="%s" />'
|
75 |
+
)
|
76 |
+
)
|
77 |
+
),'place' => array(
|
78 |
+
'label' => __('Place', 'seo-ultimate')
|
79 |
+
, 'tags' => 'Place'
|
80 |
+
, 'properties' => array(
|
81 |
+
'address' => array(
|
82 |
+
'label' => __('Address', 'seo-ultimate')
|
83 |
+
, 'tags' => '<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">%s</span>'
|
84 |
+
, 'properties' => array(
|
85 |
+
'street' => array(
|
86 |
+
'label' => __('Street Address', 'seo-ultimate')
|
87 |
+
, 'tags' => 'streetAddress'
|
88 |
+
),'po_box' => array(
|
89 |
+
'label' => __('PO Box', 'seo-ultimate')
|
90 |
+
, 'tags' => 'postOfficeBoxNumber'
|
91 |
+
),'city' => array(
|
92 |
+
'label' => __('City', 'seo-ultimate')
|
93 |
+
, 'tags' => 'addressLocality'
|
94 |
+
),'state' => array(
|
95 |
+
'label' => __('City', 'seo-ultimate')
|
96 |
+
, 'tags' => 'addressRegion'
|
97 |
+
),'country' => array(
|
98 |
+
'label' => __('Country', 'seo-ultimate')
|
99 |
+
, 'tags' => 'addressCountry'
|
100 |
+
),'postal_code' => array(
|
101 |
+
'label' => __('Postal Code', 'seo-ultimate')
|
102 |
+
, 'tags' => 'postalCode'
|
103 |
+
)
|
104 |
)
|
105 |
+
),'fax_number' => array(
|
106 |
+
'label' => __('Fax Number', 'seo-ultimate')
|
107 |
+
, 'tags' => 'faxNumber'
|
108 |
+
),'map_url' => array(
|
109 |
+
'label' => __('Map URL', 'seo-ultimate')
|
110 |
+
, 'tags' => '<a itemprop="map" href="%1$s">%1$s</a>'
|
111 |
+
, 'hidden_tags' => '<link itemprop="map" href="%s" />'
|
112 |
+
, 'jlsuggest' => true
|
113 |
+
),'photo' => array(
|
114 |
+
'label' => __('Photo', 'seo-ultimate')
|
115 |
+
, 'tags'=>'<span itemprop="photo" itemscope itemtype="http://schema.org/Photograph">'
|
116 |
+
. '<a itemprop="url" href="%1$s">%1$s</a>'
|
117 |
+
. '</span>'
|
118 |
+
, 'hidden_tags'=> '<span itemprop="photo" itemscope itemtype="http://schema.org/Photograph">'
|
119 |
+
. '<link itemprop="url" href="%s" />'
|
120 |
+
. '</span>'
|
121 |
+
, 'jlsuggest' => true
|
122 |
+
),'tel_number' => array(
|
123 |
+
'label' => __('Phone Number', 'seo-ultimate')
|
124 |
+
, 'tags' => 'telephone'
|
125 |
)
|
126 |
)
|
127 |
)
|
128 |
);
|
129 |
}
|
130 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
131 |
function add_tags($content, $tags, $template, $escape=true) {
|
132 |
if ($escape) $content = su_esc_attr($content);
|
133 |
$tags = array_reverse((array)$tags);
|
150 |
if (!strlen($type) || $type == 'none') return $content;
|
151 |
|
152 |
//Get the current format
|
153 |
+
$format = 'so';
|
154 |
|
155 |
//Get tag templates for the current format
|
156 |
$formats = $this->get_supported_snippet_formats();
|
159 |
$types = $this->get_supported_snippet_types();
|
160 |
$type_data = $types[$type];
|
161 |
|
162 |
+
$tag = is_array($property_data['tags']) ?
|
163 |
+
$property_data['tags'][$format] :
|
164 |
+
$property_data['tags'];
|
165 |
+
|
166 |
//Cycle through the current type's properties
|
167 |
$append = '';
|
168 |
$num_properties = 0;
|
169 |
+
$supervalue_regex = '';
|
170 |
foreach ($type_data['properties'] as $property => $property_data) {
|
171 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
172 |
//Get the property tags
|
173 |
$tag = is_array($property_data['tags']) ?
|
174 |
+
$property_data['tags'][$format] :
|
175 |
+
$property_data['tags'];
|
176 |
|
177 |
if (isset($property_data['hidden_tags'])) {
|
178 |
$hidden_tag = is_array($property_data['hidden_tags']) ?
|
179 |
+
$property_data['hidden_tags'][$format] :
|
180 |
+
$property_data['hidden_tags'];
|
181 |
} else
|
182 |
$hidden_tag = $tag;
|
183 |
|
|
|
|
|
|
|
184 |
|
185 |
+
if (isset($property_data['properties']) && is_array($property_data['properties']) && count($property_data['properties'])) {
|
186 |
+
|
187 |
+
$subproperty_regex_pieces = array();
|
188 |
+
$subproperty_hidden_markedup_values = array();
|
189 |
+
foreach ($property_data['properties'] as $subproperty => $subproperty_data) {
|
190 |
+
|
191 |
+
//Get the subproperty tags
|
192 |
+
$subproperty_tag = is_array($subproperty_data['tags']) ?
|
193 |
+
$subproperty_data['tags'][$format] :
|
194 |
+
$subproperty_data['tags'];
|
195 |
+
|
196 |
+
if (isset($subproperty_data['hidden_tags'])) {
|
197 |
+
$subproperty_hidden_tag = is_array($subproperty_data['hidden_tags']) ?
|
198 |
+
$subproperty_data['hidden_tags'][$format] :
|
199 |
+
$subproperty_data['hidden_tags'];
|
200 |
+
} else
|
201 |
+
$subproperty_hidden_tag = $subproperty_tag;
|
202 |
+
|
203 |
+
$subproperty_value = strval($this->get_postmeta("rich_snippet_{$type}_{$property}_{$subproperty}"));
|
204 |
+
if ($subproperty_value) {
|
205 |
+
$subproperty_hidden_markedup_values[] = $this->add_tags($subproperty_value, $subproperty_hidden_tag, $formats[$format]['hidden_property_tags_template']);
|
206 |
+
$subproperty_regex_pieces[] = sustr::preg_escape($subproperty_value);
|
207 |
+
}
|
208 |
+
}
|
209 |
+
/*$supervalue_regex = implode('(<br ?/?>|\s|,)*?', $subproperty_regex_pieces);*/
|
210 |
+
$supervalue_regex = implode('|', $subproperty_regex_pieces);
|
211 |
+
$supervalue_regex = "($supervalue_regex)";
|
212 |
+
$supervalue_regex = array_fill(0, count($subproperty_regex_pieces), $supervalue_regex);
|
213 |
+
$supervalue_regex = implode('(<br ?/?>|\s|.){0,20}', $supervalue_regex);
|
214 |
+
|
215 |
+
$this->apply_subproperty_markup_args = array(
|
216 |
+
'format' => $format
|
217 |
+
, 'type' => $type
|
218 |
+
, 'property' => $property
|
219 |
+
, 'property_tag' => $tag
|
220 |
+
, 'property_tag_template' => $formats[$format]['property_tags_template']
|
221 |
+
, 'subproperties' => $property_data['properties']
|
222 |
+
);
|
223 |
+
$count = 0;
|
224 |
+
$content = preg_replace_callback("%({$supervalue_regex})%", array(&$this, 'apply_subproperty_markup'), $content, 1, $count);
|
225 |
+
|
226 |
+
if ($count == 0) {
|
227 |
+
if (count($subproperty_hidden_markedup_values)) {
|
228 |
+
$append .= $this->add_tags(implode($subproperty_hidden_markedup_values), $tag, $formats[$format]['property_tags_template'], false);
|
229 |
+
$num_properties++;
|
230 |
+
}
|
231 |
+
} else {
|
232 |
+
$num_properties++;
|
233 |
+
}
|
234 |
+
|
235 |
} else {
|
236 |
+
|
237 |
+
//Get the current value for this property
|
238 |
+
$value = strval($this->get_postmeta("rich_snippet_{$type}_{$property}"));
|
239 |
+
|
240 |
+
if (strlen($value)) {
|
241 |
+
|
242 |
+
if (sustr::startswith($value, 'obj_') && isset($property_data['jlsuggest']) && $property_data['jlsuggest'])
|
243 |
+
$value = $this->jlsuggest_value_to_url($value, true);
|
244 |
+
|
245 |
+
} else {
|
246 |
+
|
247 |
+
//If a value is not set, look for a value-generating function
|
248 |
+
if (isset($property_data['value_function'])) {
|
249 |
+
$valfunc = (array)$property_data['value_function'];
|
250 |
+
if (is_callable($valfunc[0])) {
|
251 |
+
$valfunc_args = isset($valfunc[1]) ? (array)$valfunc[1] : array();
|
252 |
+
$value = call_user_func_array($valfunc[0], $valfunc_args);
|
253 |
+
}
|
254 |
+
}
|
255 |
+
}
|
256 |
+
|
257 |
+
//If still no value, skip this property
|
258 |
+
if (!strlen($value)) continue;
|
259 |
+
|
260 |
+
//Add property tags to the value
|
261 |
+
$markedup_value = $this->add_tags($value, $tag, $formats[$format]['property_tags_template']);
|
262 |
+
$hidden_markedup_value = $this->add_tags($value, $hidden_tag, $formats[$format]['hidden_property_tags_template']);
|
263 |
+
|
264 |
+
//Apply a value format to visible values if provided
|
265 |
+
if (isset($property_data['value_format'])) {
|
266 |
+
$values = array_values(sustr::batch_replace('%s', $value, $property_data['value_format']));
|
267 |
+
$markedup_values = array_values(sustr::batch_replace('%s', $markedup_value, $property_data['value_format']));
|
268 |
+
} else {
|
269 |
+
$values = array($value);
|
270 |
+
$markedup_values = array($markedup_value);
|
271 |
}
|
272 |
+
|
273 |
+
//Is the value in the content, and are we allowed to search/replace the content for this value?
|
274 |
+
$count = 0;
|
275 |
+
if (empty($property_data['always_hidden'])) {
|
276 |
+
for ($i=0; $i<count($values); $i++) {
|
277 |
+
$content = sustr::htmlsafe_str_replace($values[$i], $markedup_values[$i], $content, 1, $count);
|
278 |
+
if ($count > 0) break;
|
279 |
+
}
|
280 |
+
}
|
281 |
+
|
282 |
+
if ($count == 0)
|
283 |
+
$append .= $hidden_markedup_value;
|
284 |
+
|
285 |
+
$num_properties++;
|
286 |
}
|
287 |
+
}
|
288 |
+
|
289 |
+
if (isset($type_data['content_tags'])) {
|
290 |
+
$content_tag = is_array($type_data['content_tags']) ?
|
291 |
+
$type_data['content_tags'][$format] :
|
292 |
+
$type_data['content_tags'];
|
293 |
|
294 |
+
$content = $this->add_tags($content, $content_tag, $formats[$format]['property_tags_template'], false);
|
|
|
|
|
|
|
295 |
}
|
296 |
|
297 |
+
if ($num_properties) {
|
298 |
+
$type_tag = is_array($type_data['tags']) ?
|
299 |
+
$type_data['tags'][$format] :
|
300 |
+
$type_data['tags'];
|
301 |
+
$content = $this->add_tags("$content<div>$append</div>", $type_tag, $formats[$format]['item_tags_template'], false);
|
302 |
+
|
303 |
+
if ($this->get_setting('mark_code', true, 'settings'))
|
304 |
+
$content .= "\n\n<!-- " . sprintf(__('Schema.org markup generated by %1$s (%2$s)', 'seo-ultimate'), SU_PLUGIN_NAME, SU_PLUGIN_URI) . " -->\n\n";
|
305 |
+
}
|
306 |
|
307 |
//Return filtered content
|
308 |
return $content;
|
309 |
}
|
310 |
|
311 |
+
function apply_subproperty_markup($matches) {
|
312 |
+
|
313 |
+
if (empty($matches[1]))
|
314 |
+
return '';
|
315 |
+
|
316 |
+
$content = $matches[1];
|
317 |
+
|
318 |
+
extract($this->apply_subproperty_markup_args, EXTR_SKIP);
|
319 |
+
|
320 |
+
foreach ($subproperties as $subproperty => $subproperty_data) {
|
321 |
+
|
322 |
+
//Get the subproperty tags
|
323 |
+
$subproperty_tag = is_array($subproperty_data['tags']) ?
|
324 |
+
$subproperty_data['tags'][$format] :
|
325 |
+
$subproperty_data['tags'];
|
326 |
+
|
327 |
+
$subproperty_value = strval($this->get_postmeta("rich_snippet_{$type}_{$property}_{$subproperty}"));
|
328 |
+
|
329 |
+
if ($subproperty_value) {
|
330 |
+
$subproperty_markedup_value = $this->add_tags($subproperty_value, $subproperty_tag, $property_tag_template);
|
331 |
+
$content = sustr::htmlsafe_str_replace($subproperty_value, $subproperty_markedup_value, $content, 1, $count);
|
332 |
+
}
|
333 |
+
}
|
334 |
+
|
335 |
+
$content = $this->add_tags($content, $property_tag, $property_tag_format, false);
|
336 |
+
|
337 |
+
return $content;
|
338 |
+
}
|
339 |
+
|
340 |
function postmeta_fields($fields) {
|
341 |
$fields['serp'][40]['rich_snippet_type'] = $this->get_postmeta_dropdown('rich_snippet_type', array(
|
342 |
+
'none' => __('Standard', 'seo-ultimate')
|
343 |
, 'review' => __('Review', 'seo-ultimate')
|
344 |
+
, 'place' => __('Place', 'seo-ultimate')
|
345 |
+
), __('Search Result Type:', 'seo-ultimate'));
|
346 |
|
347 |
+
$fields['serp'][45]['rich_snippet_review_item|rich_snippet_review_rating'] =
|
348 |
+
$this->get_postmeta_subsection('rich_snippet_type', 'review',
|
349 |
+
|
350 |
+
$this->get_postmeta_textbox('rich_snippet_review_item', __('Name of Reviewed Item:', 'seo-ultimate'))
|
351 |
+
|
352 |
+
. $this->get_postmeta_dropdown('rich_snippet_review_rating', array(
|
353 |
+
'0' => __('None', 'seo-ultimate')
|
354 |
+
, '0.5' => __('0.5 stars', 'seo-ultimate')
|
355 |
+
, '1' => __('1 star', 'seo-ultimate')
|
356 |
+
, '1.5' => __('1.5 stars', 'seo-ultimate')
|
357 |
+
, '2' => __('2 stars', 'seo-ultimate')
|
358 |
+
, '2.5' => __('2.5 stars', 'seo-ultimate')
|
359 |
+
, '3' => __('3 stars', 'seo-ultimate')
|
360 |
+
, '3.5' => __('3.5 stars', 'seo-ultimate')
|
361 |
+
, '4' => __('4 stars', 'seo-ultimate')
|
362 |
+
, '4.5' => __('4.5 stars', 'seo-ultimate')
|
363 |
+
, '5' => __('5 stars', 'seo-ultimate')
|
364 |
+
), __('Star Rating for Reviewed Item:', 'seo-ultimate'))
|
365 |
+
);
|
366 |
+
|
367 |
+
$fields['serp'][46]['rich_snippet_place_address_street|rich_snippet_place_address_po_box|rich_snippet_place_address_city|rich_snippet_place_address_state|rich_snippet_place_address_country|rich_snippet_place_address_postal_code|rich_snippet_place_map_url|rich_snippet_place_tel_number|rich_snippet_place_fax_number|rich_snippet_place_photo'] =
|
368 |
+
$this->get_postmeta_subsection('rich_snippet_type', 'place',
|
369 |
+
$this->get_postmeta_textboxes(array(
|
370 |
+
'rich_snippet_place_address_street' => __('Street Address:', 'seo-ultimate')
|
371 |
+
, 'rich_snippet_place_address_po_box' => __('Post Office Box Number:', 'seo-ultimate')
|
372 |
+
, 'rich_snippet_place_address_city' => __('City:', 'seo-ultimate')
|
373 |
+
, 'rich_snippet_place_address_state' => __('State or Region:', 'seo-ultimate')
|
374 |
+
, 'rich_snippet_place_address_country' => __('Country:', 'seo-ultimate')
|
375 |
+
, 'rich_snippet_place_address_postal_code' => __('Postal Code:', 'seo-ultimate')
|
376 |
+
), array(), __('Address:', 'seo-ultimate'))
|
377 |
+
. $this->get_postmeta_jlsuggest_box('rich_snippet_place_map_url', __('Map Page:', 'seo-ultimate'), 'types=posttype')
|
378 |
+
. $this->get_postmeta_textbox('rich_snippet_place_tel_number', __('Phone Number:', 'seo-ultimate'), array('type' => 'tel'))
|
379 |
+
. $this->get_postmeta_textbox('rich_snippet_place_fax_number', __('Fax Number:', 'seo-ultimate'), array('type' => 'tel'))
|
380 |
+
. $this->get_postmeta_jlsuggest_box('rich_snippet_place_photo', __('Photo:', 'seo-ultimate'), 'types=posttype_attachment&post_mime_type=image/*')
|
381 |
+
);
|
382 |
|
383 |
return $fields;
|
384 |
}
|
401 |
, 'title' => __('Settings Help', 'seo-ultimate')
|
402 |
, 'content' => __("
|
403 |
<ul>
|
|
|
404 |
<li><strong>Categories/Tags That Indicate Reviews</strong> — If you haven’t set the “Rich Snippet Type” setting for an old post or page, then Rich Snippet Creator will automatically set its default type to “Review” (instead of “None”) if it has a category or tag whose name is in this list (the default list is “Reviews” and “Review”). Put one category/tag name per line.</li>
|
405 |
</ul>
|
406 |
", 'seo-ultimate')));
|
modules/sharing-buttons/sharing-buttons.php
CHANGED
@@ -36,12 +36,11 @@ class SU_SharingButtons extends SU_Module {
|
|
36 |
|
37 |
function admin_page_contents() {
|
38 |
$this->child_admin_form_start();
|
39 |
-
$this->admin_form_subheader(__('Which provider would you like to use for your sharing buttons?', 'seo-ultimate'));
|
40 |
$this->radiobuttons('provider', array(
|
41 |
'none' => __('None; disable sharing buttons', 'seo-ultimate')
|
42 |
, 'sharethis' => __('Use the ShareThis button', 'seo-ultimate') //: %s{sharethis_code}
|
43 |
, 'addthis' => __('Use the AddThis button', 'seo-ultimate') //: %s{addthis_code}
|
44 |
-
));
|
45 |
$this->child_admin_form_end();
|
46 |
}
|
47 |
|
36 |
|
37 |
function admin_page_contents() {
|
38 |
$this->child_admin_form_start();
|
|
|
39 |
$this->radiobuttons('provider', array(
|
40 |
'none' => __('None; disable sharing buttons', 'seo-ultimate')
|
41 |
, 'sharethis' => __('Use the ShareThis button', 'seo-ultimate') //: %s{sharethis_code}
|
42 |
, 'addthis' => __('Use the AddThis button', 'seo-ultimate') //: %s{addthis_code}
|
43 |
+
), __('Which provider would you like to use for your sharing buttons?', 'seo-ultimate'));
|
44 |
$this->child_admin_form_end();
|
45 |
}
|
46 |
|
modules/slugs/slugs.php
CHANGED
@@ -11,10 +11,13 @@ class SU_Slugs extends SU_Module {
|
|
11 |
|
12 |
function get_module_title() { return __('Slug Optimizer', 'seo-ultimate'); }
|
13 |
|
|
|
|
|
|
|
14 |
function admin_page_contents() {
|
15 |
-
$this->
|
16 |
$this->textarea('words_to_remove', __('Words to Remove', 'seo-ultimate'), 20);
|
17 |
-
$this->
|
18 |
}
|
19 |
|
20 |
function init() {
|
11 |
|
12 |
function get_module_title() { return __('Slug Optimizer', 'seo-ultimate'); }
|
13 |
|
14 |
+
function get_parent_module() { return 'misc'; }
|
15 |
+
function get_settings_key() { return 'slugs'; }
|
16 |
+
|
17 |
function admin_page_contents() {
|
18 |
+
$this->child_admin_form_start();
|
19 |
$this->textarea('words_to_remove', __('Words to Remove', 'seo-ultimate'), 20);
|
20 |
+
$this->child_admin_form_end();
|
21 |
}
|
22 |
|
23 |
function init() {
|
modules/widgets/widgets.php
CHANGED
@@ -12,7 +12,11 @@ class SU_Widgets extends SU_Module {
|
|
12 |
function get_module_title() { return __('SEO Ultimate Widgets', 'seo-ultimate'); }
|
13 |
function get_menu_title() { return false; }
|
14 |
|
15 |
-
function get_admin_url() {
|
|
|
|
|
|
|
|
|
16 |
if (is_network_admin())
|
17 |
return false;
|
18 |
|
12 |
function get_module_title() { return __('SEO Ultimate Widgets', 'seo-ultimate'); }
|
13 |
function get_menu_title() { return false; }
|
14 |
|
15 |
+
function get_admin_url($key = false) {
|
16 |
+
|
17 |
+
if ($key)
|
18 |
+
return parent::get_admin_url($key);
|
19 |
+
|
20 |
if (is_network_admin())
|
21 |
return false;
|
22 |
|
plugin/class.seo-ultimate.php
CHANGED
@@ -1425,12 +1425,12 @@ class SEO_Ultimate {
|
|
1425 |
/********** MODULE FUNCTIONS ***********/
|
1426 |
|
1427 |
/**
|
1428 |
-
* Checks to see whether
|
1429 |
*
|
1430 |
* @since 1.5
|
1431 |
*
|
1432 |
* @param string $key The key of the module to check.
|
1433 |
-
* @return boolean Whether the module is enabled.
|
1434 |
*/
|
1435 |
function module_exists($key) {
|
1436 |
return isset($this->modules[$key]);
|
1425 |
/********** MODULE FUNCTIONS ***********/
|
1426 |
|
1427 |
/**
|
1428 |
+
* Checks to see whether an instantiation of the specified module exists (i.e. whether the module is non-disabled).
|
1429 |
*
|
1430 |
* @since 1.5
|
1431 |
*
|
1432 |
* @param string $key The key of the module to check.
|
1433 |
+
* @return boolean Whether the module is enabled (or silent or hidden).
|
1434 |
*/
|
1435 |
function module_exists($key) {
|
1436 |
return isset($this->modules[$key]);
|
plugin/global.css
CHANGED
@@ -117,6 +117,10 @@ div.su-help h6 {
|
|
117 |
white-space: nowrap;
|
118 |
}
|
119 |
|
|
|
|
|
|
|
|
|
120 |
#su-postmeta-box table tr.textarea th.su label {
|
121 |
display: block;
|
122 |
margin-top: 5px;
|
@@ -130,6 +134,26 @@ div.su-help h6 {
|
|
130 |
width: 100%;
|
131 |
}
|
132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
#su-postmeta-box table,
|
134 |
#su-postmeta-box table td input.regular-text,
|
135 |
#su-postmeta-box table td textarea {
|
@@ -166,25 +190,10 @@ div.su-module select optgroup option {
|
|
166 |
text-decoration: none;
|
167 |
}
|
168 |
|
169 |
-
|
170 |
-
|
171 |
-
border-color: #C0CDFF;
|
172 |
-
color: black;
|
173 |
}
|
174 |
|
175 |
-
/* Requires IE10+ */
|
176 |
-
input.jlsuggest:-ms-input-placeholder {
|
177 |
-
background-color: #E0E7FF;
|
178 |
-
border-color: #C0CDFF;
|
179 |
-
color: black;
|
180 |
-
}
|
181 |
-
|
182 |
-
/*
|
183 |
-
A ::-webkit-input-placeholder block is not included because
|
184 |
-
the background-color rule doesn't apply correctly on Chrome
|
185 |
-
and it looks rather horrendous...
|
186 |
-
*/
|
187 |
-
|
188 |
|
189 |
/* PLUGIN NOTICES */
|
190 |
|
117 |
white-space: nowrap;
|
118 |
}
|
119 |
|
120 |
+
#su-postmeta-box table tr[valign="top"] th.su {
|
121 |
+
padding-top: 0.7em;
|
122 |
+
}
|
123 |
+
|
124 |
#su-postmeta-box table tr.textarea th.su label {
|
125 |
display: block;
|
126 |
margin-top: 5px;
|
134 |
width: 100%;
|
135 |
}
|
136 |
|
137 |
+
#su-postmeta-box table td.su.group table {
|
138 |
+
border-spacing: 0;
|
139 |
+
}
|
140 |
+
|
141 |
+
#su-postmeta-box table td.su.group th {
|
142 |
+
text-align: right;
|
143 |
+
font-weight: normal;
|
144 |
+
white-space: nowrap;
|
145 |
+
padding: 0 0.5em;
|
146 |
+
vertical-align: middle;
|
147 |
+
}
|
148 |
+
|
149 |
+
#su-postmeta-box table td.su.group {
|
150 |
+
padding: 0.4em;
|
151 |
+
}
|
152 |
+
|
153 |
+
#su-postmeta-box table td.su.group td {
|
154 |
+
width: 100%;
|
155 |
+
}
|
156 |
+
|
157 |
#su-postmeta-box table,
|
158 |
#su-postmeta-box table td input.regular-text,
|
159 |
#su-postmeta-box table td textarea {
|
190 |
text-decoration: none;
|
191 |
}
|
192 |
|
193 |
+
#su-postmeta-box input[type="tel"] {
|
194 |
+
box-sizing: border-box;
|
|
|
|
|
195 |
}
|
196 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
197 |
|
198 |
/* PLUGIN NOTICES */
|
199 |
|
readme.txt
CHANGED
@@ -1,21 +1,21 @@
|
|
1 |
=== SEO Ultimate ===
|
2 |
Contributors: SEO Design Solutions, JohnLamansky
|
3 |
-
Tags: seo, SEO Ultimate, suite, google, yahoo, bing, search engines, admin, post, page, custom post types, categories, tags, terms, custom taxonomies, base, title, title tag, wp_title, meta, robots, noindex, nofollow, canonical, HTTP headers, 404, robots.txt, htaccess, slugs, url, anchor, more, link, excerpt, permalink, links, autolinks, code, footer, settings, redirect, 301, 302, 307, modules, uninstallable, reinstallable, downgradable, import, export, CSV, affiliate
|
4 |
Requires at least: 3.3
|
5 |
Tested up to: 3.4.1
|
6 |
-
Stable tag: 7.
|
7 |
|
8 |
-
This all-in-one SEO plugin gives you control over title tags, noindex, meta tags, slugs, canonical, autolinks, 404 errors, rich snippets, and more.
|
9 |
|
10 |
== Description ==
|
11 |
|
12 |
= Recent Releases =
|
13 |
|
|
|
14 |
* Version 7.4 adds the Author Highlighter module
|
15 |
* Version 7.3 adds the Open Graph Integrator module
|
16 |
* Version 7.2 updates Permalink Tweaker
|
17 |
* Version 7.1 adds new Link Mask Generator features
|
18 |
-
* Version 7.0 adds meta description pagination and WP 3.3 compatibility
|
19 |
|
20 |
= Features =
|
21 |
|
@@ -94,10 +94,10 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
|
|
94 |
* Use to add Google Analytics, Feedburner FeedFlare, Google AdSense section targeting, and other SEO/SEM-enhancing code snippets.
|
95 |
* Code remains even when switching themes.
|
96 |
|
97 |
-
* **Rich Snippet Creator**
|
98 |
-
* Easily add rich snippet code
|
99 |
* Attract more search traffic with eye-catching supplementary SERP data.
|
100 |
-
*
|
101 |
|
102 |
* **Sharing Facilitator**
|
103 |
* Adds buttons that make it easy for visitors to share your content on social networking sites (thus building links to your site).
|
@@ -124,24 +124,25 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
|
|
124 |
* The "URL Conflict Resolution" setting lets you arbitrate between pages/terms when taxonomy base removal causes their URLs to conflict
|
125 |
|
126 |
* **SEO Ultimate Widgets**
|
127 |
-
* Lets you output your Deeplink Juggernaut Footer Links in a widget
|
128 |
-
* The Siloed Categories widget makes it drag-and-drop-easy to construct siloed navigation on your site
|
129 |
|
130 |
* **Settings Monitor**
|
131 |
-
* Keep tabs on the SEO-friendliness of your site's settings with a dashboard of green/yellow/red indicators
|
132 |
|
133 |
-
* **Open Graph Integrator** --
|
134 |
-
* Out-of-the-box functionality autogenerates Open Graph data for your homepage, posts, pages, attachments, custom post type objects, and user profile pages
|
135 |
-
* Fine-grained controls allow you to customize the Open Graph title, image, and content type for every single post, page, attachment, and custom post type object on your site
|
136 |
-
* Mass-editors let you specify Open Graph data for multiple posts and pages at a time
|
|
|
137 |
|
138 |
* **Author Highlighter** -- NEW in Version 7.4
|
139 |
-
* Generates code so that when one of your site's posts appears in Google search results, the Google+ profile picture of the post's author will appear alongside it
|
140 |
-
* Includes support for both single-author and multi-author site setups
|
141 |
-
* Supports author highlighting for posts, pages, attachments, custom post types, the homepage, archive pages, and author pages
|
142 |
-
* Inserts a "Google+ Profile URL" field on the WordPress user profile editor, so that users can insert their Google+ URL and enable author highlighting on their posts
|
143 |
|
144 |
-
* **Settings Manager** (located under Settings > SEO Ultimate)
|
145 |
* Export your SEO Ultimate settings to a file and re-import later if desired.
|
146 |
* Use the export/import functionality to move SEO Ultimate settings between WordPress sites.
|
147 |
* Reset all settings back to "factory defaults" if something goes wrong.
|
@@ -203,6 +204,9 @@ To install the plugin manually:
|
|
203 |
* **Will SEO Ultimate work on multisite setups?**
|
204 |
Yes. SEO Ultimate versions 7.2.6 and later are designed to work on networks running WordPress 3.3 or later.
|
205 |
|
|
|
|
|
|
|
206 |
= General FAQ =
|
207 |
|
208 |
* **Why "SEO Ultimate" instead of "Ultimate SEO"?**
|
@@ -275,6 +279,19 @@ Frequently asked questions, settings help, and troubleshooting tips for SEO Ulti
|
|
275 |
|
276 |
== Changelog ==
|
277 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
278 |
= Version 7.4 (August 7, 2012) =
|
279 |
* New Module: Author Highlighter
|
280 |
* Generates code so that when one of your site's posts appears in Google search results, the Google+ profile picture of the post's author will appear alongside it
|
1 |
=== SEO Ultimate ===
|
2 |
Contributors: SEO Design Solutions, JohnLamansky
|
3 |
+
Tags: seo, SEO Ultimate, suite, google, yahoo, bing, search engines, admin, post, page, custom post types, categories, tags, terms, custom taxonomies, base, title, title tag, wp_title, meta, robots, noindex, nofollow, canonical, HTTP headers, 404, robots.txt, htaccess, slugs, url, anchor, more, link, excerpt, permalink, links, autolinks, code, footer, settings, redirect, 301, 302, 307, modules, uninstallable, reinstallable, downgradable, import, export, CSV, affiliate, Open Graph, og, microdata, Facebook, Twitter, Schema.org
|
4 |
Requires at least: 3.3
|
5 |
Tested up to: 3.4.1
|
6 |
+
Stable tag: 7.5
|
7 |
|
8 |
+
This all-in-one SEO plugin gives you control over title tags, noindex, meta tags, Open Graph, slugs, canonical, autolinks, 404 errors, rich snippets, and more.
|
9 |
|
10 |
== Description ==
|
11 |
|
12 |
= Recent Releases =
|
13 |
|
14 |
+
* Version 7.5 adds support for Twitter Cards, Schema.org, and place snippets
|
15 |
* Version 7.4 adds the Author Highlighter module
|
16 |
* Version 7.3 adds the Open Graph Integrator module
|
17 |
* Version 7.2 updates Permalink Tweaker
|
18 |
* Version 7.1 adds new Link Mask Generator features
|
|
|
19 |
|
20 |
= Features =
|
21 |
|
94 |
* Use to add Google Analytics, Feedburner FeedFlare, Google AdSense section targeting, and other SEO/SEM-enhancing code snippets.
|
95 |
* Code remains even when switching themes.
|
96 |
|
97 |
+
* **Rich Snippet Creator** -- UPDATED in Version 7.5
|
98 |
+
* Easily add rich snippet code for reviews and places.
|
99 |
* Attract more search traffic with eye-catching supplementary SERP data.
|
100 |
+
* Supports the new Schema.org format used by Google, Bing, Yahoo, and Yandex.
|
101 |
|
102 |
* **Sharing Facilitator**
|
103 |
* Adds buttons that make it easy for visitors to share your content on social networking sites (thus building links to your site).
|
124 |
* The "URL Conflict Resolution" setting lets you arbitrate between pages/terms when taxonomy base removal causes their URLs to conflict
|
125 |
|
126 |
* **SEO Ultimate Widgets**
|
127 |
+
* Lets you output your Deeplink Juggernaut Footer Links in a widget.
|
128 |
+
* The Siloed Categories widget makes it drag-and-drop-easy to construct siloed navigation on your site.
|
129 |
|
130 |
* **Settings Monitor**
|
131 |
+
* Keep tabs on the SEO-friendliness of your site's settings with a dashboard of green/yellow/red indicators.
|
132 |
|
133 |
+
* **Open Graph Integrator** -- UPDATED in Version 7.5
|
134 |
+
* Out-of-the-box functionality autogenerates Open Graph data for your homepage, posts, pages, attachments, custom post type objects, and user profile pages.
|
135 |
+
* Fine-grained controls allow you to customize the Open Graph title, image, and content type for every single post, page, attachment, and custom post type object on your site.
|
136 |
+
* Mass-editors let you specify Open Graph data for multiple posts and pages at a time.
|
137 |
+
* Includes support for summary-style and photo-style Twitter Cards.
|
138 |
|
139 |
* **Author Highlighter** -- NEW in Version 7.4
|
140 |
+
* Generates code so that when one of your site's posts appears in Google search results, the Google+ profile picture of the post's author will appear alongside it.
|
141 |
+
* Includes support for both single-author and multi-author site setups.
|
142 |
+
* Supports author highlighting for posts, pages, attachments, custom post types, the homepage, archive pages, and author pages.
|
143 |
+
* Inserts a "Google+ Profile URL" field on the WordPress user profile editor, so that users can insert their Google+ URL and enable author highlighting on their posts.
|
144 |
|
145 |
+
* **Plugin Settings Manager** (located under Settings > SEO Ultimate)
|
146 |
* Export your SEO Ultimate settings to a file and re-import later if desired.
|
147 |
* Use the export/import functionality to move SEO Ultimate settings between WordPress sites.
|
148 |
* Reset all settings back to "factory defaults" if something goes wrong.
|
204 |
* **Will SEO Ultimate work on multisite setups?**
|
205 |
Yes. SEO Ultimate versions 7.2.6 and later are designed to work on networks running WordPress 3.3 or later.
|
206 |
|
207 |
+
* **Which browsers work best with the SEO Ultimate administration interface?**
|
208 |
+
SEO Ultimate's administration interface occasionally uses some HTML5 features. All modern browsers support these features with the exception of Internet Explorer. Don't worry, you'll still be able to use the administration interface with Internet Explorer, but you'll get the best experience if you use another browser. (Note that this only applies to the browser _you_ use. The visitors to your website, on the other hand, can use whatever browser they want.)
|
209 |
+
|
210 |
= General FAQ =
|
211 |
|
212 |
* **Why "SEO Ultimate" instead of "Ultimate SEO"?**
|
279 |
|
280 |
== Changelog ==
|
281 |
|
282 |
+
= Version 7.5 (August 9, 2012) =
|
283 |
+
* Feature: Open Graph Integrator now includes Twitter Card support
|
284 |
+
* Feature: Rich Snippet Creator now supports Place microdata
|
285 |
+
* Improvement: Rich Snippet Creator has been updated to use the new Schema.org microdata format supported by Google, Bing, Yahoo, and Yandex
|
286 |
+
* Improvement: Module Manager no longer shows the "Hidden" option for Miscellaneous modules, since for those modules the "Hidden" option behaves no differently than the "Enabled" option
|
287 |
+
* Bugfix: Adjusted 404 Monitor CSS to account for WordPress CSS changes
|
288 |
+
* Bugfix: Since Open Graph articles are only supposed to have one "article:section" element but can have multiple "article:tag" elements, posts with multiple categories now have those categories listed in the Open Graph code as "article:tag" elements instead of multiple "article:section" elements, while posts with just one category continue to have that category marked as "article:section"
|
289 |
+
* Removed Feature: Rich Snippet Creator no longer lets you choose between the microdata/microformat/RDFa data formats, since these have been replaced with the new Schema.org format. (Rich Snippet Creator will update all your old microdata/microformat/RDFa code automatically.)
|
290 |
+
* Removed Feature: The previous version of Rich Snippet Creator was able to mark old posts as reviews if they had certain categories or tags. This feature has been removed, and old posts must now be marked as reviews manually. This is because automatically marking old posts as reviews won't do you much good unless those posts also have review data, which must be entered in manually anyway.
|
291 |
+
* Note: Rich Snippet Creator no longer has an admin page; now the module's only interface is in the "SEO Settings" box
|
292 |
+
* Change: The "Link Masks" section now appears on the "Links" tab of the "SEO Settings" box instead of on the "Miscellaneous" tab
|
293 |
+
* Change: The admin pages for Linkbox Inserter, Nofollow Manager, and Slug Optimizer have been moved to the Miscellaneous page in order to reduce clutter on the SEO menu
|
294 |
+
|
295 |
= Version 7.4 (August 7, 2012) =
|
296 |
* New Module: Author Highlighter
|
297 |
* Generates code so that when one of your site's posts appears in Google search results, the Google+ profile picture of the post's author will appear alongside it
|
seo-ultimate.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: SEO Ultimate
|
4 |
Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
|
5 |
Description: This all-in-one SEO plugin gives you control over title tags, noindex/nofollow, meta tags, rich snippets, slugs, canonical tags, autolinks, 404 errors, rich snippets, and more.
|
6 |
-
Version: 7.
|
7 |
Author: SEO Design Solutions
|
8 |
Author URI: http://www.seodesignsolutions.com/
|
9 |
Text Domain: seo-ultimate
|
@@ -12,7 +12,7 @@ Text Domain: seo-ultimate
|
|
12 |
/**
|
13 |
* The main SEO Ultimate plugin file.
|
14 |
* @package SeoUltimate
|
15 |
-
* @version 7.
|
16 |
* @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
|
17 |
*/
|
18 |
|
@@ -47,10 +47,10 @@ define('SU_MINIMUM_WP_VER', '3.2');
|
|
47 |
//Reading plugin info from constants is faster than trying to parse it from the header above.
|
48 |
define('SU_PLUGIN_NAME', 'SEO Ultimate');
|
49 |
define('SU_PLUGIN_URI', 'http://www.seodesignsolutions.com/wordpress-seo/');
|
50 |
-
define('SU_VERSION', '7.
|
51 |
define('SU_AUTHOR', 'SEO Design Solutions');
|
52 |
define('SU_AUTHOR_URI', 'http://www.seodesignsolutions.com/');
|
53 |
-
define('SU_USER_AGENT', 'SeoUltimate/7.
|
54 |
|
55 |
/********** INCLUDES **********/
|
56 |
|
3 |
Plugin Name: SEO Ultimate
|
4 |
Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
|
5 |
Description: This all-in-one SEO plugin gives you control over title tags, noindex/nofollow, meta tags, rich snippets, slugs, canonical tags, autolinks, 404 errors, rich snippets, and more.
|
6 |
+
Version: 7.5
|
7 |
Author: SEO Design Solutions
|
8 |
Author URI: http://www.seodesignsolutions.com/
|
9 |
Text Domain: seo-ultimate
|
12 |
/**
|
13 |
* The main SEO Ultimate plugin file.
|
14 |
* @package SeoUltimate
|
15 |
+
* @version 7.5
|
16 |
* @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
|
17 |
*/
|
18 |
|
47 |
//Reading plugin info from constants is faster than trying to parse it from the header above.
|
48 |
define('SU_PLUGIN_NAME', 'SEO Ultimate');
|
49 |
define('SU_PLUGIN_URI', 'http://www.seodesignsolutions.com/wordpress-seo/');
|
50 |
+
define('SU_VERSION', '7.5');
|
51 |
define('SU_AUTHOR', 'SEO Design Solutions');
|
52 |
define('SU_AUTHOR_URI', 'http://www.seodesignsolutions.com/');
|
53 |
+
define('SU_USER_AGENT', 'SeoUltimate/7.5');
|
54 |
|
55 |
/********** INCLUDES **********/
|
56 |
|
translations/seo-ultimate.pot
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
# This file is distributed under the same license as the SEO Ultimate package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: SEO Ultimate 7.
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
|
7 |
-
"POT-Creation-Date: 2012-08-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -206,14 +206,14 @@ msgid "404 Monitor"
|
|
206 |
msgstr ""
|
207 |
|
208 |
#: modules/404s/fofs.php:19 modules/canonical/canonical.php:212
|
209 |
-
#: modules/files/files.php:144 modules/link-nofollow/link-nofollow.php:
|
210 |
-
#: modules/linkbox/linkbox.php:
|
211 |
#: modules/meta/meta-keywords.php:179 modules/meta/meta-robots.php:52
|
212 |
#: modules/meta/webmaster-verify.php:87 modules/more-links/more-links.php:104
|
213 |
#: modules/more-links/more-links.php:111
|
214 |
-
#: modules/rich-snippets/rich-snippets.php:
|
215 |
#: modules/settings/settings.php:63
|
216 |
-
#: modules/sharing-buttons/sharing-buttons.php:
|
217 |
#: modules/titles/titles.php:357 modules/user-code/user-code.php:97
|
218 |
msgid "Overview"
|
219 |
msgstr ""
|
@@ -263,9 +263,9 @@ msgid ""
|
|
263 |
"</ul>\r\n"
|
264 |
msgstr ""
|
265 |
|
266 |
-
#: modules/404s/fofs.php:45 modules/linkbox/linkbox.php:
|
267 |
#: modules/meta/meta-descriptions.php:204 modules/meta/meta-keywords.php:186
|
268 |
-
#: modules/meta/meta-robots.php:63 modules/rich-snippets/rich-snippets.php:
|
269 |
#: modules/titles/titles.php:431
|
270 |
msgid "Settings Help"
|
271 |
msgstr ""
|
@@ -318,7 +318,7 @@ msgstr ""
|
|
318 |
#: modules/404s/fofs.php:74 modules/files/files.php:165
|
319 |
#: modules/meta/meta-descriptions.php:225 modules/meta/meta-keywords.php:209
|
320 |
#: modules/meta/meta-robots.php:102
|
321 |
-
#: modules/rich-snippets/rich-snippets.php:
|
322 |
#: modules/titles/titles.php:469 modules/user-code/user-code.php:111
|
323 |
msgid "Troubleshooting"
|
324 |
msgstr ""
|
@@ -575,7 +575,7 @@ msgstr ""
|
|
575 |
msgid "Footer Deeplink Juggernaut"
|
576 |
msgstr ""
|
577 |
|
578 |
-
#: modules/autolinks/footer-autolinks.php:17 modules/widgets/widgets.php:
|
579 |
msgid "Footer Links"
|
580 |
msgstr ""
|
581 |
|
@@ -825,63 +825,63 @@ msgstr ""
|
|
825 |
msgid "Save Changes"
|
826 |
msgstr ""
|
827 |
|
828 |
-
#: modules/class.su-module.php:
|
829 |
msgid ""
|
830 |
"Are you sure you want to replace the textbox contents with this default "
|
831 |
"value?"
|
832 |
msgstr ""
|
833 |
|
834 |
-
#: modules/class.su-module.php:
|
835 |
msgid "Reset"
|
836 |
msgstr ""
|
837 |
|
838 |
-
#: modules/class.su-module.php:
|
839 |
msgid "A Deleted %s"
|
840 |
msgstr ""
|
841 |
|
842 |
-
#: modules/class.su-module.php:
|
843 |
msgid "A Deleted Post"
|
844 |
msgstr ""
|
845 |
|
846 |
-
#: modules/class.su-module.php:
|
847 |
msgid "A Deleted Term"
|
848 |
msgstr ""
|
849 |
|
850 |
-
#: modules/class.su-module.php:
|
851 |
-
#: modules/meta/meta-keywords.php:41 modules/opengraph/opengraph.php:
|
852 |
#: plugin/class.seo-ultimate.php:1775
|
853 |
msgid "Blog Homepage"
|
854 |
msgstr ""
|
855 |
|
856 |
-
#: modules/class.su-module.php:
|
857 |
msgid "Author"
|
858 |
msgstr ""
|
859 |
|
860 |
-
#: modules/class.su-module.php:
|
861 |
msgid "A Deleted User"
|
862 |
msgstr ""
|
863 |
|
864 |
-
#: modules/class.su-module.php:
|
865 |
msgid "Link Mask"
|
866 |
msgstr ""
|
867 |
|
868 |
-
#: modules/class.su-module.php:
|
869 |
msgid "Link Mask (Disabled)"
|
870 |
msgstr ""
|
871 |
|
872 |
-
#: modules/class.su-module.php:
|
873 |
msgid "A Deleted Link Mask"
|
874 |
msgstr ""
|
875 |
|
876 |
-
#: modules/class.su-module.php:
|
877 |
msgid "Type a URL or start typing the name of an item on your site"
|
878 |
msgstr ""
|
879 |
|
880 |
-
#: modules/class.su-module.php:
|
881 |
msgid "Remove this location from this textbox"
|
882 |
msgstr ""
|
883 |
|
884 |
-
#: modules/class.su-module.php:
|
885 |
msgid "X"
|
886 |
msgstr ""
|
887 |
|
@@ -959,9 +959,9 @@ msgid ""
|
|
959 |
msgstr ""
|
960 |
|
961 |
#: modules/files/files.php:155 modules/meta/meta-descriptions.php:216
|
962 |
-
#: modules/meta/meta-keywords.php:196 modules/modules/modules.php:
|
963 |
#: modules/more-links/more-links.php:105 modules/more-links/more-links.php:116
|
964 |
-
#: modules/settings/settings.php:82 modules/slugs/slugs.php:
|
965 |
#: modules/titles/titles.php:458
|
966 |
msgid "FAQ"
|
967 |
msgstr ""
|
@@ -1110,71 +1110,71 @@ msgstr ""
|
|
1110 |
msgid "Nofollow Manager"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1114 |
-
msgid "Add the nofollow attribute to..."
|
1115 |
-
msgstr ""
|
1116 |
-
|
1117 |
-
#: modules/link-nofollow/link-nofollow.php:55
|
1118 |
msgid "Adjacent post links (next post / previous post)"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1122 |
msgid "Category links (after posts)"
|
1123 |
msgstr ""
|
1124 |
|
1125 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1126 |
msgid "Category links (in lists)"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1130 |
msgid "Comment anchor links"
|
1131 |
msgstr ""
|
1132 |
|
1133 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1134 |
msgid "Comment feed links"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1138 |
msgid "Date-based archive links"
|
1139 |
msgstr ""
|
1140 |
|
1141 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1142 |
msgid "Pagination navigation links (all)"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1146 |
msgid "Pagination navigation links (on blog home only)"
|
1147 |
msgstr ""
|
1148 |
|
1149 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1150 |
msgid "“Read more” links"
|
1151 |
msgstr ""
|
1152 |
|
1153 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1154 |
msgid "Registration link"
|
1155 |
msgstr ""
|
1156 |
|
1157 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1158 |
msgid "Login link"
|
1159 |
msgstr ""
|
1160 |
|
1161 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1162 |
msgid "Tag links (after posts)"
|
1163 |
msgstr ""
|
1164 |
|
1165 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1166 |
msgid "Tag links (in lists and clouds)"
|
1167 |
msgstr ""
|
1168 |
|
1169 |
-
#: modules/link-nofollow/link-nofollow.php:
|
|
|
|
|
|
|
|
|
1170 |
msgid "When displaying page lists, nofollow links to this page"
|
1171 |
msgstr ""
|
1172 |
|
1173 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1174 |
msgid "Nofollow:"
|
1175 |
msgstr ""
|
1176 |
|
1177 |
-
#: modules/link-nofollow/link-nofollow.php:
|
1178 |
msgid ""
|
1179 |
"\r\n"
|
1180 |
"<p>Nofollow Manager adds the <code>rel="nofollow"</code> attribute "
|
@@ -1192,31 +1192,31 @@ msgstr ""
|
|
1192 |
msgid "Linkbox Inserter"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
-
#: modules/linkbox/linkbox.php:
|
1196 |
msgid "Link to this post!"
|
1197 |
msgstr ""
|
1198 |
|
1199 |
-
#: modules/linkbox/linkbox.php:
|
1200 |
msgid "At the end of posts"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
-
#: modules/linkbox/linkbox.php:
|
1204 |
msgid "At the end of pages"
|
1205 |
msgstr ""
|
1206 |
|
1207 |
-
#: modules/linkbox/linkbox.php:
|
1208 |
msgid "When called by the su_linkbox hook"
|
1209 |
msgstr ""
|
1210 |
|
1211 |
-
#: modules/linkbox/linkbox.php:
|
1212 |
msgid "Display linkboxes..."
|
1213 |
msgstr ""
|
1214 |
|
1215 |
-
#: modules/linkbox/linkbox.php:
|
1216 |
msgid "Linkbox HTML"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
-
#: modules/linkbox/linkbox.php:
|
1220 |
msgid ""
|
1221 |
"\r\n"
|
1222 |
"<ul>\r\n"
|
@@ -1231,7 +1231,7 @@ msgid ""
|
|
1231 |
"</ul>\r\n"
|
1232 |
msgstr ""
|
1233 |
|
1234 |
-
#: modules/linkbox/linkbox.php:
|
1235 |
msgid ""
|
1236 |
"\r\n"
|
1237 |
"<p>Here’s information on the various settings:</p>\r\n"
|
@@ -1416,12 +1416,12 @@ msgid "Meta Keywords"
|
|
1416 |
msgstr ""
|
1417 |
|
1418 |
#: modules/meta/meta-keywords.php:39 modules/meta/meta-robots.php:22
|
1419 |
-
#: modules/opengraph/opengraph.php:
|
1420 |
msgid "Sitewide Values"
|
1421 |
msgstr ""
|
1422 |
|
1423 |
#: modules/meta/meta-keywords.php:40 modules/noindex/noindex.php:50
|
1424 |
-
#: modules/opengraph/opengraph.php:
|
1425 |
msgid "Default Values"
|
1426 |
msgstr ""
|
1427 |
|
@@ -1697,8 +1697,8 @@ msgid ""
|
|
1697 |
"SEO Ultimate’s features are located in groups called “modules."
|
1698 |
"” By default, most of these modules are listed in the “"
|
1699 |
"SEO” menu on the left. Whenever you’re working with a module, "
|
1700 |
-
"you can view documentation by clicking the
|
1701 |
-
"corner of your administration screen."
|
1702 |
msgstr ""
|
1703 |
|
1704 |
#: modules/modules/modules.php:52
|
@@ -1735,11 +1735,11 @@ msgstr ""
|
|
1735 |
msgid "Disabled"
|
1736 |
msgstr ""
|
1737 |
|
1738 |
-
#: modules/modules/modules.php:
|
1739 |
msgid "Options Help"
|
1740 |
msgstr ""
|
1741 |
|
1742 |
-
#: modules/modules/modules.php:
|
1743 |
msgid ""
|
1744 |
"\r\n"
|
1745 |
"<p>The Module Manager lets you customize the visibility and accessibility of "
|
@@ -1759,7 +1759,7 @@ msgid ""
|
|
1759 |
"</ul>\r\n"
|
1760 |
msgstr ""
|
1761 |
|
1762 |
-
#: modules/modules/modules.php:
|
1763 |
msgid ""
|
1764 |
"\r\n"
|
1765 |
"<ul>\r\n"
|
@@ -1859,7 +1859,8 @@ msgid "Noindex"
|
|
1859 |
msgstr ""
|
1860 |
|
1861 |
#: modules/noindex/noindex.php:69 modules/noindex/noindex.php:80
|
1862 |
-
#: modules/opengraph/opengraph.php:
|
|
|
1863 |
msgid "Use default"
|
1864 |
msgstr ""
|
1865 |
|
@@ -1949,39 +1950,55 @@ msgstr ""
|
|
1949 |
msgid "Open Graph"
|
1950 |
msgstr ""
|
1951 |
|
1952 |
-
#: modules/opengraph/opengraph.php:
|
1953 |
msgid "Type"
|
1954 |
msgstr ""
|
1955 |
|
1956 |
-
#: modules/opengraph/opengraph.php:
|
1957 |
msgid "Title"
|
1958 |
msgstr ""
|
1959 |
|
1960 |
-
#: modules/opengraph/opengraph.php:
|
1961 |
msgid "Description"
|
1962 |
msgstr ""
|
1963 |
|
1964 |
-
#: modules/opengraph/opengraph.php:
|
1965 |
msgid "Image"
|
1966 |
msgstr ""
|
1967 |
|
1968 |
-
#: modules/opengraph/opengraph.php:
|
1969 |
msgid "Site Name"
|
1970 |
msgstr ""
|
1971 |
|
1972 |
-
#: modules/opengraph/opengraph.php:
|
1973 |
msgid "Facebook App ID"
|
1974 |
msgstr ""
|
1975 |
|
1976 |
-
#: modules/opengraph/opengraph.php:
|
|
|
|
|
|
|
|
|
1977 |
msgid "Default Types"
|
1978 |
msgstr ""
|
1979 |
|
1980 |
-
#: modules/opengraph/opengraph.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1981 |
msgid "Default Image"
|
1982 |
msgstr ""
|
1983 |
|
1984 |
-
#: modules/opengraph/opengraph.php:
|
1985 |
msgid ""
|
1986 |
"In the box below, you can specify an image URL or an image from your media "
|
1987 |
"library to use as a default image in the event that there is no image "
|
@@ -1990,112 +2007,128 @@ msgid ""
|
|
1990 |
"the WordPress.com mShots service will be used instead."
|
1991 |
msgstr ""
|
1992 |
|
1993 |
-
#: modules/opengraph/opengraph.php:
|
1994 |
msgid "Blog Homepage Title"
|
1995 |
msgstr ""
|
1996 |
|
1997 |
-
#: modules/opengraph/opengraph.php:
|
1998 |
msgid "Blog Homepage Description"
|
1999 |
msgstr ""
|
2000 |
|
2001 |
-
#: modules/opengraph/opengraph.php:
|
2002 |
msgid "Blog Homepage Image"
|
2003 |
msgstr ""
|
2004 |
|
2005 |
-
#: modules/opengraph/opengraph.php:
|
2006 |
msgid "Title:"
|
2007 |
msgstr ""
|
2008 |
|
2009 |
-
#: modules/opengraph/opengraph.php:
|
2010 |
msgid "Description:"
|
2011 |
msgstr ""
|
2012 |
|
2013 |
-
#: modules/opengraph/opengraph.php:
|
2014 |
msgid "Image:"
|
2015 |
msgstr ""
|
2016 |
|
2017 |
-
#: modules/opengraph/opengraph.php:
|
2018 |
-
msgid "Type:"
|
2019 |
msgstr ""
|
2020 |
|
2021 |
-
#: modules/opengraph/opengraph.php:
|
|
|
|
|
|
|
|
|
2022 |
msgid "Featured Image: %s"
|
2023 |
msgstr ""
|
2024 |
|
2025 |
-
#: modules/opengraph/opengraph.php:
|
2026 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2027 |
-
#: modules/rich-snippets/rich-snippets.php:237
|
2028 |
msgid "None"
|
2029 |
msgstr ""
|
2030 |
|
2031 |
-
#: modules/opengraph/opengraph.php:
|
2032 |
msgid "Internet"
|
2033 |
msgstr ""
|
2034 |
|
2035 |
-
#: modules/opengraph/opengraph.php:
|
2036 |
msgid "Article"
|
2037 |
msgstr ""
|
2038 |
|
2039 |
-
#: modules/opengraph/opengraph.php:
|
2040 |
msgid "Blog"
|
2041 |
msgstr ""
|
2042 |
|
2043 |
-
#: modules/opengraph/opengraph.php:
|
2044 |
msgid "Profile"
|
2045 |
msgstr ""
|
2046 |
|
2047 |
-
#: modules/opengraph/opengraph.php:
|
2048 |
msgid "Website"
|
2049 |
msgstr ""
|
2050 |
|
2051 |
-
#: modules/opengraph/opengraph.php:
|
2052 |
msgid "Products"
|
2053 |
msgstr ""
|
2054 |
|
2055 |
-
#: modules/opengraph/opengraph.php:
|
2056 |
msgid "Book"
|
2057 |
msgstr ""
|
2058 |
|
2059 |
-
#: modules/opengraph/opengraph.php:
|
2060 |
msgid "Music"
|
2061 |
msgstr ""
|
2062 |
|
2063 |
-
#: modules/opengraph/opengraph.php:
|
2064 |
msgid "Album"
|
2065 |
msgstr ""
|
2066 |
|
2067 |
-
#: modules/opengraph/opengraph.php:
|
2068 |
msgid "Playlist"
|
2069 |
msgstr ""
|
2070 |
|
2071 |
-
#: modules/opengraph/opengraph.php:
|
2072 |
msgid "Radio Station"
|
2073 |
msgstr ""
|
2074 |
|
2075 |
-
#: modules/opengraph/opengraph.php:
|
2076 |
msgid "Song"
|
2077 |
msgstr ""
|
2078 |
|
2079 |
-
#: modules/opengraph/opengraph.php:
|
2080 |
msgid "Videos"
|
2081 |
msgstr ""
|
2082 |
|
2083 |
-
#: modules/opengraph/opengraph.php:
|
2084 |
msgid "Movie"
|
2085 |
msgstr ""
|
2086 |
|
2087 |
-
#: modules/opengraph/opengraph.php:
|
2088 |
msgid "TV Episode"
|
2089 |
msgstr ""
|
2090 |
|
2091 |
-
#: modules/opengraph/opengraph.php:
|
2092 |
msgid "TV Show"
|
2093 |
msgstr ""
|
2094 |
|
2095 |
-
#: modules/opengraph/opengraph.php:
|
2096 |
msgid "Video"
|
2097 |
msgstr ""
|
2098 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2099 |
#: modules/permalinks/permalinks.php:15
|
2100 |
msgid "Permalink Tweaker"
|
2101 |
msgstr ""
|
@@ -2137,110 +2170,182 @@ msgid ""
|
|
2137 |
"the %s."
|
2138 |
msgstr ""
|
2139 |
|
2140 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2141 |
msgid "Rich Snippet Creator"
|
2142 |
msgstr ""
|
2143 |
|
2144 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2145 |
-
msgid ""
|
2146 |
-
"Reviews\n"
|
2147 |
-
"Review"
|
2148 |
msgstr ""
|
2149 |
|
2150 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2151 |
-
|
|
|
2152 |
msgstr ""
|
2153 |
|
2154 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2155 |
-
msgid "
|
2156 |
msgstr ""
|
2157 |
|
2158 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2159 |
-
msgid "
|
2160 |
msgstr ""
|
2161 |
|
2162 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2163 |
-
msgid "
|
2164 |
msgstr ""
|
2165 |
|
2166 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2167 |
-
msgid "
|
2168 |
msgstr ""
|
2169 |
|
2170 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2171 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2172 |
-
msgid "
|
2173 |
msgstr ""
|
2174 |
|
2175 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2176 |
-
msgid "
|
2177 |
msgstr ""
|
2178 |
|
2179 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2180 |
-
msgid "
|
2181 |
msgstr ""
|
2182 |
|
2183 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2184 |
-
msgid "
|
2185 |
msgstr ""
|
2186 |
|
2187 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2188 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2189 |
msgstr ""
|
2190 |
|
2191 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2192 |
-
msgid "
|
2193 |
msgstr ""
|
2194 |
|
2195 |
-
#: modules/rich-snippets/rich-snippets.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2196 |
msgid "Name of Reviewed Item:"
|
2197 |
msgstr ""
|
2198 |
|
2199 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2200 |
msgid "0.5 stars"
|
2201 |
msgstr ""
|
2202 |
|
2203 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2204 |
msgid "1 star"
|
2205 |
msgstr ""
|
2206 |
|
2207 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2208 |
msgid "1.5 stars"
|
2209 |
msgstr ""
|
2210 |
|
2211 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2212 |
msgid "2 stars"
|
2213 |
msgstr ""
|
2214 |
|
2215 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2216 |
msgid "2.5 stars"
|
2217 |
msgstr ""
|
2218 |
|
2219 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2220 |
msgid "3 stars"
|
2221 |
msgstr ""
|
2222 |
|
2223 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2224 |
msgid "3.5 stars"
|
2225 |
msgstr ""
|
2226 |
|
2227 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2228 |
msgid "4 stars"
|
2229 |
msgstr ""
|
2230 |
|
2231 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2232 |
msgid "4.5 stars"
|
2233 |
msgstr ""
|
2234 |
|
2235 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2236 |
msgid "5 stars"
|
2237 |
msgstr ""
|
2238 |
|
2239 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2240 |
msgid "Star Rating for Reviewed Item:"
|
2241 |
msgstr ""
|
2242 |
|
2243 |
-
#: modules/rich-snippets/rich-snippets.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2244 |
msgid ""
|
2245 |
"\r\n"
|
2246 |
"<ul>\r\n"
|
@@ -2268,16 +2373,10 @@ msgid ""
|
|
2268 |
"</ul>\r\n"
|
2269 |
msgstr ""
|
2270 |
|
2271 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2272 |
msgid ""
|
2273 |
"\r\n"
|
2274 |
"<ul>\r\n"
|
2275 |
-
"\t<li><strong>Data Format</strong> — This lets you select the “"
|
2276 |
-
"language” that Rich Snippet Creator uses to communicate the rich "
|
2277 |
-
"snippet data to Google. Google supports all three options. We recommend "
|
2278 |
-
"“Microformats” because it’s compatible with the greatest "
|
2279 |
-
"number of HTML/XHTML variants. This option will likely be of interest only "
|
2280 |
-
"to advanced users.</li>\r\n"
|
2281 |
"\t<li><strong>Categories/Tags That Indicate Reviews</strong> — If you "
|
2282 |
"haven’t set the “Rich Snippet Type” setting for an old "
|
2283 |
"post or page, then Rich Snippet Creator will automatically set its default "
|
@@ -2288,7 +2387,7 @@ msgid ""
|
|
2288 |
"</ul>\r\n"
|
2289 |
msgstr ""
|
2290 |
|
2291 |
-
#: modules/rich-snippets/rich-snippets.php:
|
2292 |
msgid ""
|
2293 |
"\r\n"
|
2294 |
"<ul>\r\n"
|
@@ -2315,7 +2414,7 @@ msgstr ""
|
|
2315 |
msgid "SEO Design Solutions Whitepapers"
|
2316 |
msgstr ""
|
2317 |
|
2318 |
-
#. #-#-#-#-# plugin.pot (SEO Ultimate 7.
|
2319 |
#. Author of the plugin/theme
|
2320 |
#: modules/sds-blog/sds-blog.php:49
|
2321 |
msgid "SEO Design Solutions"
|
@@ -2631,7 +2730,7 @@ msgstr ""
|
|
2631 |
msgid "SEO Ultimate Plugin Settings"
|
2632 |
msgstr ""
|
2633 |
|
2634 |
-
#. #-#-#-#-# plugin.pot (SEO Ultimate 7.
|
2635 |
#. Plugin Name of the plugin/theme
|
2636 |
#: modules/settings/settings.php:26 plugin/class.seo-ultimate.php:861
|
2637 |
msgid "SEO Ultimate"
|
@@ -2733,7 +2832,7 @@ msgid "Uninstallation complete. Thanks for trying SEO Ultimate."
|
|
2733 |
msgstr ""
|
2734 |
|
2735 |
#: modules/sharing-buttons/sharing-buttons.php:12
|
2736 |
-
#: modules/sharing-buttons/sharing-buttons.php:
|
2737 |
msgid "Sharing Facilitator"
|
2738 |
msgstr ""
|
2739 |
|
@@ -2741,23 +2840,23 @@ msgstr ""
|
|
2741 |
msgid "Bookmark and Share"
|
2742 |
msgstr ""
|
2743 |
|
2744 |
-
#: modules/sharing-buttons/sharing-buttons.php:
|
2745 |
-
msgid "
|
2746 |
msgstr ""
|
2747 |
|
2748 |
#: modules/sharing-buttons/sharing-buttons.php:41
|
2749 |
-
msgid "
|
2750 |
msgstr ""
|
2751 |
|
2752 |
#: modules/sharing-buttons/sharing-buttons.php:42
|
2753 |
-
msgid "Use the
|
2754 |
msgstr ""
|
2755 |
|
2756 |
#: modules/sharing-buttons/sharing-buttons.php:43
|
2757 |
-
msgid "
|
2758 |
msgstr ""
|
2759 |
|
2760 |
-
#: modules/sharing-buttons/sharing-buttons.php:
|
2761 |
msgid ""
|
2762 |
"\r\n"
|
2763 |
"<ul>\r\n"
|
@@ -2777,11 +2876,11 @@ msgstr ""
|
|
2777 |
msgid "Slug Optimizer"
|
2778 |
msgstr ""
|
2779 |
|
2780 |
-
#: modules/slugs/slugs.php:
|
2781 |
msgid "Words to Remove"
|
2782 |
msgstr ""
|
2783 |
|
2784 |
-
#: modules/slugs/slugs.php:
|
2785 |
msgid ""
|
2786 |
"\r\n"
|
2787 |
"<ul>\r\n"
|
@@ -2801,7 +2900,7 @@ msgid ""
|
|
2801 |
"</ul>\r\n"
|
2802 |
msgstr ""
|
2803 |
|
2804 |
-
#: modules/slugs/slugs.php:
|
2805 |
msgid ""
|
2806 |
"\r\n"
|
2807 |
"<ul>\r\n"
|
@@ -2837,7 +2936,7 @@ msgid ""
|
|
2837 |
"</ul>\r\n"
|
2838 |
msgstr ""
|
2839 |
|
2840 |
-
#: modules/slugs/slugs.php:
|
2841 |
msgid ""
|
2842 |
"\r\n"
|
2843 |
"<ul>\r\n"
|
@@ -3304,49 +3403,49 @@ msgstr ""
|
|
3304 |
msgid "SEO Ultimate Widgets"
|
3305 |
msgstr ""
|
3306 |
|
3307 |
-
#: modules/widgets/widgets.php:
|
3308 |
msgid ""
|
3309 |
"On category archives, displays a list of child categories and/or posts in "
|
3310 |
"the category. Displays a list of top-level categories everywhere else. "
|
3311 |
"Powered by the SEO Ultimate plugin."
|
3312 |
msgstr ""
|
3313 |
|
3314 |
-
#: modules/widgets/widgets.php:
|
3315 |
msgid "Siloed Categories"
|
3316 |
msgstr ""
|
3317 |
|
3318 |
-
#: modules/widgets/widgets.php:
|
3319 |
msgid "Tags"
|
3320 |
msgstr ""
|
3321 |
|
3322 |
-
#: modules/widgets/widgets.php:
|
3323 |
msgid "Show post counts"
|
3324 |
msgstr ""
|
3325 |
|
3326 |
-
#: modules/widgets/widgets.php:
|
3327 |
msgid "Use term descriptions in title attributes"
|
3328 |
msgstr ""
|
3329 |
|
3330 |
-
#: modules/widgets/widgets.php:
|
3331 |
msgid "Taxonomy:"
|
3332 |
msgstr ""
|
3333 |
|
3334 |
-
#: modules/widgets/widgets.php:
|
3335 |
msgid ""
|
3336 |
"Add this widget to display Deeplink Juggernaut’s Footer Links in a "
|
3337 |
"widget area of your choosing rather than the default wp_footer section. "
|
3338 |
"Powered by the SEO Ultimate plugin."
|
3339 |
msgstr ""
|
3340 |
|
3341 |
-
#: modules/widgets/widgets.php:
|
3342 |
msgid "Title: <em>(optional)</em>"
|
3343 |
msgstr ""
|
3344 |
|
3345 |
-
#: modules/widgets/widgets.php:
|
3346 |
msgid "Display as a list"
|
3347 |
msgstr ""
|
3348 |
|
3349 |
-
#: modules/widgets/widgets.php:
|
3350 |
msgid "Use my <a href=\"%s\" target=\"_blank\">footer link HTML formats</a>"
|
3351 |
msgstr ""
|
3352 |
|
2 |
# This file is distributed under the same license as the SEO Ultimate package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: SEO Ultimate 7.5\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
|
7 |
+
"POT-Creation-Date: 2012-08-09 15:06:57+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
206 |
msgstr ""
|
207 |
|
208 |
#: modules/404s/fofs.php:19 modules/canonical/canonical.php:212
|
209 |
+
#: modules/files/files.php:144 modules/link-nofollow/link-nofollow.php:132
|
210 |
+
#: modules/linkbox/linkbox.php:94 modules/meta/meta-descriptions.php:193
|
211 |
#: modules/meta/meta-keywords.php:179 modules/meta/meta-robots.php:52
|
212 |
#: modules/meta/webmaster-verify.php:87 modules/more-links/more-links.php:104
|
213 |
#: modules/more-links/more-links.php:111
|
214 |
+
#: modules/rich-snippets/rich-snippets.php:390
|
215 |
#: modules/settings/settings.php:63
|
216 |
+
#: modules/sharing-buttons/sharing-buttons.php:71 modules/slugs/slugs.php:78
|
217 |
#: modules/titles/titles.php:357 modules/user-code/user-code.php:97
|
218 |
msgid "Overview"
|
219 |
msgstr ""
|
263 |
"</ul>\r\n"
|
264 |
msgstr ""
|
265 |
|
266 |
+
#: modules/404s/fofs.php:45 modules/linkbox/linkbox.php:105
|
267 |
#: modules/meta/meta-descriptions.php:204 modules/meta/meta-keywords.php:186
|
268 |
+
#: modules/meta/meta-robots.php:63 modules/rich-snippets/rich-snippets.php:401
|
269 |
#: modules/titles/titles.php:431
|
270 |
msgid "Settings Help"
|
271 |
msgstr ""
|
318 |
#: modules/404s/fofs.php:74 modules/files/files.php:165
|
319 |
#: modules/meta/meta-descriptions.php:225 modules/meta/meta-keywords.php:209
|
320 |
#: modules/meta/meta-robots.php:102
|
321 |
+
#: modules/rich-snippets/rich-snippets.php:410 modules/slugs/slugs.php:109
|
322 |
#: modules/titles/titles.php:469 modules/user-code/user-code.php:111
|
323 |
msgid "Troubleshooting"
|
324 |
msgstr ""
|
575 |
msgid "Footer Deeplink Juggernaut"
|
576 |
msgstr ""
|
577 |
|
578 |
+
#: modules/autolinks/footer-autolinks.php:17 modules/widgets/widgets.php:174
|
579 |
msgid "Footer Links"
|
580 |
msgstr ""
|
581 |
|
825 |
msgid "Save Changes"
|
826 |
msgstr ""
|
827 |
|
828 |
+
#: modules/class.su-module.php:1974
|
829 |
msgid ""
|
830 |
"Are you sure you want to replace the textbox contents with this default "
|
831 |
"value?"
|
832 |
msgstr ""
|
833 |
|
834 |
+
#: modules/class.su-module.php:2000 modules/settings/settings-data.php:23
|
835 |
msgid "Reset"
|
836 |
msgstr ""
|
837 |
|
838 |
+
#: modules/class.su-module.php:2738 modules/class.su-module.php:2750
|
839 |
msgid "A Deleted %s"
|
840 |
msgstr ""
|
841 |
|
842 |
+
#: modules/class.su-module.php:2740
|
843 |
msgid "A Deleted Post"
|
844 |
msgstr ""
|
845 |
|
846 |
+
#: modules/class.su-module.php:2755
|
847 |
msgid "A Deleted Term"
|
848 |
msgstr ""
|
849 |
|
850 |
+
#: modules/class.su-module.php:2761 modules/meta/meta-descriptions.php:31
|
851 |
+
#: modules/meta/meta-keywords.php:41 modules/opengraph/opengraph.php:266
|
852 |
#: plugin/class.seo-ultimate.php:1775
|
853 |
msgid "Blog Homepage"
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: modules/class.su-module.php:2766 plugin/class.seo-ultimate.php:1853
|
857 |
msgid "Author"
|
858 |
msgstr ""
|
859 |
|
860 |
+
#: modules/class.su-module.php:2768
|
861 |
msgid "A Deleted User"
|
862 |
msgstr ""
|
863 |
|
864 |
+
#: modules/class.su-module.php:2783 plugin/class.seo-ultimate.php:1883
|
865 |
msgid "Link Mask"
|
866 |
msgstr ""
|
867 |
|
868 |
+
#: modules/class.su-module.php:2785
|
869 |
msgid "Link Mask (Disabled)"
|
870 |
msgstr ""
|
871 |
|
872 |
+
#: modules/class.su-module.php:2790
|
873 |
msgid "A Deleted Link Mask"
|
874 |
msgstr ""
|
875 |
|
876 |
+
#: modules/class.su-module.php:2820
|
877 |
msgid "Type a URL or start typing the name of an item on your site"
|
878 |
msgstr ""
|
879 |
|
880 |
+
#: modules/class.su-module.php:2833
|
881 |
msgid "Remove this location from this textbox"
|
882 |
msgstr ""
|
883 |
|
884 |
+
#: modules/class.su-module.php:2833
|
885 |
msgid "X"
|
886 |
msgstr ""
|
887 |
|
959 |
msgstr ""
|
960 |
|
961 |
#: modules/files/files.php:155 modules/meta/meta-descriptions.php:216
|
962 |
+
#: modules/meta/meta-keywords.php:196 modules/modules/modules.php:190
|
963 |
#: modules/more-links/more-links.php:105 modules/more-links/more-links.php:116
|
964 |
+
#: modules/settings/settings.php:82 modules/slugs/slugs.php:89
|
965 |
#: modules/titles/titles.php:458
|
966 |
msgid "FAQ"
|
967 |
msgstr ""
|
1110 |
msgid "Nofollow Manager"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
+
#: modules/link-nofollow/link-nofollow.php:57
|
|
|
|
|
|
|
|
|
1114 |
msgid "Adjacent post links (next post / previous post)"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
+
#: modules/link-nofollow/link-nofollow.php:58
|
1118 |
msgid "Category links (after posts)"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
+
#: modules/link-nofollow/link-nofollow.php:59
|
1122 |
msgid "Category links (in lists)"
|
1123 |
msgstr ""
|
1124 |
|
1125 |
+
#: modules/link-nofollow/link-nofollow.php:60
|
1126 |
msgid "Comment anchor links"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
+
#: modules/link-nofollow/link-nofollow.php:61
|
1130 |
msgid "Comment feed links"
|
1131 |
msgstr ""
|
1132 |
|
1133 |
+
#: modules/link-nofollow/link-nofollow.php:62
|
1134 |
msgid "Date-based archive links"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
+
#: modules/link-nofollow/link-nofollow.php:63
|
1138 |
msgid "Pagination navigation links (all)"
|
1139 |
msgstr ""
|
1140 |
|
1141 |
+
#: modules/link-nofollow/link-nofollow.php:64
|
1142 |
msgid "Pagination navigation links (on blog home only)"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
+
#: modules/link-nofollow/link-nofollow.php:65
|
1146 |
msgid "“Read more” links"
|
1147 |
msgstr ""
|
1148 |
|
1149 |
+
#: modules/link-nofollow/link-nofollow.php:66
|
1150 |
msgid "Registration link"
|
1151 |
msgstr ""
|
1152 |
|
1153 |
+
#: modules/link-nofollow/link-nofollow.php:67
|
1154 |
msgid "Login link"
|
1155 |
msgstr ""
|
1156 |
|
1157 |
+
#: modules/link-nofollow/link-nofollow.php:68
|
1158 |
msgid "Tag links (after posts)"
|
1159 |
msgstr ""
|
1160 |
|
1161 |
+
#: modules/link-nofollow/link-nofollow.php:69
|
1162 |
msgid "Tag links (in lists and clouds)"
|
1163 |
msgstr ""
|
1164 |
|
1165 |
+
#: modules/link-nofollow/link-nofollow.php:70
|
1166 |
+
msgid "Add the nofollow attribute to..."
|
1167 |
+
msgstr ""
|
1168 |
+
|
1169 |
+
#: modules/link-nofollow/link-nofollow.php:78
|
1170 |
msgid "When displaying page lists, nofollow links to this page"
|
1171 |
msgstr ""
|
1172 |
|
1173 |
+
#: modules/link-nofollow/link-nofollow.php:78
|
1174 |
msgid "Nofollow:"
|
1175 |
msgstr ""
|
1176 |
|
1177 |
+
#: modules/link-nofollow/link-nofollow.php:133
|
1178 |
msgid ""
|
1179 |
"\r\n"
|
1180 |
"<p>Nofollow Manager adds the <code>rel="nofollow"</code> attribute "
|
1192 |
msgid "Linkbox Inserter"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
+
#: modules/linkbox/linkbox.php:21
|
1196 |
msgid "Link to this post!"
|
1197 |
msgstr ""
|
1198 |
|
1199 |
+
#: modules/linkbox/linkbox.php:48
|
1200 |
msgid "At the end of posts"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
+
#: modules/linkbox/linkbox.php:49
|
1204 |
msgid "At the end of pages"
|
1205 |
msgstr ""
|
1206 |
|
1207 |
+
#: modules/linkbox/linkbox.php:50
|
1208 |
msgid "When called by the su_linkbox hook"
|
1209 |
msgstr ""
|
1210 |
|
1211 |
+
#: modules/linkbox/linkbox.php:51
|
1212 |
msgid "Display linkboxes..."
|
1213 |
msgstr ""
|
1214 |
|
1215 |
+
#: modules/linkbox/linkbox.php:52
|
1216 |
msgid "Linkbox HTML"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
+
#: modules/linkbox/linkbox.php:95
|
1220 |
msgid ""
|
1221 |
"\r\n"
|
1222 |
"<ul>\r\n"
|
1231 |
"</ul>\r\n"
|
1232 |
msgstr ""
|
1233 |
|
1234 |
+
#: modules/linkbox/linkbox.php:106
|
1235 |
msgid ""
|
1236 |
"\r\n"
|
1237 |
"<p>Here’s information on the various settings:</p>\r\n"
|
1416 |
msgstr ""
|
1417 |
|
1418 |
#: modules/meta/meta-keywords.php:39 modules/meta/meta-robots.php:22
|
1419 |
+
#: modules/opengraph/opengraph.php:264
|
1420 |
msgid "Sitewide Values"
|
1421 |
msgstr ""
|
1422 |
|
1423 |
#: modules/meta/meta-keywords.php:40 modules/noindex/noindex.php:50
|
1424 |
+
#: modules/opengraph/opengraph.php:265
|
1425 |
msgid "Default Values"
|
1426 |
msgstr ""
|
1427 |
|
1697 |
"SEO Ultimate’s features are located in groups called “modules."
|
1698 |
"” By default, most of these modules are listed in the “"
|
1699 |
"SEO” menu on the left. Whenever you’re working with a module, "
|
1700 |
+
"you can view documentation by clicking the “Help” tab in the "
|
1701 |
+
"upper-right-hand corner of your administration screen."
|
1702 |
msgstr ""
|
1703 |
|
1704 |
#: modules/modules/modules.php:52
|
1735 |
msgid "Disabled"
|
1736 |
msgstr ""
|
1737 |
|
1738 |
+
#: modules/modules/modules.php:177
|
1739 |
msgid "Options Help"
|
1740 |
msgstr ""
|
1741 |
|
1742 |
+
#: modules/modules/modules.php:178
|
1743 |
msgid ""
|
1744 |
"\r\n"
|
1745 |
"<p>The Module Manager lets you customize the visibility and accessibility of "
|
1759 |
"</ul>\r\n"
|
1760 |
msgstr ""
|
1761 |
|
1762 |
+
#: modules/modules/modules.php:191
|
1763 |
msgid ""
|
1764 |
"\r\n"
|
1765 |
"<ul>\r\n"
|
1859 |
msgstr ""
|
1860 |
|
1861 |
#: modules/noindex/noindex.php:69 modules/noindex/noindex.php:80
|
1862 |
+
#: modules/opengraph/opengraph.php:235 modules/opengraph/opengraph.php:325
|
1863 |
+
#: modules/opengraph/opengraph.php:326
|
1864 |
msgid "Use default"
|
1865 |
msgstr ""
|
1866 |
|
1950 |
msgid "Open Graph"
|
1951 |
msgstr ""
|
1952 |
|
1953 |
+
#: modules/opengraph/opengraph.php:237
|
1954 |
msgid "Type"
|
1955 |
msgstr ""
|
1956 |
|
1957 |
+
#: modules/opengraph/opengraph.php:242
|
1958 |
msgid "Title"
|
1959 |
msgstr ""
|
1960 |
|
1961 |
+
#: modules/opengraph/opengraph.php:247
|
1962 |
msgid "Description"
|
1963 |
msgstr ""
|
1964 |
|
1965 |
+
#: modules/opengraph/opengraph.php:252
|
1966 |
msgid "Image"
|
1967 |
msgstr ""
|
1968 |
|
1969 |
+
#: modules/opengraph/opengraph.php:274
|
1970 |
msgid "Site Name"
|
1971 |
msgstr ""
|
1972 |
|
1973 |
+
#: modules/opengraph/opengraph.php:275
|
1974 |
msgid "Facebook App ID"
|
1975 |
msgstr ""
|
1976 |
|
1977 |
+
#: modules/opengraph/opengraph.php:276
|
1978 |
+
msgid "This Site’s Twitter Handle"
|
1979 |
+
msgstr ""
|
1980 |
+
|
1981 |
+
#: modules/opengraph/opengraph.php:283
|
1982 |
msgid "Default Types"
|
1983 |
msgstr ""
|
1984 |
|
1985 |
+
#: modules/opengraph/opengraph.php:285
|
1986 |
+
msgid "Post Type"
|
1987 |
+
msgstr ""
|
1988 |
+
|
1989 |
+
#: modules/opengraph/opengraph.php:286
|
1990 |
+
msgid "Open Graph Type"
|
1991 |
+
msgstr ""
|
1992 |
+
|
1993 |
+
#: modules/opengraph/opengraph.php:287
|
1994 |
+
msgid "Twitter Type"
|
1995 |
+
msgstr ""
|
1996 |
+
|
1997 |
+
#: modules/opengraph/opengraph.php:302 modules/opengraph/opengraph.php:307
|
1998 |
msgid "Default Image"
|
1999 |
msgstr ""
|
2000 |
|
2001 |
+
#: modules/opengraph/opengraph.php:305
|
2002 |
msgid ""
|
2003 |
"In the box below, you can specify an image URL or an image from your media "
|
2004 |
"library to use as a default image in the event that there is no image "
|
2007 |
"the WordPress.com mShots service will be used instead."
|
2008 |
msgstr ""
|
2009 |
|
2010 |
+
#: modules/opengraph/opengraph.php:314 modules/titles/titles.php:91
|
2011 |
msgid "Blog Homepage Title"
|
2012 |
msgstr ""
|
2013 |
|
2014 |
+
#: modules/opengraph/opengraph.php:315
|
2015 |
msgid "Blog Homepage Description"
|
2016 |
msgstr ""
|
2017 |
|
2018 |
+
#: modules/opengraph/opengraph.php:316
|
2019 |
msgid "Blog Homepage Image"
|
2020 |
msgstr ""
|
2021 |
|
2022 |
+
#: modules/opengraph/opengraph.php:322 modules/widgets/widgets.php:140
|
2023 |
msgid "Title:"
|
2024 |
msgstr ""
|
2025 |
|
2026 |
+
#: modules/opengraph/opengraph.php:323
|
2027 |
msgid "Description:"
|
2028 |
msgstr ""
|
2029 |
|
2030 |
+
#: modules/opengraph/opengraph.php:324
|
2031 |
msgid "Image:"
|
2032 |
msgstr ""
|
2033 |
|
2034 |
+
#: modules/opengraph/opengraph.php:325
|
2035 |
+
msgid "Open Graph Type:"
|
2036 |
msgstr ""
|
2037 |
|
2038 |
+
#: modules/opengraph/opengraph.php:326
|
2039 |
+
msgid "Twitter Type:"
|
2040 |
+
msgstr ""
|
2041 |
+
|
2042 |
+
#: modules/opengraph/opengraph.php:351
|
2043 |
msgid "Featured Image: %s"
|
2044 |
msgstr ""
|
2045 |
|
2046 |
+
#: modules/opengraph/opengraph.php:359
|
2047 |
+
#: modules/rich-snippets/rich-snippets.php:353
|
|
|
2048 |
msgid "None"
|
2049 |
msgstr ""
|
2050 |
|
2051 |
+
#: modules/opengraph/opengraph.php:360
|
2052 |
msgid "Internet"
|
2053 |
msgstr ""
|
2054 |
|
2055 |
+
#: modules/opengraph/opengraph.php:361
|
2056 |
msgid "Article"
|
2057 |
msgstr ""
|
2058 |
|
2059 |
+
#: modules/opengraph/opengraph.php:362
|
2060 |
msgid "Blog"
|
2061 |
msgstr ""
|
2062 |
|
2063 |
+
#: modules/opengraph/opengraph.php:363
|
2064 |
msgid "Profile"
|
2065 |
msgstr ""
|
2066 |
|
2067 |
+
#: modules/opengraph/opengraph.php:364
|
2068 |
msgid "Website"
|
2069 |
msgstr ""
|
2070 |
|
2071 |
+
#: modules/opengraph/opengraph.php:365
|
2072 |
msgid "Products"
|
2073 |
msgstr ""
|
2074 |
|
2075 |
+
#: modules/opengraph/opengraph.php:366
|
2076 |
msgid "Book"
|
2077 |
msgstr ""
|
2078 |
|
2079 |
+
#: modules/opengraph/opengraph.php:367
|
2080 |
msgid "Music"
|
2081 |
msgstr ""
|
2082 |
|
2083 |
+
#: modules/opengraph/opengraph.php:368
|
2084 |
msgid "Album"
|
2085 |
msgstr ""
|
2086 |
|
2087 |
+
#: modules/opengraph/opengraph.php:369
|
2088 |
msgid "Playlist"
|
2089 |
msgstr ""
|
2090 |
|
2091 |
+
#: modules/opengraph/opengraph.php:370
|
2092 |
msgid "Radio Station"
|
2093 |
msgstr ""
|
2094 |
|
2095 |
+
#: modules/opengraph/opengraph.php:371
|
2096 |
msgid "Song"
|
2097 |
msgstr ""
|
2098 |
|
2099 |
+
#: modules/opengraph/opengraph.php:372
|
2100 |
msgid "Videos"
|
2101 |
msgstr ""
|
2102 |
|
2103 |
+
#: modules/opengraph/opengraph.php:373
|
2104 |
msgid "Movie"
|
2105 |
msgstr ""
|
2106 |
|
2107 |
+
#: modules/opengraph/opengraph.php:374
|
2108 |
msgid "TV Episode"
|
2109 |
msgstr ""
|
2110 |
|
2111 |
+
#: modules/opengraph/opengraph.php:375
|
2112 |
msgid "TV Show"
|
2113 |
msgstr ""
|
2114 |
|
2115 |
+
#: modules/opengraph/opengraph.php:376
|
2116 |
msgid "Video"
|
2117 |
msgstr ""
|
2118 |
|
2119 |
+
#: modules/opengraph/opengraph.php:383
|
2120 |
+
msgid "Regular"
|
2121 |
+
msgstr ""
|
2122 |
+
|
2123 |
+
#: modules/opengraph/opengraph.php:384
|
2124 |
+
#: modules/rich-snippets/rich-snippets.php:114
|
2125 |
+
msgid "Photo"
|
2126 |
+
msgstr ""
|
2127 |
+
|
2128 |
+
#: modules/opengraph/opengraph.php:406
|
2129 |
+
msgid "Twitter Handle"
|
2130 |
+
msgstr ""
|
2131 |
+
|
2132 |
#: modules/permalinks/permalinks.php:15
|
2133 |
msgid "Permalink Tweaker"
|
2134 |
msgstr ""
|
2170 |
"the %s."
|
2171 |
msgstr ""
|
2172 |
|
2173 |
+
#: modules/rich-snippets/rich-snippets.php:14
|
2174 |
msgid "Rich Snippet Creator"
|
2175 |
msgstr ""
|
2176 |
|
2177 |
+
#: modules/rich-snippets/rich-snippets.php:31
|
2178 |
+
msgid "Schema.org Microdata"
|
|
|
|
|
2179 |
msgstr ""
|
2180 |
|
2181 |
+
#: modules/rich-snippets/rich-snippets.php:44
|
2182 |
+
#: modules/rich-snippets/rich-snippets.php:343
|
2183 |
+
msgid "Review"
|
2184 |
msgstr ""
|
2185 |
|
2186 |
+
#: modules/rich-snippets/rich-snippets.php:49
|
2187 |
+
msgid "Item Reviewed"
|
2188 |
msgstr ""
|
2189 |
|
2190 |
+
#: modules/rich-snippets/rich-snippets.php:52
|
2191 |
+
msgid "Star Rating"
|
2192 |
msgstr ""
|
2193 |
|
2194 |
+
#: modules/rich-snippets/rich-snippets.php:65
|
2195 |
+
msgid "Review Author"
|
2196 |
msgstr ""
|
2197 |
|
2198 |
+
#: modules/rich-snippets/rich-snippets.php:70
|
2199 |
+
msgid "Date Reviewed"
|
2200 |
msgstr ""
|
2201 |
|
2202 |
+
#: modules/rich-snippets/rich-snippets.php:78
|
2203 |
+
#: modules/rich-snippets/rich-snippets.php:344
|
2204 |
+
msgid "Place"
|
2205 |
msgstr ""
|
2206 |
|
2207 |
+
#: modules/rich-snippets/rich-snippets.php:82
|
2208 |
+
msgid "Address"
|
2209 |
msgstr ""
|
2210 |
|
2211 |
+
#: modules/rich-snippets/rich-snippets.php:86
|
2212 |
+
msgid "Street Address"
|
2213 |
msgstr ""
|
2214 |
|
2215 |
+
#: modules/rich-snippets/rich-snippets.php:89
|
2216 |
+
msgid "PO Box"
|
2217 |
msgstr ""
|
2218 |
|
2219 |
+
#: modules/rich-snippets/rich-snippets.php:92
|
2220 |
+
#: modules/rich-snippets/rich-snippets.php:95
|
2221 |
+
msgid "City"
|
2222 |
+
msgstr ""
|
2223 |
+
|
2224 |
+
#: modules/rich-snippets/rich-snippets.php:98
|
2225 |
+
msgid "Country"
|
2226 |
+
msgstr ""
|
2227 |
+
|
2228 |
+
#: modules/rich-snippets/rich-snippets.php:101
|
2229 |
+
msgid "Postal Code"
|
2230 |
msgstr ""
|
2231 |
|
2232 |
+
#: modules/rich-snippets/rich-snippets.php:106
|
2233 |
+
msgid "Fax Number"
|
2234 |
msgstr ""
|
2235 |
|
2236 |
+
#: modules/rich-snippets/rich-snippets.php:109
|
2237 |
+
msgid "Map URL"
|
2238 |
+
msgstr ""
|
2239 |
+
|
2240 |
+
#: modules/rich-snippets/rich-snippets.php:123
|
2241 |
+
msgid "Phone Number"
|
2242 |
+
msgstr ""
|
2243 |
+
|
2244 |
+
#: modules/rich-snippets/rich-snippets.php:304
|
2245 |
+
msgid "Schema.org markup generated by %1$s (%2$s)"
|
2246 |
+
msgstr ""
|
2247 |
+
|
2248 |
+
#: modules/rich-snippets/rich-snippets.php:342
|
2249 |
+
msgid "Standard"
|
2250 |
+
msgstr ""
|
2251 |
+
|
2252 |
+
#: modules/rich-snippets/rich-snippets.php:345
|
2253 |
+
msgid "Search Result Type:"
|
2254 |
+
msgstr ""
|
2255 |
+
|
2256 |
+
#: modules/rich-snippets/rich-snippets.php:350
|
2257 |
msgid "Name of Reviewed Item:"
|
2258 |
msgstr ""
|
2259 |
|
2260 |
+
#: modules/rich-snippets/rich-snippets.php:354
|
2261 |
msgid "0.5 stars"
|
2262 |
msgstr ""
|
2263 |
|
2264 |
+
#: modules/rich-snippets/rich-snippets.php:355
|
2265 |
msgid "1 star"
|
2266 |
msgstr ""
|
2267 |
|
2268 |
+
#: modules/rich-snippets/rich-snippets.php:356
|
2269 |
msgid "1.5 stars"
|
2270 |
msgstr ""
|
2271 |
|
2272 |
+
#: modules/rich-snippets/rich-snippets.php:357
|
2273 |
msgid "2 stars"
|
2274 |
msgstr ""
|
2275 |
|
2276 |
+
#: modules/rich-snippets/rich-snippets.php:358
|
2277 |
msgid "2.5 stars"
|
2278 |
msgstr ""
|
2279 |
|
2280 |
+
#: modules/rich-snippets/rich-snippets.php:359
|
2281 |
msgid "3 stars"
|
2282 |
msgstr ""
|
2283 |
|
2284 |
+
#: modules/rich-snippets/rich-snippets.php:360
|
2285 |
msgid "3.5 stars"
|
2286 |
msgstr ""
|
2287 |
|
2288 |
+
#: modules/rich-snippets/rich-snippets.php:361
|
2289 |
msgid "4 stars"
|
2290 |
msgstr ""
|
2291 |
|
2292 |
+
#: modules/rich-snippets/rich-snippets.php:362
|
2293 |
msgid "4.5 stars"
|
2294 |
msgstr ""
|
2295 |
|
2296 |
+
#: modules/rich-snippets/rich-snippets.php:363
|
2297 |
msgid "5 stars"
|
2298 |
msgstr ""
|
2299 |
|
2300 |
+
#: modules/rich-snippets/rich-snippets.php:364
|
2301 |
msgid "Star Rating for Reviewed Item:"
|
2302 |
msgstr ""
|
2303 |
|
2304 |
+
#: modules/rich-snippets/rich-snippets.php:370
|
2305 |
+
msgid "Street Address:"
|
2306 |
+
msgstr ""
|
2307 |
+
|
2308 |
+
#: modules/rich-snippets/rich-snippets.php:371
|
2309 |
+
msgid "Post Office Box Number:"
|
2310 |
+
msgstr ""
|
2311 |
+
|
2312 |
+
#: modules/rich-snippets/rich-snippets.php:372
|
2313 |
+
msgid "City:"
|
2314 |
+
msgstr ""
|
2315 |
+
|
2316 |
+
#: modules/rich-snippets/rich-snippets.php:373
|
2317 |
+
msgid "State or Region:"
|
2318 |
+
msgstr ""
|
2319 |
+
|
2320 |
+
#: modules/rich-snippets/rich-snippets.php:374
|
2321 |
+
msgid "Country:"
|
2322 |
+
msgstr ""
|
2323 |
+
|
2324 |
+
#: modules/rich-snippets/rich-snippets.php:375
|
2325 |
+
msgid "Postal Code:"
|
2326 |
+
msgstr ""
|
2327 |
+
|
2328 |
+
#: modules/rich-snippets/rich-snippets.php:376
|
2329 |
+
msgid "Address:"
|
2330 |
+
msgstr ""
|
2331 |
+
|
2332 |
+
#: modules/rich-snippets/rich-snippets.php:377
|
2333 |
+
msgid "Map Page:"
|
2334 |
+
msgstr ""
|
2335 |
+
|
2336 |
+
#: modules/rich-snippets/rich-snippets.php:378
|
2337 |
+
msgid "Phone Number:"
|
2338 |
+
msgstr ""
|
2339 |
+
|
2340 |
+
#: modules/rich-snippets/rich-snippets.php:379
|
2341 |
+
msgid "Fax Number:"
|
2342 |
+
msgstr ""
|
2343 |
+
|
2344 |
+
#: modules/rich-snippets/rich-snippets.php:380
|
2345 |
+
msgid "Photo:"
|
2346 |
+
msgstr ""
|
2347 |
+
|
2348 |
+
#: modules/rich-snippets/rich-snippets.php:391
|
2349 |
msgid ""
|
2350 |
"\r\n"
|
2351 |
"<ul>\r\n"
|
2373 |
"</ul>\r\n"
|
2374 |
msgstr ""
|
2375 |
|
2376 |
+
#: modules/rich-snippets/rich-snippets.php:402
|
2377 |
msgid ""
|
2378 |
"\r\n"
|
2379 |
"<ul>\r\n"
|
|
|
|
|
|
|
|
|
|
|
|
|
2380 |
"\t<li><strong>Categories/Tags That Indicate Reviews</strong> — If you "
|
2381 |
"haven’t set the “Rich Snippet Type” setting for an old "
|
2382 |
"post or page, then Rich Snippet Creator will automatically set its default "
|
2387 |
"</ul>\r\n"
|
2388 |
msgstr ""
|
2389 |
|
2390 |
+
#: modules/rich-snippets/rich-snippets.php:411
|
2391 |
msgid ""
|
2392 |
"\r\n"
|
2393 |
"<ul>\r\n"
|
2414 |
msgid "SEO Design Solutions Whitepapers"
|
2415 |
msgstr ""
|
2416 |
|
2417 |
+
#. #-#-#-#-# plugin.pot (SEO Ultimate 7.5) #-#-#-#-#
|
2418 |
#. Author of the plugin/theme
|
2419 |
#: modules/sds-blog/sds-blog.php:49
|
2420 |
msgid "SEO Design Solutions"
|
2730 |
msgid "SEO Ultimate Plugin Settings"
|
2731 |
msgstr ""
|
2732 |
|
2733 |
+
#. #-#-#-#-# plugin.pot (SEO Ultimate 7.5) #-#-#-#-#
|
2734 |
#. Plugin Name of the plugin/theme
|
2735 |
#: modules/settings/settings.php:26 plugin/class.seo-ultimate.php:861
|
2736 |
msgid "SEO Ultimate"
|
2832 |
msgstr ""
|
2833 |
|
2834 |
#: modules/sharing-buttons/sharing-buttons.php:12
|
2835 |
+
#: modules/sharing-buttons/sharing-buttons.php:71
|
2836 |
msgid "Sharing Facilitator"
|
2837 |
msgstr ""
|
2838 |
|
2840 |
msgid "Bookmark and Share"
|
2841 |
msgstr ""
|
2842 |
|
2843 |
+
#: modules/sharing-buttons/sharing-buttons.php:40
|
2844 |
+
msgid "None; disable sharing buttons"
|
2845 |
msgstr ""
|
2846 |
|
2847 |
#: modules/sharing-buttons/sharing-buttons.php:41
|
2848 |
+
msgid "Use the ShareThis button"
|
2849 |
msgstr ""
|
2850 |
|
2851 |
#: modules/sharing-buttons/sharing-buttons.php:42
|
2852 |
+
msgid "Use the AddThis button"
|
2853 |
msgstr ""
|
2854 |
|
2855 |
#: modules/sharing-buttons/sharing-buttons.php:43
|
2856 |
+
msgid "Which provider would you like to use for your sharing buttons?"
|
2857 |
msgstr ""
|
2858 |
|
2859 |
+
#: modules/sharing-buttons/sharing-buttons.php:72
|
2860 |
msgid ""
|
2861 |
"\r\n"
|
2862 |
"<ul>\r\n"
|
2876 |
msgid "Slug Optimizer"
|
2877 |
msgstr ""
|
2878 |
|
2879 |
+
#: modules/slugs/slugs.php:19
|
2880 |
msgid "Words to Remove"
|
2881 |
msgstr ""
|
2882 |
|
2883 |
+
#: modules/slugs/slugs.php:79
|
2884 |
msgid ""
|
2885 |
"\r\n"
|
2886 |
"<ul>\r\n"
|
2900 |
"</ul>\r\n"
|
2901 |
msgstr ""
|
2902 |
|
2903 |
+
#: modules/slugs/slugs.php:90
|
2904 |
msgid ""
|
2905 |
"\r\n"
|
2906 |
"<ul>\r\n"
|
2936 |
"</ul>\r\n"
|
2937 |
msgstr ""
|
2938 |
|
2939 |
+
#: modules/slugs/slugs.php:110
|
2940 |
msgid ""
|
2941 |
"\r\n"
|
2942 |
"<ul>\r\n"
|
3403 |
msgid "SEO Ultimate Widgets"
|
3404 |
msgstr ""
|
3405 |
|
3406 |
+
#: modules/widgets/widgets.php:46
|
3407 |
msgid ""
|
3408 |
"On category archives, displays a list of child categories and/or posts in "
|
3409 |
"the category. Displays a list of top-level categories everywhere else. "
|
3410 |
"Powered by the SEO Ultimate plugin."
|
3411 |
msgstr ""
|
3412 |
|
3413 |
+
#: modules/widgets/widgets.php:47
|
3414 |
msgid "Siloed Categories"
|
3415 |
msgstr ""
|
3416 |
|
3417 |
+
#: modules/widgets/widgets.php:61
|
3418 |
msgid "Tags"
|
3419 |
msgstr ""
|
3420 |
|
3421 |
+
#: modules/widgets/widgets.php:144
|
3422 |
msgid "Show post counts"
|
3423 |
msgstr ""
|
3424 |
|
3425 |
+
#: modules/widgets/widgets.php:146
|
3426 |
msgid "Use term descriptions in title attributes"
|
3427 |
msgstr ""
|
3428 |
|
3429 |
+
#: modules/widgets/widgets.php:148
|
3430 |
msgid "Taxonomy:"
|
3431 |
msgstr ""
|
3432 |
|
3433 |
+
#: modules/widgets/widgets.php:173
|
3434 |
msgid ""
|
3435 |
"Add this widget to display Deeplink Juggernaut’s Footer Links in a "
|
3436 |
"widget area of your choosing rather than the default wp_footer section. "
|
3437 |
"Powered by the SEO Ultimate plugin."
|
3438 |
msgstr ""
|
3439 |
|
3440 |
+
#: modules/widgets/widgets.php:227
|
3441 |
msgid "Title: <em>(optional)</em>"
|
3442 |
msgstr ""
|
3443 |
|
3444 |
+
#: modules/widgets/widgets.php:231
|
3445 |
msgid "Display as a list"
|
3446 |
msgstr ""
|
3447 |
|
3448 |
+
#: modules/widgets/widgets.php:234
|
3449 |
msgid "Use my <a href=\"%s\" target=\"_blank\">footer link HTML formats</a>"
|
3450 |
msgstr ""
|
3451 |
|