Version Description
Download this release
Release Info
Developer | SEO Design Solutions |
Plugin | SEO Ultimate |
Version | 0.4 |
Comparing to | |
See all releases |
Code changes from version 0.3 to 0.4
- class.su-hitset.php +103 -0
- class.su-module.php +1 -92
- functions.php +13 -0
- modules/404s.php +131 -0
- modules/settings.php +2 -2
- readme.txt +9 -4
- seo-ultimate.php +6 -5
- seo-ultimate.pot +59 -19
class.su-hitset.php
ADDED
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class SU_HitSet {
|
4 |
+
|
5 |
+
var $result;
|
6 |
+
var $where;
|
7 |
+
var $module_key;
|
8 |
+
|
9 |
+
function SU_HitSet($mk, $where = false) {
|
10 |
+
$this->module_key = $mk;
|
11 |
+
if ($where) $where = " WHERE $where";
|
12 |
+
$this->where = $where;
|
13 |
+
$this->query_db();
|
14 |
+
}
|
15 |
+
|
16 |
+
function query_db() {
|
17 |
+
global $wpdb;
|
18 |
+
$table = SEO_Ultimate::get_table_name('hits');
|
19 |
+
$this->result = $wpdb->get_results("SELECT * FROM {$table}{$this->where} ORDER BY id DESC", ARRAY_A);
|
20 |
+
}
|
21 |
+
|
22 |
+
function have_hits() {
|
23 |
+
return (is_array($this->result) && count($this->result) > 0);
|
24 |
+
}
|
25 |
+
|
26 |
+
function admin_table($actions_callback = false, $highlight_new = true) {
|
27 |
+
|
28 |
+
if (!$this->result || !$this->where) return;
|
29 |
+
|
30 |
+
//Initialize variables
|
31 |
+
global $wpdb;
|
32 |
+
|
33 |
+
$table = SEO_Ultimate::get_table_name('hits');
|
34 |
+
|
35 |
+
$allfields = array(
|
36 |
+
'time' => __("Date", 'seo-ultimate')
|
37 |
+
, 'ip_address' => __("IP Address", 'seo-ultimate')
|
38 |
+
, 'user_agent' => __("Browser", 'seo-ultimate')
|
39 |
+
, 'url' => __("URL Requested", 'seo-ultimate')
|
40 |
+
, 'redirect_url' => __("Redirected To", 'seo-ultimate')
|
41 |
+
, 'status_code' => __("Status Code", 'seo-ultimate')
|
42 |
+
);
|
43 |
+
|
44 |
+
$fields = array();
|
45 |
+
|
46 |
+
foreach ($allfields as $col => $title) {
|
47 |
+
if (strpos($this->where, " $col=") === false) $fields[$col] = $title;
|
48 |
+
}
|
49 |
+
|
50 |
+
$fields = apply_filters("su_{$this->module_key}_hits_table_columns", $fields);
|
51 |
+
|
52 |
+
echo "<table class='widefat' cellspacing='0'>\n\t<thead><tr>\n";
|
53 |
+
|
54 |
+
foreach ($fields as $title) {
|
55 |
+
$class = str_replace(' ', '-', strtolower($title));
|
56 |
+
echo "\t\t<th scope='col' class='hit-$class'>$title</th>\n";
|
57 |
+
}
|
58 |
+
|
59 |
+
echo "\t</tr></thead>\n\t<tbody>\n";
|
60 |
+
|
61 |
+
foreach ($this->result as $row) {
|
62 |
+
|
63 |
+
if ($highlight_new && $row['is_new']) $class = ' class="new-hit"'; else $class='';
|
64 |
+
echo "\t\t<tr$class>\n";
|
65 |
+
|
66 |
+
foreach ($fields as $col => $title) {
|
67 |
+
$cell = htmlspecialchars($row[$col]);
|
68 |
+
|
69 |
+
switch ($col) {
|
70 |
+
case 'time':
|
71 |
+
$date = date_i18n(get_option('date_format'), $cell);
|
72 |
+
$time = date_i18n(get_option('time_format'), $cell);
|
73 |
+
$cell = sprintf(__('%1$s<br />%2$s', 'seo-ultimate'), $date, $time);
|
74 |
+
break;
|
75 |
+
case 'user_agent':
|
76 |
+
$binfo = get_browser($cell, true);
|
77 |
+
$ua = attribute_escape($cell);
|
78 |
+
$cell = '<abbr title="'.$ua.'">'.$binfo['parent'].'</abbr>';
|
79 |
+
break;
|
80 |
+
case 'url':
|
81 |
+
if (is_array($actions_callback)) {
|
82 |
+
$actions = call_user_func($actions_callback, $row);
|
83 |
+
$actions = apply_filters("su_{$this->module_key}_hits_table_actions", $actions, $row);
|
84 |
+
$cell = SU_Module::hover_row($cell, $actions);
|
85 |
+
}
|
86 |
+
break;
|
87 |
+
}
|
88 |
+
|
89 |
+
$cell = apply_filters("su_{$this->module_key}_hits_table_{$col}_cell", $cell, $row);
|
90 |
+
|
91 |
+
$class = str_replace(' ', '-', strtolower($title));
|
92 |
+
echo "\t\t\t<td class='hit-$class'>$cell</td>\n";
|
93 |
+
}
|
94 |
+
echo "\t\t</tr>\n";
|
95 |
+
|
96 |
+
$wpdb->update($table, array('is_new' => 0), array('id' => $row['id']));
|
97 |
+
}
|
98 |
+
|
99 |
+
echo "\t</tbody>\n</table>\n";
|
100 |
+
}
|
101 |
+
|
102 |
+
}
|
103 |
+
?>
|
class.su-module.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* The pseudo-abstract class upon which all modules are based.
|
4 |
*
|
5 |
* @abstract
|
6 |
-
* @version 1.2
|
7 |
* @since 0.1
|
8 |
*/
|
9 |
class SU_Module {
|
@@ -896,97 +896,6 @@ class SU_Module {
|
|
896 |
}
|
897 |
|
898 |
|
899 |
-
/********** HITS LOG FUNCTIONS **********/
|
900 |
-
|
901 |
-
/**
|
902 |
-
* Lists logged hits in an administration table.
|
903 |
-
*
|
904 |
-
* @since 0.1
|
905 |
-
*
|
906 |
-
* @param string|false $where The WHERE portion of the SQL query to execute.
|
907 |
-
* @param string|false $actions_callback The name of the module-child function from which to obtain a return value of URL-cell action link HTML.
|
908 |
-
* @param bool $highlight_new Whether or not to highlight new rows. Optional.
|
909 |
-
*/
|
910 |
-
function hits_table($where = false, $actions_callback = false, $highlight_new = true) {
|
911 |
-
global $wpdb;
|
912 |
-
$mk = $this->get_module_key();
|
913 |
-
|
914 |
-
$table = SEO_Ultimate::get_table_name('hits');
|
915 |
-
if ($where) $where = " WHERE $where";
|
916 |
-
$result = $wpdb->get_results("SELECT * FROM $table$where ORDER BY id DESC", ARRAY_A);
|
917 |
-
|
918 |
-
if (!$result) return false;
|
919 |
-
|
920 |
-
$allfields = array(
|
921 |
-
'time' => __("Date", 'seo-ultimate')
|
922 |
-
, 'ip_address' => __("IP Address", 'seo-ultimate')
|
923 |
-
, 'user_agent' => __("Browser", 'seo-ultimate')
|
924 |
-
, 'url' => __("URL Requested", 'seo-ultimate')
|
925 |
-
, 'redirect_url' => __("Redirected To", 'seo-ultimate')
|
926 |
-
, 'status_code' => __("Status Code", 'seo-ultimate')
|
927 |
-
);
|
928 |
-
|
929 |
-
$fields = array();
|
930 |
-
|
931 |
-
foreach ($allfields as $col => $title) {
|
932 |
-
if (strpos($where, " $col=") === false) $fields[$col] = $title;
|
933 |
-
}
|
934 |
-
|
935 |
-
$fields = apply_filters("su_{$mk}_hits_table_columns", $fields);
|
936 |
-
|
937 |
-
echo "<table class='widefat' cellspacing='0'>\n\t<thead><tr>\n";
|
938 |
-
|
939 |
-
foreach ($fields as $title) {
|
940 |
-
$class = str_replace(' ', '-', strtolower($title));
|
941 |
-
echo "\t\t<th scope='col' class='hit-$class'>$title</th>\n";
|
942 |
-
}
|
943 |
-
|
944 |
-
echo "\t</tr></thead>\n\t<tbody>\n";
|
945 |
-
|
946 |
-
foreach ($result as $row) {
|
947 |
-
|
948 |
-
if ($highlight_new && $row['is_new']) $class = ' class="new-hit"'; else $class='';
|
949 |
-
echo "\t\t<tr$class>\n";
|
950 |
-
|
951 |
-
foreach ($fields as $col => $title) {
|
952 |
-
$cell = htmlspecialchars($row[$col]);
|
953 |
-
|
954 |
-
switch ($col) {
|
955 |
-
case 'time':
|
956 |
-
$date = date_i18n(get_option('date_format'), $cell);
|
957 |
-
$time = date_i18n(get_option('time_format'), $cell);
|
958 |
-
$cell = sprintf(__('%1$s<br />%2$s', 'seo-ultimate'), $date, $time);
|
959 |
-
break;
|
960 |
-
case 'user_agent':
|
961 |
-
$binfo = get_browser($cell, true);
|
962 |
-
$ua = attribute_escape($cell);
|
963 |
-
$cell = '<abbr title="'.$ua.'">'.$binfo['parent'].'</abbr>';
|
964 |
-
break;
|
965 |
-
case 'url':
|
966 |
-
if ($actions_callback) {
|
967 |
-
$actions = call_user_func(array($this, $actions_callback), $row);
|
968 |
-
$actions = apply_filters("su_{$mk}_hits_table_actions", $actions, $row);
|
969 |
-
$cell = $this->hover_row($cell, $actions);
|
970 |
-
}
|
971 |
-
break;
|
972 |
-
}
|
973 |
-
|
974 |
-
$cell = apply_filters("su_{$mk}_hits_table_{$col}_cell", $cell, $row);
|
975 |
-
|
976 |
-
$class = str_replace(' ', '-', strtolower($title));
|
977 |
-
echo "\t\t\t<td class='hit-$class'>$cell</td>\n";
|
978 |
-
}
|
979 |
-
echo "\t\t</tr>\n";
|
980 |
-
|
981 |
-
$wpdb->update($table, array('is_new' => 0), array('id' => $row['id']));
|
982 |
-
}
|
983 |
-
|
984 |
-
echo "\t</tbody>\n</table>\n";
|
985 |
-
|
986 |
-
return true;
|
987 |
-
}
|
988 |
-
|
989 |
-
|
990 |
/********** CRON FUNCTION **********/
|
991 |
|
992 |
/**
|
3 |
* The pseudo-abstract class upon which all modules are based.
|
4 |
*
|
5 |
* @abstract
|
6 |
+
* @version 1.2.1
|
7 |
* @since 0.1
|
8 |
*/
|
9 |
class SU_Module {
|
896 |
}
|
897 |
|
898 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
899 |
/********** CRON FUNCTION **********/
|
900 |
|
901 |
/**
|
functions.php
CHANGED
@@ -47,6 +47,19 @@ function su_debug_log($file, $class, $function, $line, $message) {
|
|
47 |
}
|
48 |
}
|
49 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
|
51 |
/********** CLASS FUNCTION ALIASES **********/
|
52 |
|
47 |
}
|
48 |
}
|
49 |
|
50 |
+
/**
|
51 |
+
* Returns whether or not a given string starts with a given substring.
|
52 |
+
*
|
53 |
+
* @since 0.4
|
54 |
+
*
|
55 |
+
* @param string $str The "haystack" string.
|
56 |
+
* @param string $sub The "needle" string.
|
57 |
+
* @return bool Whether or not $str starts with $sub.
|
58 |
+
*/
|
59 |
+
function su_str_startswith( $str, $sub ) {
|
60 |
+
return ( substr( $str, 0, strlen( $sub ) ) === $sub );
|
61 |
+
}
|
62 |
+
|
63 |
|
64 |
/********** CLASS FUNCTION ALIASES **********/
|
65 |
|
modules/404s.php
ADDED
@@ -0,0 +1,131 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* 404 Monitor Module
|
4 |
+
*
|
5 |
+
* @version 1.0
|
6 |
+
* @since 0.4
|
7 |
+
*/
|
8 |
+
|
9 |
+
if (class_exists('SU_Module')) {
|
10 |
+
|
11 |
+
class SU_404s extends SU_Module {
|
12 |
+
|
13 |
+
var $hitset;
|
14 |
+
|
15 |
+
function init() {
|
16 |
+
$this->hitset = new SU_HitSet($this->get_module_key(), "status_code=404 AND redirect_url=''");
|
17 |
+
}
|
18 |
+
|
19 |
+
function get_menu_title() { return __('404 Monitor', 'seo-ultimate'); }
|
20 |
+
/*function get_menu_count() {
|
21 |
+
global $wpdb;
|
22 |
+
$table = SEO_Ultimate::get_table_name('hits');
|
23 |
+
return $wpdb->query("SELECT id FROM $table WHERE status_code=404 AND is_new=1");
|
24 |
+
}
|
25 |
+
function get_menu_count_label() { return __('New 404 Errors', 'seo-ultimate'); }*/
|
26 |
+
|
27 |
+
function admin_page_contents() {
|
28 |
+
|
29 |
+
global $wpdb;
|
30 |
+
$table = SEO_Ultimate::get_table_name('hits');
|
31 |
+
|
32 |
+
if ($this->is_action('delete')) {
|
33 |
+
|
34 |
+
if ($wpdb->query($wpdb->prepare("DELETE FROM $table WHERE id = %d LIMIT 1", $_GET['object'])))
|
35 |
+
$this->queue_message('success', __('The log entry was successfully deleted.', 'seo-ultimate'));
|
36 |
+
else
|
37 |
+
$this->queue_message('error', __('This log entry has already been deleted.', 'seo-ultimate'));
|
38 |
+
|
39 |
+
$this->hitset->query_db();
|
40 |
+
|
41 |
+
} elseif ($this->is_action('clear')) {
|
42 |
+
|
43 |
+
if ($wpdb->query("DELETE FROM $table WHERE status_code=404")) {
|
44 |
+
$this->queue_message('success', __('The log was successfully cleared.', 'seo-ultimate'));
|
45 |
+
$this->hitset->query_db();
|
46 |
+
}
|
47 |
+
}
|
48 |
+
|
49 |
+
if (!$this->hitset->have_hits())
|
50 |
+
$this->queue_message('success', __("No 404 errors in the log.", 'seo-ultimate'));
|
51 |
+
|
52 |
+
$this->print_messages();
|
53 |
+
|
54 |
+
if ($this->hitset->have_hits()) {
|
55 |
+
|
56 |
+
$this->hitset->admin_table(array($this, 'hits_table_action_links'));
|
57 |
+
|
58 |
+
$clearurl = $this->get_nonce_url('clear');
|
59 |
+
$confirm = __("Are you sure you want to delete all 404 log entries?", 'seo-ultimate');
|
60 |
+
echo "<a href=\"$clearurl\" class=\"button-secondary\" onclick=\"javascript:return confirm('$confirm')\">";
|
61 |
+
_e("Clear Log", 'seo-ultimate');
|
62 |
+
echo "</a>";
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
function hits_table_action_links($row) {
|
67 |
+
$url = $row['url'];
|
68 |
+
|
69 |
+
$deleteurl = $this->get_nonce_url('delete', $row['id']);
|
70 |
+
$url_encoded = urlencode($url);
|
71 |
+
|
72 |
+
$anchors = array(
|
73 |
+
__("Open", 'seo-ultimate')
|
74 |
+
, __("Google Cache", 'seo-ultimate')
|
75 |
+
, __("Delete Log Entry", 'seo-ultimate')
|
76 |
+
);
|
77 |
+
|
78 |
+
return <<<STR
|
79 |
+
|
80 |
+
<span class="open"><a href="$url" target="_blank">{$anchors[0]}</a> | </span>
|
81 |
+
<span class="cache"><a href="http://www.google.com/search?q=cache%3A$url_encoded" target="_blank">{$anchors[1]}</a> | </span>
|
82 |
+
<span class="delete"><a href="$deleteurl">{$anchors[2]}</a></span>
|
83 |
+
|
84 |
+
STR;
|
85 |
+
}
|
86 |
+
|
87 |
+
function admin_help() {
|
88 |
+
|
89 |
+
if ($this->hitset->have_hits()) {
|
90 |
+
|
91 |
+
return __(<<<STR
|
92 |
+
<p>The 404 Monitor keeps track of non-existant URLs that generated 404 errors. 404 errors are when a search engine or visitor comes to a URL on your site but nothing exists at that URL.
|
93 |
+
The 404 Monitor helps you spot 404 errors; then you can take steps to correct them (e.g. finding the broken links responsible or creating redirects).</p>
|
94 |
+
<p>Hover over a table row to access these options:</p>
|
95 |
+
<ul>
|
96 |
+
<li>The “View” link will open the URL in a new window. This is useful for testing whether or not a redirect is working.</li>
|
97 |
+
<li>The “Google Cache” link will open Google’s archived version of the URL in a new window. This is useful for determining what content, if any, used to be located at that URL.</li>
|
98 |
+
<li>Once you've taken care of a 404 error, you can click the “Delete Log Entry” link to remove it from the list. The URL will reappear on the list if it triggers a 404 error in the future.</li>
|
99 |
+
</ul>
|
100 |
+
<p>If there are any newly-logged URLs that you haven’t seen yet, these new URLs will be highlighted green in the table.</p>
|
101 |
+
<p>Notes:</p>
|
102 |
+
<ul>
|
103 |
+
<li>In order for the 404 Monitor to track 404 errors, you must have “Pretty Permalinks” enabled in your <a href="options-permalink.php">permalink options</a>.</li>
|
104 |
+
<li>Some parts of your website may not be under WordPress’s control; the 404 Monitor can’t track 404 errors on non-WordPress website areas.</li>
|
105 |
+
<li>The 404 Monitor doesn’t record 404 errors generated by logged-in users.</li>
|
106 |
+
</ul>
|
107 |
+
STR
|
108 |
+
, 'seo-ultimate');
|
109 |
+
|
110 |
+
/*<p>A numeric bubble will appear next to the “404 Monitor” item on the menu if there are any newly-logged URLs that you haven’t seen yet.
|
111 |
+
These new URLs will also be highlighted green in the table.</p>*/
|
112 |
+
|
113 |
+
} else {
|
114 |
+
|
115 |
+
return __(<<<STR
|
116 |
+
<p>Currently, the 404 Monitor doesn’t have any 404 errors in its log. This is good, and means there’s no action required on your part.
|
117 |
+
If the 404 Monitor logs any 404 errors in the future, you’ll see them on this page.</p>
|
118 |
+
<p>Notes:</p>
|
119 |
+
<ul>
|
120 |
+
<li>In order for the 404 Monitor to track 404 errors, you must have “Pretty Permalinks” enabled in your <a href="options-permalink.php">permalink options</a>.</li>
|
121 |
+
<li>Some parts of your website may not be under WordPress’s control; the 404 Monitor can’t track 404 errors on non-WordPress website areas.</li>
|
122 |
+
<li>The 404 Monitor doesn’t record 404 errors generated by logged-in users.</li>
|
123 |
+
</ul>
|
124 |
+
STR
|
125 |
+
, 'seo-ultimate');
|
126 |
+
}
|
127 |
+
}
|
128 |
+
}
|
129 |
+
|
130 |
+
}
|
131 |
+
?>
|
modules/settings.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Settings Module
|
4 |
*
|
5 |
-
* @version 1.0
|
6 |
* @since 0.2
|
7 |
*/
|
8 |
|
@@ -127,7 +127,7 @@ class SU_Settings extends SU_Module {
|
|
127 |
|
128 |
function footer_link() {
|
129 |
if (!$this->wp_meta_called)
|
130 |
-
echo "\n<p
|
131 |
}
|
132 |
|
133 |
function admin_help() {
|
2 |
/**
|
3 |
* Settings Module
|
4 |
*
|
5 |
+
* @version 1.0.1
|
6 |
* @since 0.2
|
7 |
*/
|
8 |
|
127 |
|
128 |
function footer_link() {
|
129 |
if (!$this->wp_meta_called)
|
130 |
+
echo "\n<p>Search engine optimization by <a href='http://www.seodesignsolutions.com/'>SEO Design Solutions</a></a></p>\n";
|
131 |
}
|
132 |
|
133 |
function admin_help() {
|
readme.txt
CHANGED
@@ -1,11 +1,11 @@
|
|
1 |
=== SEO Ultimate ===
|
2 |
Contributors: SEO Design Solutions
|
3 |
-
Tags: seo, title, meta, noindex, canonical, google, yahoo, bing, search engines, admin, post, page
|
4 |
Requires at least: 2.8
|
5 |
Tested up to: 2.8
|
6 |
-
Stable tag: 0.
|
7 |
|
8 |
-
This all-in-one SEO plugin can
|
9 |
|
10 |
== Description ==
|
11 |
|
@@ -19,6 +19,8 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
|
|
19 |
|
20 |
* **Canonicalizer** - Inserts `<link rel="canonical" />` tags for your homepage and each of your posts, Pages, categories, tags, date archives, and author archives.
|
21 |
|
|
|
|
|
22 |
SEO Ultimate was developed with WordPress plugin "best practices" in mind:
|
23 |
|
24 |
* Integration with the contextual help system of WordPress 2.7+
|
@@ -27,7 +29,7 @@ SEO Ultimate was developed with WordPress plugin "best practices" in mind:
|
|
27 |
* An uninstall routine
|
28 |
* Integration with the new WordPress 2.7+ menu
|
29 |
|
30 |
-
**NOTE:** This plugin is in beta, which means it's very feature-incomplete. We have many more features that we're working on finetuning before release, including
|
31 |
|
32 |
If you install the plugin now, you can have these new features delivered to you on a regular basis via WordPress's automatic plugin upgrader.
|
33 |
|
@@ -80,6 +82,9 @@ Because of the tremendous effort put into this plugin, we ask that you please le
|
|
80 |
|
81 |
== Release History ==
|
82 |
|
|
|
|
|
|
|
83 |
= Version 0.3 (June 11, 2009) =
|
84 |
* Added the Canonicalizer module
|
85 |
* Added alerts of possible plugin conflicts
|
1 |
=== SEO Ultimate ===
|
2 |
Contributors: SEO Design Solutions
|
3 |
+
Tags: seo, title, meta, noindex, canonical, 404, google, yahoo, bing, search engines, admin, post, page
|
4 |
Requires at least: 2.8
|
5 |
Tested up to: 2.8
|
6 |
+
Stable tag: 0.4
|
7 |
|
8 |
+
This all-in-one SEO plugin can handle titles, noindex, meta data, canonical tags, and 404 error tracking (with many more features coming soon).
|
9 |
|
10 |
== Description ==
|
11 |
|
19 |
|
20 |
* **Canonicalizer** - Inserts `<link rel="canonical" />` tags for your homepage and each of your posts, Pages, categories, tags, date archives, and author archives.
|
21 |
|
22 |
+
* **404 Monitor** - Logs 404 errors generated on your blog.
|
23 |
+
|
24 |
SEO Ultimate was developed with WordPress plugin "best practices" in mind:
|
25 |
|
26 |
* Integration with the contextual help system of WordPress 2.7+
|
29 |
* An uninstall routine
|
30 |
* Integration with the new WordPress 2.7+ menu
|
31 |
|
32 |
+
**NOTE:** This plugin is in beta, which means it's very feature-incomplete. We have many more features that we're working on finetuning before release, including PageRank sculpting, robots.txt editing, 301 logging, and much more.
|
33 |
|
34 |
If you install the plugin now, you can have these new features delivered to you on a regular basis via WordPress's automatic plugin upgrader.
|
35 |
|
82 |
|
83 |
== Release History ==
|
84 |
|
85 |
+
= Version 0.4 (June 18, 2009) =
|
86 |
+
* Added the 404 Monitor module
|
87 |
+
|
88 |
= Version 0.3 (June 11, 2009) =
|
89 |
* Added the Canonicalizer module
|
90 |
* Added alerts of possible plugin conflicts
|
seo-ultimate.php
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
/*
|
3 |
Plugin Name: SEO Ultimate
|
4 |
Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
|
5 |
-
Description: This all-in-one SEO plugin can rewrite title tags, edit meta data, add noindex
|
6 |
-
Version: 0.
|
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 0.
|
16 |
* @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
|
17 |
*/
|
18 |
|
@@ -38,10 +38,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
38 |
|
39 |
define("SU_PLUGIN_NAME", "SEO Ultimate");
|
40 |
define("SU_PLUGIN_URI", "http://www.seodesignsolutions.com/wordpress-seo/");
|
41 |
-
define("SU_VERSION", "0.
|
42 |
define("SU_AUTHOR", "SEO Design Solutions");
|
43 |
define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
|
44 |
-
define("SU_USER_AGENT", "SeoUltimate/0.
|
45 |
|
46 |
define('SU_MODULE_ENABLED', 10);
|
47 |
define('SU_MODULE_SILENCED', 5);
|
@@ -58,6 +58,7 @@ define('SU_RESULT_ERROR', -1);
|
|
58 |
require('class.seo-ultimate.php');
|
59 |
require('class.su-module.php');
|
60 |
require('class.su-widget.php');
|
|
|
61 |
require('functions.php');
|
62 |
|
63 |
|
2 |
/*
|
3 |
Plugin Name: SEO Ultimate
|
4 |
Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
|
5 |
+
Description: This all-in-one SEO plugin can rewrite title tags, edit meta data, add noindex, insert canonical tags, and log 404 errors (with many more features coming soon).
|
6 |
+
Version: 0.4
|
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 0.4
|
16 |
* @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
|
17 |
*/
|
18 |
|
38 |
|
39 |
define("SU_PLUGIN_NAME", "SEO Ultimate");
|
40 |
define("SU_PLUGIN_URI", "http://www.seodesignsolutions.com/wordpress-seo/");
|
41 |
+
define("SU_VERSION", "0.4");
|
42 |
define("SU_AUTHOR", "SEO Design Solutions");
|
43 |
define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
|
44 |
+
define("SU_USER_AGENT", "SeoUltimate/0.4");
|
45 |
|
46 |
define('SU_MODULE_ENABLED', 10);
|
47 |
define('SU_MODULE_SILENCED', 5);
|
58 |
require('class.seo-ultimate.php');
|
59 |
require('class.su-module.php');
|
60 |
require('class.su-widget.php');
|
61 |
+
require('class.su-hitset.php');
|
62 |
require('functions.php');
|
63 |
|
64 |
|
seo-ultimate.pot
CHANGED
@@ -8,7 +8,7 @@ msgid ""
|
|
8 |
msgstr ""
|
9 |
"Project-Id-Version: PACKAGE VERSION\n"
|
10 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
|
11 |
-
"POT-Creation-Date: 2009-06-
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
@@ -54,6 +54,35 @@ msgstr ""
|
|
54 |
msgid "SEO Settings"
|
55 |
msgstr ""
|
56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
#: class.su-module.php:408
|
58 |
#, php-format
|
59 |
msgid "%1$s | %2$s %3$s by %4$s"
|
@@ -77,33 +106,44 @@ msgstr ""
|
|
77 |
msgid "Reset"
|
78 |
msgstr ""
|
79 |
|
80 |
-
#:
|
81 |
-
msgid "
|
82 |
msgstr ""
|
83 |
|
84 |
-
#:
|
85 |
-
msgid "
|
86 |
msgstr ""
|
87 |
|
88 |
-
#:
|
89 |
-
msgid "
|
90 |
msgstr ""
|
91 |
|
92 |
-
#:
|
93 |
-
msgid "
|
94 |
msgstr ""
|
95 |
|
96 |
-
#:
|
97 |
-
msgid "
|
98 |
msgstr ""
|
99 |
|
100 |
-
#:
|
101 |
-
msgid "
|
102 |
msgstr ""
|
103 |
|
104 |
-
#:
|
105 |
-
|
106 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
107 |
msgstr ""
|
108 |
|
109 |
#: modules/canonical.php:13
|
@@ -183,7 +223,7 @@ msgid "You’ve entered %s characters. Most search engines use up to 160."
|
|
183 |
msgstr ""
|
184 |
|
185 |
#: modules/meta.php:60
|
186 |
-
msgid "Keywords:<br /><em>(separate with commas)"
|
187 |
msgstr ""
|
188 |
|
189 |
#: modules/meta.php:117
|
@@ -412,8 +452,8 @@ msgstr ""
|
|
412 |
#. Description of an extension
|
413 |
msgid ""
|
414 |
"This all-in-one SEO plugin can rewrite title tags, edit meta data, add "
|
415 |
-
"noindex
|
416 |
-
"soon)."
|
417 |
msgstr ""
|
418 |
|
419 |
#. Author of an extension
|
8 |
msgstr ""
|
9 |
"Project-Id-Version: PACKAGE VERSION\n"
|
10 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
|
11 |
+
"POT-Creation-Date: 2009-06-18 18:04+0000\n"
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
54 |
msgid "SEO Settings"
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: class.su-hitset.php:36
|
58 |
+
msgid "Date"
|
59 |
+
msgstr ""
|
60 |
+
|
61 |
+
#: class.su-hitset.php:37
|
62 |
+
msgid "IP Address"
|
63 |
+
msgstr ""
|
64 |
+
|
65 |
+
#: class.su-hitset.php:38
|
66 |
+
msgid "Browser"
|
67 |
+
msgstr ""
|
68 |
+
|
69 |
+
#: class.su-hitset.php:39
|
70 |
+
msgid "URL Requested"
|
71 |
+
msgstr ""
|
72 |
+
|
73 |
+
#: class.su-hitset.php:40
|
74 |
+
msgid "Redirected To"
|
75 |
+
msgstr ""
|
76 |
+
|
77 |
+
#: class.su-hitset.php:41
|
78 |
+
msgid "Status Code"
|
79 |
+
msgstr ""
|
80 |
+
|
81 |
+
#: class.su-hitset.php:73
|
82 |
+
#, php-format
|
83 |
+
msgid "%1$s<br />%2$s"
|
84 |
+
msgstr ""
|
85 |
+
|
86 |
#: class.su-module.php:408
|
87 |
#, php-format
|
88 |
msgid "%1$s | %2$s %3$s by %4$s"
|
106 |
msgid "Reset"
|
107 |
msgstr ""
|
108 |
|
109 |
+
#: modules/404s.php:19
|
110 |
+
msgid "404 Monitor"
|
111 |
msgstr ""
|
112 |
|
113 |
+
#: modules/404s.php:35
|
114 |
+
msgid "The log entry was successfully deleted."
|
115 |
msgstr ""
|
116 |
|
117 |
+
#: modules/404s.php:37
|
118 |
+
msgid "This log entry has already been deleted."
|
119 |
msgstr ""
|
120 |
|
121 |
+
#: modules/404s.php:44
|
122 |
+
msgid "The log was successfully cleared."
|
123 |
msgstr ""
|
124 |
|
125 |
+
#: modules/404s.php:50
|
126 |
+
msgid "No 404 errors in the log."
|
127 |
msgstr ""
|
128 |
|
129 |
+
#: modules/404s.php:59
|
130 |
+
msgid "Are you sure you want to delete all 404 log entries?"
|
131 |
msgstr ""
|
132 |
|
133 |
+
#: modules/404s.php:61
|
134 |
+
msgid "Clear Log"
|
135 |
+
msgstr ""
|
136 |
+
|
137 |
+
#: modules/404s.php:73
|
138 |
+
msgid "Open"
|
139 |
+
msgstr ""
|
140 |
+
|
141 |
+
#: modules/404s.php:74
|
142 |
+
msgid "Google Cache"
|
143 |
+
msgstr ""
|
144 |
+
|
145 |
+
#: modules/404s.php:75
|
146 |
+
msgid "Delete Log Entry"
|
147 |
msgstr ""
|
148 |
|
149 |
#: modules/canonical.php:13
|
223 |
msgstr ""
|
224 |
|
225 |
#: modules/meta.php:60
|
226 |
+
msgid "Keywords:<br /><em>(separate with commas)</em>"
|
227 |
msgstr ""
|
228 |
|
229 |
#: modules/meta.php:117
|
452 |
#. Description of an extension
|
453 |
msgid ""
|
454 |
"This all-in-one SEO plugin can rewrite title tags, edit meta data, add "
|
455 |
+
"noindex, insert canonical tags, and log 404 errors (with many more features "
|
456 |
+
"coming soon)."
|
457 |
msgstr ""
|
458 |
|
459 |
#. Author of an extension
|