Version Description
Download this release
Release Info
Developer | SEO Design Solutions |
Plugin | SEO Ultimate |
Version | 3.2 |
Comparing to | |
See all releases |
Code changes from version 3.1 to 3.2
- includes/jlfunctions/arr.php +38 -0
- includes/jlfunctions/io.php +53 -0
- modules/settings/install.php +1 -1
- modules/settings/settings-data.php +120 -10
- plugin/su-functions.php +2 -2
- readme.txt +13 -5
- screenshot-14.png +0 -0
- seo-ultimate.php +24 -13
- seo-ultimate.pot +96 -21
includes/jlfunctions/arr.php
CHANGED
@@ -104,6 +104,44 @@ class suarr {
|
|
104 |
}
|
105 |
return $newarr;
|
106 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
}
|
108 |
|
109 |
?>
|
104 |
}
|
105 |
return $newarr;
|
106 |
}
|
107 |
+
|
108 |
+
function key_replace($array, $key_changes, $recursive = true, $return_replaced_only = false) {
|
109 |
+
$newarray = array();
|
110 |
+
foreach ($array as $key => $value) {
|
111 |
+
$changed = false;
|
112 |
+
if ($recursive && is_array($value)) {
|
113 |
+
$oldvalue = $value;
|
114 |
+
$value = suarr::key_replace($value, $key_changes, true, $return_replaced_only);
|
115 |
+
if ($oldvalue != $value) $changed = true;
|
116 |
+
}
|
117 |
+
|
118 |
+
if (isset($key_changes[$key])) {
|
119 |
+
$key = $key_changes[$key];
|
120 |
+
$changed = true;
|
121 |
+
}
|
122 |
+
|
123 |
+
if ($changed || !$return_replaced_only)
|
124 |
+
$newarray[$key] = $value;
|
125 |
+
}
|
126 |
+
return $newarray;
|
127 |
+
}
|
128 |
+
|
129 |
+
function value_replace($array, $value_changes, $recursive = true, $return_replaced_only = false) {
|
130 |
+
$newarray = array();
|
131 |
+
foreach ($array as $key => $value) {
|
132 |
+
|
133 |
+
$oldvalue = $value;
|
134 |
+
|
135 |
+
if ($recursive && is_array($value))
|
136 |
+
$value = suarr::value_replace($value, $value_changes, true);
|
137 |
+
elseif (isset($value_changes[$value]))
|
138 |
+
$value = $value_changes[$value];
|
139 |
+
|
140 |
+
if ($value != $oldvalue || !$return_replaced_only)
|
141 |
+
$newarray[$key] = $value;
|
142 |
+
}
|
143 |
+
return $newarray;
|
144 |
+
}
|
145 |
}
|
146 |
|
147 |
?>
|
includes/jlfunctions/io.php
CHANGED
@@ -23,6 +23,59 @@ class suio {
|
|
23 |
return rtrim($path, '/');
|
24 |
}
|
25 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
}
|
27 |
|
28 |
?>
|
23 |
return rtrim($path, '/');
|
24 |
}
|
25 |
|
26 |
+
function import_csv($path) {
|
27 |
+
if (!is_readable($path)) return false;
|
28 |
+
|
29 |
+
$result = array();
|
30 |
+
|
31 |
+
//Open the CSV file
|
32 |
+
$handle = @fopen($path, 'r');
|
33 |
+
if ($handle === false) return false;
|
34 |
+
|
35 |
+
//Get the columns
|
36 |
+
$headers = fgetcsv($handle, 99999, ',');
|
37 |
+
if ($headers === false) {
|
38 |
+
fclose($handle);
|
39 |
+
return false;
|
40 |
+
}
|
41 |
+
|
42 |
+
//Get the rows
|
43 |
+
while (($row = fgetcsv($handle, 99999, ',')) !== false) {
|
44 |
+
$new = array_combine($headers, $row);
|
45 |
+
if ($new !== false) $result[] = $new;
|
46 |
+
}
|
47 |
+
|
48 |
+
//Close the CSV file
|
49 |
+
fclose($handle);
|
50 |
+
|
51 |
+
//Return
|
52 |
+
return $result;
|
53 |
+
}
|
54 |
+
|
55 |
+
function export_csv($csv) {
|
56 |
+
header("Content-Type: text/csv");
|
57 |
+
$result = suio::print_csv($csv);
|
58 |
+
if ($result) die(); else return false;
|
59 |
+
}
|
60 |
+
|
61 |
+
function print_csv($csv) {
|
62 |
+
if (!is_array($csv) || !count($csv) || !is_array($csv[0])) return false;
|
63 |
+
|
64 |
+
$headers = array_keys($csv[0]);
|
65 |
+
array_unshift($csv, array_combine($headers, $headers));
|
66 |
+
|
67 |
+
foreach ($csv as $row) {
|
68 |
+
$csv_row = array();
|
69 |
+
foreach ($headers as $header) {
|
70 |
+
$csv_row[$header] = $row[$header];
|
71 |
+
if (sustr::has($csv_row[$header], ',')) $csv_row[$header] = '"'.$csv_row[$header].'"';
|
72 |
+
}
|
73 |
+
|
74 |
+
echo implode(',', $csv_row)."\r\n";
|
75 |
+
}
|
76 |
+
|
77 |
+
return true;
|
78 |
+
}
|
79 |
}
|
80 |
|
81 |
?>
|
modules/settings/install.php
CHANGED
@@ -92,7 +92,7 @@ class SU_Install extends SU_Module {
|
|
92 |
|
93 |
$versions = $this->plugin->download_changelog();
|
94 |
|
95 |
-
if (count($versions)) {
|
96 |
|
97 |
$radiobuttons = array();
|
98 |
$first = true;
|
92 |
|
93 |
$versions = $this->plugin->download_changelog();
|
94 |
|
95 |
+
if (is_array($versions) && count($versions)) {
|
96 |
|
97 |
$radiobuttons = array();
|
98 |
$first = true;
|
modules/settings/settings-data.php
CHANGED
@@ -75,23 +75,120 @@ class SU_SettingsData extends SU_Module {
|
|
75 |
$this->plugin->dbdata['settings'] = array();
|
76 |
unset($this->plugin->dbdata['modules']);
|
77 |
$this->load_default_settings();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
}
|
79 |
}
|
80 |
|
81 |
function import_tab() {
|
82 |
$this->print_messages();
|
83 |
-
$this->admin_subheader(__('Import SEO Ultimate Settings File', 'seo-ultimate'));
|
84 |
$hook = $this->plugin->key_to_hook($this->get_module_or_parent_key());
|
|
|
|
|
|
|
85 |
echo "\n<p>";
|
86 |
-
_e(
|
87 |
echo "</p>\n";
|
88 |
-
echo "<form enctype='multipart/form-data' method='post' action='?page=$hook&action=import#su-import'>\n";
|
89 |
echo "\t<input name='settingsfile' type='file' /> ";
|
90 |
-
$confirm = __(
|
91 |
-
echo "<input type='submit' class='button-primary' value='".__(
|
92 |
wp_nonce_field($this->get_nonce_handle('su-import'));
|
93 |
echo "</form>\n";
|
94 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
//Import from other plugins
|
96 |
$importmodules = array();
|
97 |
foreach ($this->plugin->modules as $key => $x_module) {
|
@@ -102,9 +199,9 @@ class SU_SettingsData extends SU_Module {
|
|
102 |
}
|
103 |
|
104 |
if (count($importmodules)) {
|
105 |
-
$this->admin_subheader(__(
|
106 |
echo "\n<p>";
|
107 |
-
_e(
|
108 |
echo "</p>\n";
|
109 |
echo "<table class='widefat'>\n";
|
110 |
|
@@ -123,14 +220,27 @@ class SU_SettingsData extends SU_Module {
|
|
123 |
}
|
124 |
|
125 |
function export_tab() {
|
|
|
|
|
126 |
echo "\n<p>";
|
127 |
-
_e(
|
128 |
echo "</p>\n<p>";
|
129 |
-
_e(
|
130 |
echo "</p>\n<p>";
|
131 |
$url = $this->get_nonce_url('su-export');
|
132 |
-
echo "<a href='$url' class='button-primary'>".__(
|
133 |
echo "</p>\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
}
|
135 |
|
136 |
function reset_tab() {
|
75 |
$this->plugin->dbdata['settings'] = array();
|
76 |
unset($this->plugin->dbdata['modules']);
|
77 |
$this->load_default_settings();
|
78 |
+
|
79 |
+
} elseif ($this->is_action('dj-export')) {
|
80 |
+
header('Content-Disposition: attachment; filename="Deeplink Juggernaut Content Links ('.date('Y-m-d').').csv"');
|
81 |
+
|
82 |
+
$djlinks = $this->get_setting('links', array(), 'autolinks');
|
83 |
+
$csv_headers = array(
|
84 |
+
'anchor' => 'Anchor'
|
85 |
+
, 'to_type' => 'Destination Type'
|
86 |
+
, 'to_id' => 'Destination'
|
87 |
+
, 'title' => 'Title'
|
88 |
+
, 'nofollow' => 'Nofollow'
|
89 |
+
, 'target' => 'Target'
|
90 |
+
);
|
91 |
+
if (is_array($djlinks) && count($djlinks)) {
|
92 |
+
$djlinks = suarr::key_replace($djlinks, $csv_headers, true, true);
|
93 |
+
$djlinks = suarr::value_replace($djlinks, array(
|
94 |
+
0 => 'No'
|
95 |
+
, 1 => 'Yes'
|
96 |
+
, 'url' => 'URL'
|
97 |
+
), true, false);
|
98 |
+
} else
|
99 |
+
$djlinks = array(array_fill_keys($csv_headers, ''));
|
100 |
+
|
101 |
+
suio::export_csv($djlinks);
|
102 |
+
die();
|
103 |
+
|
104 |
+
} elseif ($this->is_action('dj-import')) {
|
105 |
+
|
106 |
+
if (strlen($_FILES['settingsfile']['name'])) {
|
107 |
+
|
108 |
+
$file = $_FILES['settingsfile']['tmp_name'];
|
109 |
+
if (is_uploaded_file($file)) {
|
110 |
+
$import = suio::import_csv($file);
|
111 |
+
if ($import === false)
|
112 |
+
$this->queue_message('error', __('The uploaded file is not in the proper format. Links could not be imported.', 'seo-ultimate'));
|
113 |
+
else {
|
114 |
+
$import = suarr::key_replace($import, array(
|
115 |
+
'Anchor' => 'anchor'
|
116 |
+
, 'Destination Type' => 'to_type'
|
117 |
+
, 'Destination' => 'to_id'
|
118 |
+
, 'URL' => 'to_id'
|
119 |
+
, 'Title' => 'title'
|
120 |
+
, 'Nofollow' => 'nofollow'
|
121 |
+
, 'Target' => 'target'
|
122 |
+
), true, true);
|
123 |
+
$import = suarr::value_replace($import, array(
|
124 |
+
'No' => false
|
125 |
+
, 'Yes' => true
|
126 |
+
, 'URL' => 'url'
|
127 |
+
), true, false);
|
128 |
+
|
129 |
+
$djlinks = array();
|
130 |
+
foreach ($import as $link) {
|
131 |
+
|
132 |
+
//Validate destination type
|
133 |
+
//Only one valid option at this time ('url'), so that makes this easy...
|
134 |
+
$link['to_type'] = 'url';
|
135 |
+
|
136 |
+
//Validate nofollow
|
137 |
+
if (!is_bool($link['nofollow']))
|
138 |
+
$link['nofollow'] = false;
|
139 |
+
|
140 |
+
//Validate target
|
141 |
+
$link['target'] = ltrim($link['target'], '_');
|
142 |
+
if (!in_array($link['target'], array('self', 'blank'))) //Only _self or _blank are supported right now
|
143 |
+
$link['target'] = 'self';
|
144 |
+
|
145 |
+
//Add link!
|
146 |
+
$djlinks[] = $link;
|
147 |
+
}
|
148 |
+
|
149 |
+
$this->update_setting('links', $djlinks, 'autolinks');
|
150 |
+
|
151 |
+
$this->queue_message('success', __('Links successfully imported.', 'seo-ultimate'));
|
152 |
+
}
|
153 |
+
} else
|
154 |
+
$this->queue_message('error', __('The CSV file could not be uploaded successfully.', 'seo-ultimate'));
|
155 |
+
|
156 |
+
} else
|
157 |
+
$this->queue_message('warning', __('Links could not be imported because no CSV file was selected. Please click the “Browse” button and select a file to import.', 'seo-ultimate'));
|
158 |
+
|
159 |
}
|
160 |
}
|
161 |
|
162 |
function import_tab() {
|
163 |
$this->print_messages();
|
|
|
164 |
$hook = $this->plugin->key_to_hook($this->get_module_or_parent_key());
|
165 |
+
|
166 |
+
//SEO Ultimate
|
167 |
+
$this->admin_subheader(__('Import SEO Ultimate Settings File', 'seo-ultimate'));
|
168 |
echo "\n<p>";
|
169 |
+
_e('You can use this form to upload and import an SEO Ultimate settings file stored on your computer. (These files can be created using the Export tool.) Note that importing a file will overwrite your existing settings with those in the file.', 'seo-ultimate');
|
170 |
echo "</p>\n";
|
171 |
+
echo "<form enctype='multipart/form-data' method='post' action='?page=$hook&action=su-import#su-import'>\n";
|
172 |
echo "\t<input name='settingsfile' type='file' /> ";
|
173 |
+
$confirm = __('Are you sure you want to import this settings file? This will overwrite your current settings and cannot be undone.', 'seo-ultimate');
|
174 |
+
echo "<input type='submit' class='button-primary' value='".__('Import Settings File', 'seo-ultimate')."' onclick=\"javascript:return confirm('$confirm')\" />\n";
|
175 |
wp_nonce_field($this->get_nonce_handle('su-import'));
|
176 |
echo "</form>\n";
|
177 |
|
178 |
+
if ($this->plugin->module_exists('content-autolinks')) {
|
179 |
+
//Deeplink Juggernaut
|
180 |
+
$this->admin_subheader(__('Import Deeplink Juggernaut CSV File', 'seo-ultimate'));
|
181 |
+
echo "\n<p>";
|
182 |
+
_e('You can use this form to upload and import a Deeplink Juggernaut CSV file stored on your computer. (These files can be created using the Export tool.) Note that importing a file will overwrite your existing links with those in the file.', 'seo-ultimate');
|
183 |
+
echo "</p>\n";
|
184 |
+
echo "<form enctype='multipart/form-data' method='post' action='?page=$hook&action=dj-import#su-import'>\n";
|
185 |
+
echo "\t<input name='settingsfile' type='file' /> ";
|
186 |
+
$confirm = __('Are you sure you want to import this CSV file? This will overwrite your current Deeplink Juggernaut links and cannot be undone.', 'seo-ultimate');
|
187 |
+
echo "<input type='submit' class='button-primary' value='".__('Import CSV File', 'seo-ultimate')."' onclick=\"javascript:return confirm('$confirm')\" />\n";
|
188 |
+
wp_nonce_field($this->get_nonce_handle('dj-import'));
|
189 |
+
echo "</form>\n";
|
190 |
+
}
|
191 |
+
|
192 |
//Import from other plugins
|
193 |
$importmodules = array();
|
194 |
foreach ($this->plugin->modules as $key => $x_module) {
|
199 |
}
|
200 |
|
201 |
if (count($importmodules)) {
|
202 |
+
$this->admin_subheader(__('Import from Other Plugins', 'seo-ultimate'));
|
203 |
echo "\n<p>";
|
204 |
+
_e('You can import settings and data from these plugins. Clicking a plugin’s name will take you to the importer page, where you can customize parameters and start the import.', 'seo-ultimate');
|
205 |
echo "</p>\n";
|
206 |
echo "<table class='widefat'>\n";
|
207 |
|
220 |
}
|
221 |
|
222 |
function export_tab() {
|
223 |
+
//SEO Ultimate
|
224 |
+
$this->admin_subheader(__('Export SEO Ultimate Settings File', 'seo-ultimate'));
|
225 |
echo "\n<p>";
|
226 |
+
_e('You can use this export tool to download an SEO Ultimate settings file to your computer.', 'seo-ultimate');
|
227 |
echo "</p>\n<p>";
|
228 |
+
_e('A settings file includes the data of every checkbox and textbox of every installed module. It does NOT include site-specific data like logged 404s or post/page title/meta data (this data would be included in a standard database backup, however).', 'seo-ultimate');
|
229 |
echo "</p>\n<p>";
|
230 |
$url = $this->get_nonce_url('su-export');
|
231 |
+
echo "<a href='$url' class='button-primary'>".__('Download Settings File', 'seo-ultimate')."</a>";
|
232 |
echo "</p>\n";
|
233 |
+
|
234 |
+
if ($this->plugin->module_exists('content-autolinks')) {
|
235 |
+
//Deeplink Juggernaut
|
236 |
+
$this->admin_subheader(__('Export Deeplink Juggernaut CSV File', 'seo-ultimate'));
|
237 |
+
echo "\n<p>";
|
238 |
+
_e('You can use this export tool to download a CSV file (comma-separated values file) that contains your Deeplink Juggernaut links. Once you download this file to your computer, you can edit it using your favorite spreadsheet program. When you’re done editing, you can re-upload the file using the Import tool.', 'seo-ultimate');
|
239 |
+
echo "</p>\n<p>";
|
240 |
+
$url = $this->get_nonce_url('dj-export');
|
241 |
+
echo "<a href='$url' class='button-primary'>".__('Download CSV File', 'seo-ultimate')."</a>";
|
242 |
+
echo "</p>\n";
|
243 |
+
}
|
244 |
}
|
245 |
|
246 |
function reset_tab() {
|
plugin/su-functions.php
CHANGED
@@ -108,7 +108,7 @@ function su_esc_attr($str) {
|
|
108 |
* @since 2.1
|
109 |
*/
|
110 |
function su_esc_html($str) {
|
111 |
-
return
|
112 |
}
|
113 |
|
114 |
/**
|
@@ -120,7 +120,7 @@ function su_esc_html($str) {
|
|
120 |
* @return string The filtered string.
|
121 |
*/
|
122 |
function su_esc_editable_html($str) {
|
123 |
-
return
|
124 |
}
|
125 |
|
126 |
?>
|
108 |
* @since 2.1
|
109 |
*/
|
110 |
function su_esc_html($str) {
|
111 |
+
return esc_html($str);
|
112 |
}
|
113 |
|
114 |
/**
|
120 |
* @return string The filtered string.
|
121 |
*/
|
122 |
function su_esc_editable_html($str) {
|
123 |
+
return _wp_specialchars($str, ENT_QUOTES, false, true);
|
124 |
}
|
125 |
|
126 |
?>
|
readme.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
=== SEO Ultimate ===
|
2 |
Contributors: SEO Design Solutions
|
3 |
-
Tags: seo, SEO Ultimate, suite, google, yahoo, bing, search engines, admin, post, page, custom post types, categories, tags, terms, custom taxonomies, title, meta, robots, noindex, nofollow, canonical, 404, robots.txt, htaccess, slugs, url, anchor, more, link, excerpt, permalink, links, autolinks, code, footer, modules, uninstallable, reinstallable, downgradable
|
4 |
Requires at least: 2.8
|
5 |
Tested up to: 3.0
|
6 |
-
Stable tag: 3.
|
7 |
|
8 |
This all-in-one SEO plugin gives you control over titles, noindex/nofollow, meta tags, slugs, canonical tags, "more" links, 404 errors, and more.
|
9 |
|
@@ -11,11 +11,11 @@ This all-in-one SEO plugin gives you control over titles, noindex/nofollow, meta
|
|
11 |
|
12 |
= Recent Releases =
|
13 |
|
|
|
14 |
* Version 3.1 adds more Deeplink Juggernaut features
|
15 |
* Version 3.0 adds the Rich Snippet Creator module
|
16 |
* Version 2.9 adds custom taxonomy support to Title Tag Rewriter
|
17 |
* Version 2.8 adds custom post type support to Title Tag Rewriter
|
18 |
-
* Version 2.7 adds the Code Inserter module
|
19 |
|
20 |
= Features =
|
21 |
|
@@ -74,13 +74,14 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
|
|
74 |
* Determine which of your webpages Google most strongly associates with the keywords you specify.
|
75 |
* Use the information to determine ideal targets for incoming links or ideal sources of outgoing links.
|
76 |
|
77 |
-
* **Deeplink Juggernaut** -- UPDATED in Version 3.
|
78 |
* Automatically link phrases in your posts/pages to given URLs.
|
79 |
* Use the power of anchor text to boost your internal ranking SEO paradigm.
|
80 |
* Control the maximum number of autolinks added to each post/page.
|
81 |
* Apply the nofollow attribute on a per-link basis. (Perfect for automatic affiliate links.)
|
|
|
82 |
|
83 |
-
* **Code Inserter**
|
84 |
* Easily insert custom HTML into your site's `<head>` tag, footer, or item content.
|
85 |
* Use to add Google Analytics, Feedburner FeedFlare, Google AdSense section targeting, and other SEO/SEM-enhancing code snippets.
|
86 |
* Code remains even when switching themes.
|
@@ -197,11 +198,18 @@ Frequently asked questions, settings help, and troubleshooting tips for SEO Ulti
|
|
197 |
|
198 |
== Changelog ==
|
199 |
|
|
|
|
|
|
|
|
|
|
|
|
|
200 |
= Version 3.1 (June 22, 2010) =
|
201 |
* Feature: Deeplink Juggernaut now supports unlimited autolinks instead of just 20
|
202 |
* Feature: Deeplink Juggernaut now supports custom title attributes for autolinks
|
203 |
* Feature: Deeplink Juggernaut interface now has convenient checkboxes for deleting autolinks
|
204 |
* Feature: Deeplink Juggernaut autolinks can now open in new windows if desired
|
|
|
205 |
* Improvement: SEO Ultimate upgrade notices now use official WordPress plugin API
|
206 |
* Bugfix: SEO Ultimate no longer slows down the "Plugins" admin page excessively
|
207 |
|
1 |
=== SEO Ultimate ===
|
2 |
Contributors: SEO Design Solutions
|
3 |
+
Tags: seo, SEO Ultimate, suite, google, yahoo, bing, search engines, admin, post, page, custom post types, categories, tags, terms, custom taxonomies, title, meta, robots, noindex, nofollow, canonical, 404, robots.txt, htaccess, slugs, url, anchor, more, link, excerpt, permalink, links, autolinks, code, footer, modules, uninstallable, reinstallable, downgradable, import, export, CSV
|
4 |
Requires at least: 2.8
|
5 |
Tested up to: 3.0
|
6 |
+
Stable tag: 3.2
|
7 |
|
8 |
This all-in-one SEO plugin gives you control over titles, noindex/nofollow, meta tags, slugs, canonical tags, "more" links, 404 errors, and more.
|
9 |
|
11 |
|
12 |
= Recent Releases =
|
13 |
|
14 |
+
* Version 3.2 adds CSV import/export for Deeplink Juggernaut
|
15 |
* Version 3.1 adds more Deeplink Juggernaut features
|
16 |
* Version 3.0 adds the Rich Snippet Creator module
|
17 |
* Version 2.9 adds custom taxonomy support to Title Tag Rewriter
|
18 |
* Version 2.8 adds custom post type support to Title Tag Rewriter
|
|
|
19 |
|
20 |
= Features =
|
21 |
|
74 |
* Determine which of your webpages Google most strongly associates with the keywords you specify.
|
75 |
* Use the information to determine ideal targets for incoming links or ideal sources of outgoing links.
|
76 |
|
77 |
+
* **Deeplink Juggernaut** -- UPDATED in Version 3.2
|
78 |
* Automatically link phrases in your posts/pages to given URLs.
|
79 |
* Use the power of anchor text to boost your internal ranking SEO paradigm.
|
80 |
* Control the maximum number of autolinks added to each post/page.
|
81 |
* Apply the nofollow attribute on a per-link basis. (Perfect for automatic affiliate links.)
|
82 |
+
* Import/export your links as CSV files.
|
83 |
|
84 |
+
* **Code Inserter**
|
85 |
* Easily insert custom HTML into your site's `<head>` tag, footer, or item content.
|
86 |
* Use to add Google Analytics, Feedburner FeedFlare, Google AdSense section targeting, and other SEO/SEM-enhancing code snippets.
|
87 |
* Code remains even when switching themes.
|
198 |
|
199 |
== Changelog ==
|
200 |
|
201 |
+
= Version 3.2 (June 23, 2010) =
|
202 |
+
* Feature: Added CSV import/export for Deeplink Juggernaut
|
203 |
+
* Improvement: When installed on an old, unsupported version of WordPress, SEO Ultimate now presents a nice error message instead of crashing like most plugins do
|
204 |
+
* Bugfix: Fixed PHP error that would appear on Upgrade/Downgrade tabs upon WordPress API error
|
205 |
+
* Bugfix: Fixed SEO Ultimate settings importer
|
206 |
+
|
207 |
= Version 3.1 (June 22, 2010) =
|
208 |
* Feature: Deeplink Juggernaut now supports unlimited autolinks instead of just 20
|
209 |
* Feature: Deeplink Juggernaut now supports custom title attributes for autolinks
|
210 |
* Feature: Deeplink Juggernaut interface now has convenient checkboxes for deleting autolinks
|
211 |
* Feature: Deeplink Juggernaut autolinks can now open in new windows if desired
|
212 |
+
* Deeplink Juggernaut is now out of beta
|
213 |
* Improvement: SEO Ultimate upgrade notices now use official WordPress plugin API
|
214 |
* Bugfix: SEO Ultimate no longer slows down the "Plugins" admin page excessively
|
215 |
|
screenshot-14.png
CHANGED
Binary file
|
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, "more" links, 404 errors, and more.
|
6 |
-
Version: 3.
|
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 3.
|
16 |
* @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
|
17 |
*/
|
18 |
|
@@ -33,15 +33,24 @@ You should have received a copy of the GNU General Public License
|
|
33 |
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
34 |
*/
|
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
/********** CONSTANTS **********/
|
37 |
|
|
|
|
|
|
|
38 |
//Reading plugin info from constants is faster than trying to parse it from the header above.
|
39 |
define("SU_PLUGIN_NAME", "SEO Ultimate");
|
40 |
define("SU_PLUGIN_URI", "http://www.seodesignsolutions.com/wordpress-seo/");
|
41 |
-
define("SU_VERSION", "3.
|
42 |
define("SU_AUTHOR", "SEO Design Solutions");
|
43 |
define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
|
44 |
-
define("SU_USER_AGENT", "SeoUltimate/3.
|
45 |
|
46 |
/********** INCLUDES **********/
|
47 |
|
@@ -63,16 +72,18 @@ include 'modules/class.su-importmodule.php';
|
|
63 |
|
64 |
/********** PLUGIN FILE LOAD HANDLER **********/
|
65 |
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
global $seo_ultimate;
|
70 |
-
if (defined('ABSPATH'))
|
71 |
$seo_ultimate =& new SEO_Ultimate(__FILE__);
|
72 |
-
else {
|
73 |
-
|
74 |
-
|
75 |
-
|
|
|
|
|
|
|
|
|
76 |
}
|
77 |
|
78 |
?>
|
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, "more" links, 404 errors, and more.
|
6 |
+
Version: 3.2
|
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 3.2
|
16 |
* @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
|
17 |
*/
|
18 |
|
33 |
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
34 |
*/
|
35 |
|
36 |
+
if (!defined('ABSPATH')) {
|
37 |
+
header('Status: 403 Forbidden');
|
38 |
+
header('HTTP/1.1 403 Forbidden');
|
39 |
+
die();
|
40 |
+
}
|
41 |
+
|
42 |
/********** CONSTANTS **********/
|
43 |
|
44 |
+
//The minimum version of WordPress required
|
45 |
+
define('SU_MINIMUM_WP_VER', '2.8');
|
46 |
+
|
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", "3.2");
|
51 |
define("SU_AUTHOR", "SEO Design Solutions");
|
52 |
define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
|
53 |
+
define("SU_USER_AGENT", "SeoUltimate/3.2");
|
54 |
|
55 |
/********** INCLUDES **********/
|
56 |
|
72 |
|
73 |
/********** PLUGIN FILE LOAD HANDLER **********/
|
74 |
|
75 |
+
global $wp_version;
|
76 |
+
if (version_compare($wp_version, SU_MINIMUM_WP_VER, '>=')) {
|
77 |
+
global $seo_ultimate;
|
|
|
|
|
78 |
$seo_ultimate =& new SEO_Ultimate(__FILE__);
|
79 |
+
} else {
|
80 |
+
add_action('admin_notices', 'su_wp_incompat_notice');
|
81 |
+
}
|
82 |
+
|
83 |
+
function su_wp_incompat_notice() {
|
84 |
+
echo '<div class="error"><p>';
|
85 |
+
printf(__('SEO Ultimate requires WordPress %s or above. Please upgrade to the latest version of WordPress to enable SEO Ultimate on your blog, or deactivate SEO Ultimate to remove this notice.', 'seo-ultimate'), SU_MINIMUM_WP_VER);
|
86 |
+
echo "</p></div>\n";
|
87 |
}
|
88 |
|
89 |
?>
|
seo-ultimate.pot
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
# Translation of the WordPress plugin SEO Ultimate 3.
|
2 |
# Copyright (C) 2010 SEO Design Solutions
|
3 |
# This file is distributed under the same license as the SEO Ultimate package.
|
4 |
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
|
@@ -6,9 +6,9 @@
|
|
6 |
#, fuzzy
|
7 |
msgid ""
|
8 |
msgstr ""
|
9 |
-
"Project-Id-Version: SEO Ultimate 3.
|
10 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
|
11 |
-
"POT-Creation-Date: 2010-06-
|
12 |
"PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
@@ -972,7 +972,7 @@ msgstr ""
|
|
972 |
msgid "SEO Design Solutions Whitepapers"
|
973 |
msgstr ""
|
974 |
|
975 |
-
#. #-#-#-#-# plugin.pot (SEO Ultimate 3.
|
976 |
#. Author of the plugin/theme
|
977 |
#: modules/sds-blog/sds-blog.php:49
|
978 |
msgid "SEO Design Solutions"
|
@@ -1110,7 +1110,7 @@ msgstr ""
|
|
1110 |
msgid "Manage Settings Data"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: modules/settings/settings-data.php:21
|
1114 |
msgid "Import"
|
1115 |
msgstr ""
|
1116 |
|
@@ -1138,41 +1138,91 @@ msgid ""
|
|
1138 |
"click the “Browse” button and select a file to import."
|
1139 |
msgstr ""
|
1140 |
|
1141 |
-
#: modules/settings/settings-data.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1142 |
msgid "Import SEO Ultimate Settings File"
|
1143 |
msgstr ""
|
1144 |
|
1145 |
-
#: modules/settings/settings-data.php:
|
1146 |
msgid ""
|
1147 |
"You can use this form to upload and import an SEO Ultimate settings file "
|
1148 |
-
"stored on your computer. (
|
1149 |
-
"
|
|
|
1150 |
msgstr ""
|
1151 |
|
1152 |
-
#: modules/settings/settings-data.php:
|
1153 |
msgid ""
|
1154 |
"Are you sure you want to import this settings file? This will overwrite your "
|
1155 |
"current settings and cannot be undone."
|
1156 |
msgstr ""
|
1157 |
|
1158 |
-
#: modules/settings/settings-data.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1159 |
msgid "Import from Other Plugins"
|
1160 |
msgstr ""
|
1161 |
|
1162 |
-
#: modules/settings/settings-data.php:
|
1163 |
msgid ""
|
1164 |
"You can import settings and data from these plugins. Clicking a plugin’"
|
1165 |
"s name will take you to the importer page, where you can customize "
|
1166 |
"parameters and start the import."
|
1167 |
msgstr ""
|
1168 |
|
1169 |
-
#: modules/settings/settings-data.php:
|
|
|
|
|
|
|
|
|
1170 |
msgid ""
|
1171 |
-
"You can use
|
1172 |
"your computer."
|
1173 |
msgstr ""
|
1174 |
|
1175 |
-
#: modules/settings/settings-data.php:
|
1176 |
msgid ""
|
1177 |
"A settings file includes the data of every checkbox and textbox of every "
|
1178 |
"installed module. It does NOT include site-specific data like logged 404s or "
|
@@ -1180,26 +1230,43 @@ msgid ""
|
|
1180 |
"database backup, however)."
|
1181 |
msgstr ""
|
1182 |
|
1183 |
-
#: modules/settings/settings-data.php:
|
1184 |
msgid "Download Settings File"
|
1185 |
msgstr ""
|
1186 |
|
1187 |
-
#: modules/settings/settings-data.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1188 |
msgid "All settings have been erased and defaults have been restored."
|
1189 |
msgstr ""
|
1190 |
|
1191 |
-
#: modules/settings/settings-data.php:
|
1192 |
msgid ""
|
1193 |
"You can erase all your SEO Ultimate settings and restore them to “"
|
1194 |
"factory defaults” by clicking the button below."
|
1195 |
msgstr ""
|
1196 |
|
1197 |
-
#: modules/settings/settings-data.php:
|
1198 |
msgid ""
|
1199 |
"Are you sure you want to erase all module settings? This cannot be undone."
|
1200 |
msgstr ""
|
1201 |
|
1202 |
-
#: modules/settings/settings-data.php:
|
1203 |
msgid "Restore Default Settings"
|
1204 |
msgstr ""
|
1205 |
|
@@ -1211,7 +1278,7 @@ msgstr ""
|
|
1211 |
msgid "SEO Ultimate Plugin Settings"
|
1212 |
msgstr ""
|
1213 |
|
1214 |
-
#. #-#-#-#-# plugin.pot (SEO Ultimate 3.
|
1215 |
#. Plugin Name of the plugin/theme
|
1216 |
#: modules/settings/settings.php:14 plugin/class.seo-ultimate.php:724
|
1217 |
msgid "SEO Ultimate"
|
@@ -1600,6 +1667,14 @@ msgstr ""
|
|
1600 |
msgid "Plugin upgraded successfully."
|
1601 |
msgstr ""
|
1602 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1603 |
#. Plugin URI of the plugin/theme
|
1604 |
msgid "http://www.seodesignsolutions.com/wordpress-seo/"
|
1605 |
msgstr ""
|
1 |
+
# Translation of the WordPress plugin SEO Ultimate 3.2 by SEO Design Solutions.
|
2 |
# Copyright (C) 2010 SEO Design Solutions
|
3 |
# This file is distributed under the same license as the SEO Ultimate package.
|
4 |
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
|
6 |
#, fuzzy
|
7 |
msgid ""
|
8 |
msgstr ""
|
9 |
+
"Project-Id-Version: SEO Ultimate 3.2\n"
|
10 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
|
11 |
+
"POT-Creation-Date: 2010-06-23 15:10+0000\n"
|
12 |
"PO-Revision-Date: 2010-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
972 |
msgid "SEO Design Solutions Whitepapers"
|
973 |
msgstr ""
|
974 |
|
975 |
+
#. #-#-#-#-# plugin.pot (SEO Ultimate 3.2) #-#-#-#-#
|
976 |
#. Author of the plugin/theme
|
977 |
#: modules/sds-blog/sds-blog.php:49
|
978 |
msgid "SEO Design Solutions"
|
1110 |
msgid "Manage Settings Data"
|
1111 |
msgstr ""
|
1112 |
|
1113 |
+
#: modules/settings/settings-data.php:21
|
1114 |
msgid "Import"
|
1115 |
msgstr ""
|
1116 |
|
1138 |
"click the “Browse” button and select a file to import."
|
1139 |
msgstr ""
|
1140 |
|
1141 |
+
#: modules/settings/settings-data.php:112
|
1142 |
+
msgid ""
|
1143 |
+
"The uploaded file is not in the proper format. Links could not be imported."
|
1144 |
+
msgstr ""
|
1145 |
+
|
1146 |
+
#: modules/settings/settings-data.php:151
|
1147 |
+
msgid "Links successfully imported."
|
1148 |
+
msgstr ""
|
1149 |
+
|
1150 |
+
#: modules/settings/settings-data.php:154
|
1151 |
+
msgid "The CSV file could not be uploaded successfully."
|
1152 |
+
msgstr ""
|
1153 |
+
|
1154 |
+
#: modules/settings/settings-data.php:157
|
1155 |
+
msgid ""
|
1156 |
+
"Links could not be imported because no CSV file was selected. Please click "
|
1157 |
+
"the “Browse” button and select a file to import."
|
1158 |
+
msgstr ""
|
1159 |
+
|
1160 |
+
#: modules/settings/settings-data.php:167
|
1161 |
msgid "Import SEO Ultimate Settings File"
|
1162 |
msgstr ""
|
1163 |
|
1164 |
+
#: modules/settings/settings-data.php:169
|
1165 |
msgid ""
|
1166 |
"You can use this form to upload and import an SEO Ultimate settings file "
|
1167 |
+
"stored on your computer. (These files can be created using the Export tool.) "
|
1168 |
+
"Note that importing a file will overwrite your existing settings with those "
|
1169 |
+
"in the file."
|
1170 |
msgstr ""
|
1171 |
|
1172 |
+
#: modules/settings/settings-data.php:173
|
1173 |
msgid ""
|
1174 |
"Are you sure you want to import this settings file? This will overwrite your "
|
1175 |
"current settings and cannot be undone."
|
1176 |
msgstr ""
|
1177 |
|
1178 |
+
#: modules/settings/settings-data.php:174
|
1179 |
+
msgid "Import Settings File"
|
1180 |
+
msgstr ""
|
1181 |
+
|
1182 |
+
#: modules/settings/settings-data.php:180
|
1183 |
+
msgid "Import Deeplink Juggernaut CSV File"
|
1184 |
+
msgstr ""
|
1185 |
+
|
1186 |
+
#: modules/settings/settings-data.php:182
|
1187 |
+
msgid ""
|
1188 |
+
"You can use this form to upload and import a Deeplink Juggernaut CSV file "
|
1189 |
+
"stored on your computer. (These files can be created using the Export tool.) "
|
1190 |
+
"Note that importing a file will overwrite your existing links with those in "
|
1191 |
+
"the file."
|
1192 |
+
msgstr ""
|
1193 |
+
|
1194 |
+
#: modules/settings/settings-data.php:186
|
1195 |
+
msgid ""
|
1196 |
+
"Are you sure you want to import this CSV file? This will overwrite your "
|
1197 |
+
"current Deeplink Juggernaut links and cannot be undone."
|
1198 |
+
msgstr ""
|
1199 |
+
|
1200 |
+
#: modules/settings/settings-data.php:187
|
1201 |
+
msgid "Import CSV File"
|
1202 |
+
msgstr ""
|
1203 |
+
|
1204 |
+
#: modules/settings/settings-data.php:202
|
1205 |
msgid "Import from Other Plugins"
|
1206 |
msgstr ""
|
1207 |
|
1208 |
+
#: modules/settings/settings-data.php:204
|
1209 |
msgid ""
|
1210 |
"You can import settings and data from these plugins. Clicking a plugin’"
|
1211 |
"s name will take you to the importer page, where you can customize "
|
1212 |
"parameters and start the import."
|
1213 |
msgstr ""
|
1214 |
|
1215 |
+
#: modules/settings/settings-data.php:224
|
1216 |
+
msgid "Export SEO Ultimate Settings File"
|
1217 |
+
msgstr ""
|
1218 |
+
|
1219 |
+
#: modules/settings/settings-data.php:226
|
1220 |
msgid ""
|
1221 |
+
"You can use this export tool to download an SEO Ultimate settings file to "
|
1222 |
"your computer."
|
1223 |
msgstr ""
|
1224 |
|
1225 |
+
#: modules/settings/settings-data.php:228
|
1226 |
msgid ""
|
1227 |
"A settings file includes the data of every checkbox and textbox of every "
|
1228 |
"installed module. It does NOT include site-specific data like logged 404s or "
|
1230 |
"database backup, however)."
|
1231 |
msgstr ""
|
1232 |
|
1233 |
+
#: modules/settings/settings-data.php:231
|
1234 |
msgid "Download Settings File"
|
1235 |
msgstr ""
|
1236 |
|
1237 |
+
#: modules/settings/settings-data.php:236
|
1238 |
+
msgid "Export Deeplink Juggernaut CSV File"
|
1239 |
+
msgstr ""
|
1240 |
+
|
1241 |
+
#: modules/settings/settings-data.php:238
|
1242 |
+
msgid ""
|
1243 |
+
"You can use this export tool to download a CSV file (comma-separated values "
|
1244 |
+
"file) that contains your Deeplink Juggernaut links. Once you download this "
|
1245 |
+
"file to your computer, you can edit it using your favorite spreadsheet "
|
1246 |
+
"program. When you’re done editing, you can re-upload the file using "
|
1247 |
+
"the Import tool."
|
1248 |
+
msgstr ""
|
1249 |
+
|
1250 |
+
#: modules/settings/settings-data.php:241
|
1251 |
+
msgid "Download CSV File"
|
1252 |
+
msgstr ""
|
1253 |
+
|
1254 |
+
#: modules/settings/settings-data.php:248
|
1255 |
msgid "All settings have been erased and defaults have been restored."
|
1256 |
msgstr ""
|
1257 |
|
1258 |
+
#: modules/settings/settings-data.php:250
|
1259 |
msgid ""
|
1260 |
"You can erase all your SEO Ultimate settings and restore them to “"
|
1261 |
"factory defaults” by clicking the button below."
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: modules/settings/settings-data.php:253
|
1265 |
msgid ""
|
1266 |
"Are you sure you want to erase all module settings? This cannot be undone."
|
1267 |
msgstr ""
|
1268 |
|
1269 |
+
#: modules/settings/settings-data.php:254
|
1270 |
msgid "Restore Default Settings"
|
1271 |
msgstr ""
|
1272 |
|
1278 |
msgid "SEO Ultimate Plugin Settings"
|
1279 |
msgstr ""
|
1280 |
|
1281 |
+
#. #-#-#-#-# plugin.pot (SEO Ultimate 3.2) #-#-#-#-#
|
1282 |
#. Plugin Name of the plugin/theme
|
1283 |
#: modules/settings/settings.php:14 plugin/class.seo-ultimate.php:724
|
1284 |
msgid "SEO Ultimate"
|
1667 |
msgid "Plugin upgraded successfully."
|
1668 |
msgstr ""
|
1669 |
|
1670 |
+
#: seo-ultimate.php:85
|
1671 |
+
#, php-format
|
1672 |
+
msgid ""
|
1673 |
+
"SEO Ultimate requires WordPress %s or above. Please upgrade to the latest "
|
1674 |
+
"version of WordPress to enable SEO Ultimate on your blog, or deactivate SEO "
|
1675 |
+
"Ultimate to remove this notice."
|
1676 |
+
msgstr ""
|
1677 |
+
|
1678 |
#. Plugin URI of the plugin/theme
|
1679 |
msgid "http://www.seodesignsolutions.com/wordpress-seo/"
|
1680 |
msgstr ""
|